И sticky bit

Помимо битов, устанавливающих разрешения на доступ к файлу, существуют специальные атрибуты, для которых предназначена еще одна триада битов:

r sticky bit (save text mode) — бит "липучка";

r SUID — бит подмены UID;

r SGID — бит подмены GID.


 

Sticky bit кодируется восьмеричной 1 (двоичная 001), SGID кодируется вось- меричной 2 (010), а SUID — 4 (100). В символьной нотации применяются символы t для sticky bit, s для SUID и SGID. Эти символы всегда выводятся в позиции, где обычно стоит флаг разрешения на исполнение (x). При этом:

r SUID отображается в виде буквы s в старшей триаде битов, отображаю- щей права владельца;

r SGID отображается в виде буквы s в средней триаде битов, отображаю- щей права группы;

r sticky bit отображается в виде буквы t в младшей триаде битов, отобра- жающей права для всех остальных.

Прописные символы S и T выводятся при отсутствии в этих триадах прав на исполнение, что обычно сигнализирует о ненормальном состоянии прав доступа.

 

Пример 6.19. Специальные биты прав доступа

 

$ ls -ld /tmp /bin/ping

 

-rws--x--x 1 root root 32908 Окт 16 2002 /bin/ping
drwxrwxrwt 94 root root 3488 Дек 14 20:31 /tmp

 

Приведенный пример 6.19 показывает, что на файл системной команды ping установлен бит SUID (символ s в старшей триаде вместо прав на исполнение), а на каталог /tmp установлен sticky bit (символ t в триаде прав остальных).

Атрибут sticky bit в GNU/Linux для файлов не используется, в ранних верси- ях UNIX он был предназначен для того, чтобы оставить в памяти образ про- граммы (save text mode).

Обычный процесс наследует права доступа к системным ресурсам от пользо- вателя, запустившего процесс, и его первичной группы (UID и GID), однако для исполняемых файлов, на которые установлены биты SUID и/или SGID, это не так.

При установленном на исполняемый файл бите SUID процесс выполняется не от имени пользователя, запустившего его, а от имени владельца исполняе- мого файла команды. Аналогично, при установленном бите SGID процесс исполняется не от имени первичной группы пользователя, запустившего про- цесс, а от имени группы пользователей файла.

У каждого процесса имеются четыре идентификатора:

r RUID — Real UID, который всегда равен UID пользователя, выполнивше- го команду;


 

r RGID — Real GID, который всегда равен GID пользователя, выполнивше- го команду;

r EUID — Effective UID, который равен либо RUID, либо если на исполняе- мый файл установлен бит SUID, то UID владельца файла;

r EGID — Effective GID, который равен либо RGID, либо если на исполняе- мый файл установлен бит SGID, то GID владельца файла.

В подавляющем большинстве случаев подмена владельца или группы осуще- ствляется на root или какого-либо привилегированного пользователя или группу. Например, при выполнении команды ping (см. пример 6.19), несмот- ря на то, что ее запустил обычный пользователь, она будет исполняться от имени root, т. к. он владеет ее исполняемым файлом. Это используется, на- пример, в таких программах, как passwd, которые требуют временного пре- доставления доступа обычному пользователю к тем ресурсам, к которым он не имеет доступа. Естественно, такие программы требуют особого подхода к разработке, т. к. представляют серьезную угрозу для безопасности системы. На файлы сценариев Shell биты SUID и SGID устанавливать можно, но они действовать не будут.

Установка sticky bit на каталог, в отношении которого пользователь имеет права на чтение и на запись, позволяет запретить удалять и изменять пользо- вателю чужие файлы в этом каталоге. Это используется при установке прав доступа к каталогу /tmp, открытому на запись всем, поскольку иначе пользо- ватель может удалить чужие временные файлы, находящиеся в этом катало- ге, что может повлечь нежелательные последствия.

При установке атрибута SGID на каталог вновь созданные файлы в этом ка- талоге будут наследовать группу владельцев по группе владельцев каталога (так называемый "стиль BSD"), вместо RGID процесса, создающего файл (пример 6.20).

 

Пример 6.20. Каталог с установленным битом SGID

 

$ cd dir1

$ ls -ld

drwxrwsr-x 2 tania users 48 Dec 14 20:43 .

$ id

uid=500(prof) gid=500(prof) группы=500(prof),100(users)

$ > file

$ ls -l total 0

-rw-r----- 1 prof users 0 Dec 14 22:00 file


 

В каталоге, на который установлен бит SGID, был создан файл (см. при- мер 6.20). При этом группа владельцев файла была назначена не по первич- ной группе пользователя, создавшего файл, а по группе пользователей ката- лога, в котором файл был создан.

Команда chmod позволяет установить особые биты доступа на файлы и ката- логи. Для этого команда chmod может быть выполнена со следующими аргу- ментами:

r u+s — для установки на файл бита SUID;

r g+s — для установки на файл или каталог бита SGID;

r o+t — для установки на каталог бита sticky bit.

Не обязательно устанавливать специальные биты в символьной нотации. Приведенная в примере 6.21 команда chmod 2775 d1 устанавливает бит SGID на каталог.

 

Пример 6.21. Установка SGID на каталог в восьмеричной нотации

 

$ mkdir d1  
$ ls -ld d1
drwxr-x--- 2 prof prof 48 Dec 14 22:31 d1
$ chmod 2770 d1    
$ ls -ld d1      
drwxrws--- 2 prof prof 48 Dec 14 22:31 d1

 

В табл. 6.3 указаны результаты установки различных специальных прав дос- тупа на файлы и каталоги.

 

Таблица 6.3. Специальные биты прав доступа

Права Эффект для каталогов Эффект для файлов
-rws--x--x Команда исполняется от имени владельца файла
-rwx--s--x Команда исполняется от имени группы пользователей файла
drwxrws--- На файлы, создаваемые в каталоге, будет установлена такая же группа, как у каталога
drwxrwxrwt В каталоге можно удалять или переименовывать только соб- ственные файлы








Дата добавления: 2015-06-12; просмотров: 1335;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.012 сек.