Владение файлами и процессами
Категория: Сила привилегий | Автор: admin | 30-09-2009, 03:50 | Просмотров: 3620

Каждый файл в UNIX принадлежит владельцу и группе. Владелец файла имеет только одну привилегию, которая другим пользователям системы недоступна: ему разрешено изменять права доступа к файлу. В частности, владелец может установить права доступа так, что никто, кроме него, не сможет обращаться к данному файлу. Мы еще вернемся к теме прав доступа в главе 5. Владелец файла — это всегда один человек. В группу могут входить несколько пользователей. Сведения о группах хранятся в файле /etc/group.

Владелец файла определяет, какие операции могут выполнять над файлом члены группы. Такая схема допускает коллективное использование файлов членами одной группы. Узнать о том, кому принадлежит файл, можно с помощью команды ls -l имя_файла. Например:

% Is -1 /staff/scott/todo

-rw------ 1 scott staff 1258 Jun 4 18:15 /staff/scott/todo

 

Несложно заметить, что владельцем файла является пользователь "scott", а группа, которой он принадлежит, называется "staff'.

UNIX отслеживает не символьные имена владельцев и групп, а их идентификаторы. Идентификаторы пользователей (сокращенно UID — User ID) и соответствующие им имена хранятся в файле /etc/passwd, а идентифи­каторы и имена групп (GID — Group ID) — в файле /etc/group. Символьные эквиваленты присваиваются идентификаторам исключительно для удобства пользователей системы. Чтобы команда вроде ls могла вывести информацию о принадлежности файла в удобочитаемом виде, она должна просмотреть базу данных идентификаторов и найти в ней нужные имена.

Что касается процессов, то с ними связано не два, а четыре идентификатора: реальный и эффективный пользовательский (UID), а также реальный и эффективный групповой (GID). Реальные номера применяются для учета использования системных ресурсов, а эффективные — для определения прав доступа. Как правило, реальные и эффективные идентификаторы совпадают. Владелец процесса может посылать ему сигналы (см. параграф 4.3), а также понижать приоритет процесса.

В принципе, процесс не может явно изменить ни одного из своих четырех идентификаторов, но есть одна особая ситуация, когда происходит косвенная установка новых эффективных идентификаторов. Дело в том, что существуют два специальных бита, устанавливаемых в маске прав доступа к файлу: SUID (Set User ID — бит смены идентификатора пользователя) и SGID (Set Group ID — бит смены идентификатора группы). Когда пользователь или процесс запускает исполняемый файл, у которого установлен один из этих битов, файлу временно назначаются права его владельца или группы (в зависимости от того, какой именно бит задан). Таким образом, пользователь может даже запускать файлы от имени суперпользователя.

Бит SUID позволяет обычным пользователям выполнять программы, осуществляющие административные действия или обращающиеся к системе на низком уровне. Это не вызывает проблем безопасности, так как авторы программ жестко регламентируют их работу. Например, команда passwd, с помощью которой пользователь меняет свой пароль, должна обращаться к файлу /etc/passwd, принадлежащему суперпользователю. Вследствие этого у нее установлен бит SUID. Она модифицирует файл строго определенным образом и завершает работу. Конечно, даже столь простое действие может стать причиной злоупотреблений, поэтому, прежде чем выполнять запраши­ваемые изменения, команда passwd проверяет, знает ли пользователь свой текущий пароль.



 (голосов: 1)
Версия для печати | Комментариев: 0
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии в данной новости.


 
Логин
Пароль
 

 
Locations of visitors to this page