Дополнительные атрибуты файлов: sticky bit, suid, sgid
16.06.2018
Теги: chmod • Linux • SGID • StickyBit • SUID • Директория • ПраваДоступа • Файл
В Linux существует три основных вида прав — право на чтение (read
), запись (write
) и выполнение (execute
), а также три категории пользователей, к которым они могут применяться — владелец файла (user
), группа владельца (group
) и все остальные (others
). Но, кроме прав чтения, выполнения и записи, есть еще три дополнительных атрибута.
Sticky bit
Используется в основном для каталогов, чтобы защитить в них файлы. В такой каталог может писать любой пользователь. Но, из такой директории пользователь может удалить только те файлы, владельцем которых он является. Примером может служить директория /tmp
, в которой запись открыта для всех пользователей, но нежелательно удаление чужих файлов.
SUID (Set User ID)
Атрибут исполняемого файла, позволяющий запустить его с правами владельца. В Linux приложение запускается с правами пользователя, запустившего указанное приложение. Это обеспечивает дополнительную безопасность т.к. процесс с правами пользователя не сможет получить доступ к важным системным файлам, которые принадлежат пользователю root
.
Если на исполняемый файл установлен бит suid
, то при выполнении его «эффективный userID» автоматически меняется на идентификатор того пользователя, который является владельцем этого файла. То есть, независимо от того, кто запускает эту программу, она при выполнении имеет права владельца этого файла.
suid
является «потенциально опасным». Без установленного атрибута, файл не позволит обычному пользователю сделать то, что выходит за пределы прав пользователя (пример, программа passwd
позволяет пользователю изменить только собственный пароль). Но, даже незначительная ошибка в такой программе может привести к тому, что злоумышленник сможет заставить её выполнить ещё какие-нибудь действия, не предусмотренные автором программы.
SGID (Set Group ID)
Аналогичен suid
, но относиться к группе. Если применить этот флаг к каталогу — все файлы и подкаталоги в этом каталоге будут создаваться с группой исходного каталога. Это может быть полезно при использовании общих папок.
Например, в системе есть два пользователя user1
и user2
, они работают с каталогом /var/tmp/common
, к которому у обоих есть доступ (так как оба входят в группу common
). В стандартной ситуации, когда каждый из пользователей создает файл, этому файлу присваиваются права основной группы пользователя. В этом случае user1
не может прочитать файлы пользователя user2
и наоборот.
После установки бита sgid
на каталог /var/tmp/common
, он будет иметь следующие права — drwxr-sr-x. 2 root common 4096
. В этом случае все файлы и подкаталоги, созданные в /var/tmp/common
, будут иметь группу common
, что позволит обоим пользователям работать с файлами.
Обозначение атрибутов sticky, suid, sgid
Специальные права используются довольно редко, поэтому при выводе программы ls -l
символ, обозначающий указанные атрибуты, закрывает символ стандартных прав доступа. Пример:
rwsrwsrwt
где первая s
— это suid
, вторая s
— это sgid
, а последняя t
— это sticky bit
.
В приведенном примере не понятно, rwt
— это rw-
или rwx
? Определить это просто. Если t
маленькое, значит x
установлен. Если T
большое, значит x
не установлен. То же самое правило распространяется и на s
.
В числовом эквиваленте данные атрибуты определяются первым символом при четырехзначном обозначении (который часто опускается при назначении прав), например в правах 1777
— символ 1
обозначает sticky bit
. Остальные атрибуты имеют следующие числовое соответствие:
1
— установленsticky bit
2
— установленsgid
4
— установленsuid
$ chmod 4755 backup.sh # установить suid
$ chmod 2755 backup.sh # установить sgid
$ chmod 1775 /home/dev # установить sticky bit
Есть еще один способ, более удобный
$ chmod u+s file # установить suid $ chmod u-s file # удалить suid
$ chmod g+s file # установить sgid $ chmod g-s file # удалить sgid
$ chmod +t file # установить sticky bit $ chmod -t file # удалить sticky bit
Поиск: Linux • SGID • SUID • StickyBit • chmod • Директория • Права доступа • Файл