Linux: права на файлы и процессы

Андрей Волков

Андрей Волков

Системное, сетевое администрирование +DBA. И немного программист!))  Профиль автора.

Права и привелегии в  LinuxКаждый файл и процесс в Linux принадлежит определенному пользователю. Не имея соответствующих привилегий, другие пользователи не могут получить доступ к чужим объектам. Такая схема позволяет защитить объекты каждого пользователя и предотвра­тить несанкционированный доступ, случайный или злонамеренный.

Чаще всего системными файлами и процессами владеет фиктивный пользователь root, известный как суперпользователь. Все его ресурсы надежно защищены от несанк­ционированного вмешательства. Чтобы иметь возможность выполнять административ­ные задачи, необходимо тем или иным способом зарегистрироваться в системе как су­перпользователь.

Суперпользователь обладает “магической” властью. В частности, он имеет право вы­ступать в качестве владельца любого файла или процесса и выполнять специальные опе­рации, недоступные рядовым пользователям. Привилегированный пользователь — очень ответственная должность, а если ее занимает беспечный человек или злоумышленник, то она становится еще и очень опасной.

Каждый файл в Linux принадлежит владельцу и группе. Владелец файла имеет осо­бую привилегию, недоступную другим пользователям системы: ему разрешено менять права доступа к файлу. В частности, владелец может задать права доступа так, что никто, кроме него, не сможет обращаться к файлу.

Владельцем файла всегда является один человек, тогда как в группу владельцев могут входить несколько пользователей. По традиции информация о группах хранилась в фай­ле /etc/group, но теперь ее чаще хранят на сетевом сервере NIS или LDAP.

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

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

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

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

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

Владелец может посылать процессу сигналы, а также по­нижать его приоритет. С процессорами связаны, по меньшей мере, семь идентификато­ров: реальный, эффективный и сохраненный идентификатор пользователя, реальный, эффективный и сохраненный идентификатор группы, и, в системе Linux — “идентифи­катор пользователя файловой системы”, который используется только для определения прав доступа к файлам. Вообще говоря, реальные номера применяются для учета ис­пользования системных ресурсов, а эффективные — для указания прав доступа. В боль­шинстве случаев реальные и эффективные идентификаторы совпадают.

Сохраненные идентификаторы не оказывают никакого непосредственного влияния. Они позволяют программам “приберегать” неактивные идентификаторы для последую­щего использования, тем самым способствуя расчетливому применению расширенных полномочий. Вообще говоря, идентификатор пользователя файловой системы — это особенность реализации файловой системы NFS, и обычно он совпадает с эффектив­ным идентификатором пользователя.

Процесс не может явно изменить ни один из своих идентификаторов, но есть особая ситуация, когда новые эффективные идентификаторы устанавливаются косвенно. Дело в том, что существуют два специальных бита, устанавливаемых в маске прав доступа к файлу: “setuid” (Set User ID — бит смены идентификатора пользователя) и “setgid” (Set Group ID — бит смены идентификатора группы). Если запускается исполняемый файл, у которого установлен один из этих битов, то эффективными идентификаторами соз­даваемого процесса становятся идентификаторы владельца файла, а не идентификато­ры пользователя, запустившего программу. Смена полномочий действительна только на время работы программы.

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

  

Вас заинтересует / Intresting for you:

Основа операционной системы Li...
Основа операционной системы Li... 3052 просмотров Андрей Волков Wed, 09 Jan 2019, 05:36:45
Процессы Linux
Процессы Linux 4579 просмотров Doctor Wed, 23 Jan 2019, 16:47:24
Дата и время для процесса в Li...
Дата и время для процесса в Li... 1329 просмотров Fortan Thu, 21 Feb 2019, 16:33:05
Сигналы в Linux: назначение и ...
Сигналы в Linux: назначение и ... 2065 просмотров Fortan Fri, 05 Nov 2021, 07:58:01
Войдите чтобы комментировать