- •Введение
- •Лабораторная работа 1.
- •Регистрация пользователя в системе
- •Выход из системы
- •Выполнение простых команд
- •Группирование команд
- •Задание для самостоятельной работы
- •Контрольные вопросы
- •Задание для самостоятельной работы
- •Контрольные вопросы
- •Задание для самостоятельной работы
- •Контрольные вопросы
- •Задание для самостоятельной работы
- •Контрольные вопросы
- •Литература
- •5.3. Задание для самостоятельной работы
- •5.4. Контрольные вопросы
- •Задание для самостоятельной работы
- •Контрольные вопросы
- •Задание для самостоятельной работы
- •Формат файла /etc/passwd
- •Формат файла /etc/shadow
- •Формат файла /etc/group
- •Создание нового пользователя
- •Переключение между пользователями
- •Файлы инициализации пользователей
- •Файлы, регламентирующие работу пользователей
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •9.3. Права доступа к каталогам
- •9.4. Смена прав доступа на файлы
- •9.5. Маска на вновь создаваемые файлы
- •9.6. Дополнительные атрибуты файла
- •9.7. Списки управления доступом
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •10.3. Метасимволы или шаблоны
- •10.4. История команд
- •10.5. Псевдонимы
- •10.6. Перенаправление ввода и вывода
- •10.7. Конвейеры
- •10.8. Приглашение ко вводу
- •10.9. Сценарии оболочки
- •10.10. Задания для самостоятельной работы
- •10.11. Контрольные вопросы
- •11.3. Системный вызов open()
- •11.4. Системный вызов read()
- •11.5. Системный вызов write()
- •11.6. Системный вызов lseek()
- •11.7. Системный вызов close()
- •11.8. Задания для самостоятельной работы
- •11.9. Контрольные вопросы
- •12.3. Системный вызов fork
- •12.4. Системный вызов exit
- •12.5. Системный вызов wait
- •12.6. Системный вызов exec
- •12.7. Системные вызовы наследования пользовательских дескрипторов файла
- •12.8. Задания для самостоятельной работы
- •12.9. Контрольные вопросы
- •13.3. Системный вызов signal
- •13.4. Системный вызов pause
- •13.5. Системный вызов alarm
- •13.6. Управление непредусмотренными событиями
- •13.7. Неименованные каналы
- •13.8. Именованные каналы
- •13.9. Задания для самостоятельной работы
- •13.10. Контрольные вопросы
- •Литература
- •Заключение
- •Учебное издание
- •Системное программирование Лабораторный практикум
Контрольные вопросы
Как задаются права доступа на файл?
Для чего используются дополнительные атрибуты файлов?
Для чего и как используются расширенные права доступа?
Как задаются права доступа на директории?
В каком порядке проводится проверка прав доступа?
ЛИТЕРАТУРА
Глас Г., Эйблс К. Unix для программистов и пользователей. / Г. Глас, К. Эйблс – СПб.: БХВ-Петербург, 2004. – 848 с.: ил.
ЛАБОРАТОРНАЯ РАБОТА 10.
ПРОГРАММИРОВАНИЕ В SHELL
10.1. Цель работы
Целью работы является изучение основ программирования на языке Shell.
10.2. Оболочки Linux
Оболочкой (shell) называют программу, обеспечивающую интерфейс пользователя с ядром Linux. После входа пользователя в систему для него запускается одна из оболочек (в зависимости от записи в файле /etc/passwd). Все взаимодействие пользователя с ядром до конца сеанса работы осуществляется через данную среду. Введенная пользователем команда обрабатывается оболочкой и передается ядру системы. Таким образом, оболочка выполняет функции интерпретатора командного языка или командного интерпретатора. Кроме собственного набора встроенных команд, оболочка позволяет также использовать утилиты Linux и приложения доступные в системе.
При вводе пользователем команды в строке- приглашении Linux выполняется ряд действий:
командный интерпретатор проверяет, является ли введенная строка одной из его встроенных команд (например, cd или pwd);
если команда неизвестна, выясняется, является ли она вызовом программы-приложения. Утилиты Linux также считаются приложениями (например, ls или rm);
интерпретатором выполняется поиск соответствующего приложения во всех каталогах пути поиска;
если введенная команда не является встроенной или исполняемым файлом в пути поиска, появляется сообщение об ошибке;
команда распознанная оболочкой, преобразуется в набор системных запросов адресуемых к ядру Linux.
Командный интерпретатор оболочки содержит развитый командный язык, поддерживающий большинство конструкций языков программирования высокого уровня, в частности циклы, функции, переменные и массивы. Любая команда, которая может быть задана в командной строке, может быть включена в исполняемую программу. Это означает, что повторяющиеся действия могут быть оформлены в виде программного файла и выполняться при его вызове.
Существует несколько разновидностей оболочек. Две главные – это «Bourne shell» или просто shell и «C shell». Bourne shell использует командный синтаксис, похожий на первоначально придуманный для Unix и имеет имя /bin/sh. C shell использует иной синтаксис, чем-то напоминающий синтаксис языка программирования Си и имеет имя /bin/csh. В Linux есть несколько вариаций этих оболочек. Две наиболее часто используемые, это новый Bourne shell или bash (/bin/bash) и tcsh (/bin/tcsh).
Разработчиком оболочки Bourne shell – командного интерпретатора Unix, доступного на любой Unix-системе – стал Steven Bourne. Bourne Again Shell (bash) представляет собой модифицированный вариант оболочки Bourne. Bash поддерживает все основные свойства интерпретатора shell с широким набором функций и объединяет в себе лучшие черты командных языков C – shell и Korn – shell. Bash имеет дружественный пользовательский интерфейс, а также гибкий и мощный интерфейс программирования.
Командный язык C – shell был разработан Биллом Джой для среды Unix. Эквивалентом в среде Linux является его модифицированная версия tcsh.
Создателем командного языка Korn – shell стал Дэвид Корн. Эквивалент данной оболочки в среде Linux получил название Public Domain Korn shell (pdksh).