Вход/Регистрация
UNIX — универсальная среда программирования
вернуться

Керниган Брайан Уилсон

Шрифт:

Команда

ls
с флагом
– l
сообщает среди прочего права доступа:

$ ls -l /etc/passwd

– rw-r--r-- 1 root 5115 Aug 30 10:40 /etc/passwd

$ ls -lq /etc/passwd

– rw--r--r-- 1 adm 5115 Aug 30 10:40 /etc/passwd

Информацию, содержащуюся в двух строках вывода команды

ls
, можно интерпретировать так: владельцем файла
/etc/passwd
является пользователь с login-id, равным
root
; его группа называется
adm
; размер файла 5115 байт; последний раз изменен был 30 августа в 10:40; файл имеет единственную связь, т.е. одно имя в файловой системе (вопрос о связях мы обсудим в следующем разделе). Некоторые варианты команды
ls
выдают имена владельца и группы сразу при однократном вызове.

Строка

– rw-r--r--
показывает, как представляет права доступа к файлу команда
ls
. Первый дефис (
–
) означает, что это обычный файл. В случае каталога на его месте стояла бы буква
d
. Следующие три символа обозначают права владельца файла на чтение, запись и выполнение (исходя из uid). Строка
rw-
свидетельствует о том, что владелец (
root
) может читать, писать, но не выполнять файл. В случае выполняемого файла дефис был бы заменен символом
x
.

Три символа (

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 всякий раз, когда файл изменяется, что уменьшает вероятность нарушения защиты).

7

Признак установки uid введен Д. Ритчи

Признак установки uid — мощное средство, но оно используется в основном для нескольких системных программ, таких, как

passwd
. Рассмотрим более типичный файл:

$ ls -l /bin/who

– rwxrwxr-x 1 root 6348 Mar 29 1983 /bin/who

$

Этот файл доступен для выполнения всем, а писать в него могут только

root
и пользователь той же группы. Слова "доступен для выполнения" означают, что при вводе

$ who

интерпретатор

shell
просматривает ряд каталогов, в том числе
/bin
, отыскивая файл с именем
who
. Если такой файл найден и он имеет право доступа на выполнение, то
shell
обращается к ядру для его запуска. Ядро проверяет права доступа, и, если они действительны, запускает программу. Отметим, что программа — это просто файл с правом доступа на выполнение. В следующей главе вы познакомитесь с программами, являющимися обычными текстовыми файлами, но они могут выполняться как команды, поскольку имеют право доступа на выполнение.

  • Читать дальше
  • 1
  • ...
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: