Три символа (r--
) обозначают права доступа группы, в данном случае пользователей из группы adm
— по-видимому, системных администраторов, которые могут читать файл, но не писать и не выполнять его. Следующие три символа (также r--
) определяют права доступа для всех остальных пользователей системы. Таким образом, на данной машине только root
может изменить информацию по входу в систему для пользователя, но прочесть файл и узнать эту информацию может любой. Разумным был бы вариант, при котором группа adm
также имела бы право на запись в файл /etc/passwd
.
Файл /etc/group
хранит в зашифрованном виде имена групп и их group-id и определяет, какие пользователи входят в какие группы. В файле /etc/passwd
определяется только ваша группа при входе в систему; команда newgrp
изменяет ее права доступа на права другой группы.
Кто угодно может задать:
$ ed /etc/passwd
и редактировать файл паролей, но только root
может записать измененный файл. Поэтому вполне правомочен вопрос: как изменить свой пароль, если это требует редактирования файла паролей. Программа, изменяющая пароли, называется passwd
, вероятно, вы найдете ее в /bin
:
$ ls -l /bin/passwd
-rwsr-xr-x 1 root 8454 Jan 4 1983 /bin/passwd
$
(Обратите внимание на то, что /etc/passwd
— текстовый файл, содержащий информацию по входу в систему, тогда как /bin/passwd
находится в другом каталоге, содержит программу, готовую к выполнению, и позволяет изменить данные, связанные с паролем). Права доступа к этому файлу показывают, что выполнить команду может кто угодно, но изменить команду passwd
— только root
. Буква s
вместо x
в поле прав на выполнение для владельца файла означает, что при выполнении команды ей предоставляются права, соответствующие праву владельца файла, в данном случае root
. Поскольку файл /bin/passwd
имеет такой признак установки uid и при выполнении получает права root
, любой пользователь, выполняя команду passwd
, может редактировать файл /etc/passwd
.
Введение признака установки uid — простое элегантное решение целого ряда проблем безопасности.[7] Например, автор игровой программы может установить свой uid для программы, поэтому она сможет изменять файл с результатами игр, который защищен от доступа со стороны других пользователей. Но идея введения признака установки uid потенциально опасна. Программа /bin/passwd
должна быть правильной, иначе она может уничтожить системную информацию под прикрытием суперпользователя root. При наличии прав доступа -rwsrwxrwx
ее мог бы переписать любой пользователь, и, таким образом, заменить файл на неработоспособную программу. Это особенно опасно для программ, обладающих признаком установки uid, поскольку root
имеет доступ к каждому файлу, системы. (В некоторых системах UNIX происходит отключение признака установки uid всякий раз, когда файл изменяется, что уменьшает вероятность нарушения защиты).
Признак установки uid — мощное средство, но оно используется в основном для нескольких системных программ, таких, как passwd
. Рассмотрим более типичный файл:
$ ls -l /bin/who
-rwxrwxr-x 1 root 6348 Mar 29 1983 /bin/who
$
Этот файл доступен для выполнения всем, а писать в него могут только root
и пользователь той же группы. Слова "доступен для выполнения" означают, что при вводе
$ who
интерпретатор shell
просматривает ряд каталогов, в том числе /bin
, отыскивая файл с именем who
. Если такой файл найден и он имеет право доступа на выполнение, то shell
обращается к ядру для его запуска. Ядро проверяет права доступа, и, если они действительны, запускает программу. Отметим, что программа — это просто файл с правом доступа на выполнение. В следующей главе вы познакомитесь с программами, являющимися обычными текстовыми файлами, но они могут выполняться как команды, поскольку имеют право доступа на выполнение.
Права доступа к каталогам действуют несколько иначе, но основной принцип остается тем же:
$ ls -ld .
drwxrwxr-x 3 you 80 Sep 27 06:11 .
$
Команда ls
с флагом -d
сообщает скорее о самом каталоге, чем о его содержимом, и первая буква d
в выводе означает, что '.'
в действительности является каталогом. Поле r
показывает, что можно читать каталог, поэтому с помощью команды ls
(или od
для данного случая) можно выяснить, какие файлы хранятся в нем. Буква w
свидетельствует о том, что можно создавать и исключать файлы из каталога, поскольку это требует изменения, а значит, записи в файл каталога.
На самом деле нельзя просто писать в каталог, даже суперпользователю root
это запрещено:
$ who > .
Попытка затереть '.'
.: cannot create
Нельзя
$
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии