
- •«Операционные системы.Командный интерфейс» конспект лекций Тема 1. Введение. Содержание курса
- •Тема 2. Классификация режимов работы ос
- •Диалоговый пакетный
- •Тема 3. Виды нтерфейсов пользователя ос unix
- •Тема 4. Обобщенные принцпы построения современных ос
- •Тема 5. Состав ос unix
- •Тема 6. Среда для работы пользователя
- •Тема 7. Регистрация пользователя в системе
- •Тема 8. Группа коммуникационных команд
- •Тема 9. Группа вспомогательных команд
- •Тема 10. Перенаправление ввода-вывода
- •Файловая система unix
- •Тема 11. Файлы unix
- •Тема 12. Генерация имен файлов
- •Тема 13. Структура системы каталогов unix
- •Тема 14. Управление каталогами в unix
- •Тема 15. Команды поиска файлов в системе каталогов
- •Тема 16. Управление файлами
- •Тема 17. Управление правами доступа к файлам и каталогам
- •Здесь файл fil1.C, владельцем которого является пользова-
- •Тема 18. Конвееры и фильтры
- •Тема 19. Создание и редактирование текстовых файлов
- •Команды удаления текста
- •Введение в shell- программирование
- •Тема 20. Операторы – команды
- •В unix при написании операторов важное значение отводится
- •Тема 21. Управление локальными переменными
- •Тема 22. Подстановка значений переменных
- •Тема 23. Экспортирование локальных переменных в среду shell
- •Тема 24. Проверка условий
- •2. Сравнение числовых значений:
- •3. Сравнение строк:
- •If список_команд1
- •Тема 25. Построение циклов
- •Тема 26. Управление процессами в unix
- •Тема 27. Создание фоновых процессов
- •Тема 28. Управление приоритетами
- •Тема 29. Завершение процессов
- •Тема 30. Перехватывание сигналов
- •Тема 31. Сетевые средства unix
Тема 17. Управление правами доступа к файлам и каталогам
Каждый файл принадлежит конкретному пользователю. Владелец файла имеет абсолютный контроль над теми, кто из пользователей системы может иметь доступ к файлу. Владельцу предоставлены средства командного языка, позволяющими разрешать или запрещать доступ к своим файлам и каталогам.
Права процессов пользователей при доступе к файлу кодируются в атрибутах защиты файла. Атрибуты сопровождают каждый файл, хранятся в описателях файлов, на которые в каталоге имеются ссылки, и доступны для анализа и изменения посредством
специальных команд ОС UNIX. Атрибуты защиты файла определяют права доступа трем видам процессов: процессам пользов ателя - владельца файла (u - user), процессам группы владельца файла (g - group) и процессам остальных пользователей (o - other), не попавших ни в одну из двух предыдущих категорий. Код атрибутов прав доступа пользователей трех перечисленных категорий для каждого файла отображается в полном листинге каталога символьным кодом в виде комбинации следующих символов:
r - разрешение на чтение или на выполнение файла, для каталога - просмотр содержимого каталога (список всех файлов);
w - разрешение модификации или удаления файла, для каталога - включение или удаление файлов;
x - разрешение выполнения файла (совместно с - r), для каталога - поиск по каталогу конкретных отдельных файлов или сделать каталог текущим.
Например, полный листинг каталога /udd/user1/lev может
иметь следующий вид:
-rwxr-xr-x 1 lev user1 171 Mar 4 14:20 fil1.c
drwxr-xr-x 2 lev user1 32 Mar 4 14:51 hh
Здесь файл fil1.C, владельцем которого является пользова-
тель со входным именем lev, является обычным, содержит исходный
текст программы на языке Си длиной 171 байт, доступен владельцу
для чтения, записи и выполнения, членам группы и прочим поль-
зователям - только для чтения и выполнения.
Директория hh защищена для включения новых и удаления существующих файлов.
Для изменения значений кодов защиты только указанных в команде файлов служит команда:
chmod <коды защиты> <список_файлов>
Коды защиты (r, w, x) могут быть заданы только владельцем файла в символьном или числовом виде. Атрибуты задаются для владельца (u), его группы (g) и остальных пользователей (o) или для всех категорий пользователей одновременно (a).
Над символьными атрибутами защиты можно выполнять три следующие операции отдельно для владельца, для группы-владельца и для всех остальных пользователей:
= - присвоить значения кодов доступа (замена существующих);
+ - добавить значения кодов доступа;
- - отобрать права доступа.
Необходимо отметить, что новый файл обычно создается по умолчанию как невыполняемый, со стандартным набором
прав доступа:
rw-rw-rw- - для файла;
rwxrwxrwx - для каталога.
Например, необходимо сделать некоторый файл shproc1 выполняемым, если он был создан как обычный. Для этого можно использовать следующую команду:
$ chmod u+x shproc1
$ shproc1
< Выполнение программы из файла shproc1 >
$
Эти действия необходимы, в частности, при формировании и выполнении shell-процедуры.
Еще пример:
$ ls -l f1
””””””””””””””””””””””””””
-rw-rw-r-- ....................... f1
””””””””””””””””””””””””””
$ chmod ug+x,o-r f1
$ ls -l f1
””””””””””””””””””””””””””
-rwxrwx--- ........................ f1
””””””””””””””””””””””””””
$
Еще примеры:
$ chmod u+w,go+x f2
$ chmod u=rw,g=r f3
$ chmod a+x f1 - в данном случае файл f1 становится доступным для исполнения всем пользователям;
$ chmod a=rwx f2 - предоставляются все права всем категориям пользователей.
Числовые значения кодов защиты кодируются трехразрядным восьмеричным числом, где существование соответствующего кода соответствует наличию единицы в двоичном эквиваленте восьмеричной цифры этого числа, отсутствие атрибута - нулю.
Например:
Символьное представление: rwx r-x r--
Двоичное представление: 111 101 100
Восьмеричное представление: 7 5 4
Поэтому следующая команда:
$ chmod 0754 f3
- эквивалентна, в частности, команде:
$ chmod u=rwx,g=rx,o=r f3
В результате выполнения команд в любой из приведенных форм коды доступа файла f3 приобретут следующий вид:
$ ls -l f3
”””””””””””””””””””””””””””””
-rwxr-xr-- ....................... f3
”””””””””””””””””””””””””””””
$
Таким образом, файл f3 является выполняемым для владельца
и группы, чтение его разрешено всем пользователям, модифицировать файл может только владелец. Подчеркнем, что для выполнения файл должен иметь права доступа r и x .
$ chmod 000 f4 -отмена всех прав доступа.
Пример:
$chmod -w fout - разрешили удалить конкретный файл
$rm fout
“”””””””””””””
fout: mode?
Y
“”””””””””””””
- файл удаляется, т.к. не защищен каталог; чтобы защитить:
$chmod -w - разрешили модификацию текущего каталога
$rm fout
<удаления нет>
Примеры управления правами доступа к каталогам:
$chmod a-rwx, u=rw dir1
$cd dir1
“”””””””
<no>
“””””””” т.к.нет права х для каталога
$ls dir1 - просмотр каталога
“”””
f1
f2
“”””
$ls -l dir1/* - поиск конкретных всех файлов“*”
“””””””””””””””””””
<файлы не найдены> т.к. не разрешен поиск по каталогу
total 0
“””””””””””””””””””
$cat dir1/f1
<no> “”””””” - то же для конкретного файла
$
Еще пример:
$chmod u=wx dir2
$ls dir2 это каталог, а не обычный файл
“”””””
<no> т.к. нет разрешения на просмотр каталога
“”””””
$cat dir2/ff
“”””””””””””
<тект файла> т.к. есть право”х”- поиск по каталогу и назначение
его текущим
“”””””””””””
$cd dir2
$pwd
/home/lev/dir2
$
Некоторые замечания:
- все каталоги, входящие в полные маршрутные имена файлов должны иметь права на выполнение - (х);
- с целью защиты файла от удаления надо отобрать право (w) как у файла, так и у каталога, в котором находится файл.
Стандартные значения кодов прав доступа устанавливает администратор системы. Однако пользователь в rsh может изменить временно (до конца сеанса работы) значение кода для всех своих новых файлов с помощью команды:
$umask [-r] <режим-доступа>
Собственно маска - это двоичный код, с этим кодом и двоичным кодом установленным ране выполняются некоторые логические операции - в результате операции вычисляются новые коды защиты. В ksh - возможно символьное представление кодов защиты в umask, а собственно числовое значение маски просчитывается системой автоматически и используется для вычисления результирующих заданных в команде кодов доступа;
ключ -S -выводит на экран текущие символьные значения кодов
без ключа - команда выводит числовое значение маски..
Примечание: далее в приводимых примерах сообщения системы,выводимые на экран выделять не будем.
Пример изменения прав доступа для некоторого файла с использованием команды umask:
-rw- rw- rw-.............................................f5
$umask g=r, o= f5 [*]
$ls -l f5 [*]
-rw- r-- ---.................................................f5
$
Пример:
$touch testfil1
$ls -l testfil1
-rw- rw- rw- ...........................0 <11:08> testfil1
$umask a-rwx, u=rw, g+r - эти права будут иметь все новые файлы
$umask -S
u=rw, g=r, o=
$umask
137 - числовое значение текущей маски
$touch testfil2
$ls -l testfil2
-rw- r-- --- 0 <11:12> testfil2 – новый файл
Ниже приведенный пример иллюстрирует - как работает команда mesg. Вспомним, что терминал пользователя это тоже файл, т.е. обрабатывается как файл типа "с" – устройство с байтовым (посимвольным) обменом информацией.
$who am i
lev tty3 - tty3 – имя терминала пользовател
$mesg y
$ls -l /dev/tty3
crw- -w- -w- ...........lev user <> /dev/tty3 - это файл терминала
$mesg n
$ls -l /dev/tty3
crw- --- ---.................lev user <> /dev/tty3...........................................
Команда mesg обращается к утилите chmod для файла устройства с целью добавления или отнимания прав на запись (w) для членов группы и остальных пользователей. Именно эти достигается блокирование и разблокировагие возможности ввывода на данный экран сообщений других пользователей.
Имеются и другие возможности управления правами доступа. Рассмотрим еще две команды. Рассматриваемые ниже функции может выполнять только владелец файла или администратор.
chown – владелец передает права владения данным файлом другому пользователю или группе.
$chown нов_владелец имя_файла
Пример:
$cp f1 /home/ira/f1
$ls -l /home/ira/f1
-rw- r-- --- 1.......lev.....user...<> f1 - владелец копии- lev
$chown ira /home/ira/f1 - смена владельца
$ls -l
-rw- r-- --- 1.......ira......user...<> f1 - владельцем копии файла стала ira, но читать (r) копию может и lev как член общей группы.
Также можно сменить и группу.
chgrp - передача прав другой группе (сменить группу).
$chgrp нов_группа имя_файла
Пример:
$ls -l f2
-rw- r-- --- ...................lev user <> f2
$chgrp class f2
$ls -l f2
-rw- r-- --- ...................lev class <> f2 - сменили группу, но владелец как член новой группы также имеет права доступа к файлу
$chown serg f2
-rw- r-- --- ..................serg class <> f2 - сменили владельца в новой группе. Старая группа переходит в разряд (о). Предыдущий владелец переходит в разряд (g).
В UNIX имеются более сложные и гибкие средства управления правами доступа, в частности, изменение идентитфикаторов пользователей и групп, списки управления доступом и пр. В основном это средства администратора. Развитость средств защиты файловой системы является ещё одной из причин того, что UNIX является базовой операционной системой компьютерных сетей.