установлен ‘бит смены идентификатора пользователя’, то программа получит права доступа к файлам и каталогам, которые имеет владелец файла программы (таким образом, рассматриваемый атрибут лучше называть ‘битом смены идентификатора владельца’). Это позволяет решать некоторые задачи, которые иначе было бы трудно выполнить. Самый характерный пример – команда смены пароля passwd. Все пароли пользователей хранятся в файле /etc/passwd, владельцем которого является суперпользователь root. Поэтому программы, запущенные обычными пользователями, в том числе команда passwd, не могут производить запись в этот файл. А, значит, пользователь как бы не может менять свой собственный пароль. Но для файла /usr/bin/passwd установлен ‘бит смены идентификатора владельца’, каковым является пользователь root. Следовательно, программа смены пароля passwd запускается с правами root и получает право записи в файл /etc/passwd (уже средствами самой программы обеспечивается то, что пользователь может изменить только одну строку в этом файле).
Установить ‘бит смены идентификатора владельца’ может суперпользователь с помощью команды
[root]# chmod +s file_name
Аналогичным образом работает ‘бит смены идентификатора группы’.
Еще один возможный атрибут исполняемого файла – это ‘бит сохранения задачи’ или ‘sticky bit’ (дословно – ‘бит прилипчивости’). Этот бит указывает системе, что после завершения программы надо сохранить ее в оперативной памяти. Удобно включить этот бит для задач, которые часто вызываются на выполнение, так как в этом случае экономится время на загрузку программы при каждом новом запуске. Этот атрибут был необходим на старых моделях компьютеров. На современных быстродействующих системах он используется редко.
Если используется цифровой вариант задания атрибутов в команде chmod, то цифровое значение этих атрибутов должно предшествовать цифрам, задающим права пользователя:
[root]# chmod 4775 file_name
При этом веса этих битов для получения нужного суммарного результата задаются следующим образом:
• 4 – ‘бит смены идентификатора пользователя’,
• 2 – ‘бит смены идентификатора группы’,
• 1 – ‘бит сохранения задачи (sticky bit)’.
Если какие-то из этих трех битов установлены в 1, то несколько изменяется вывод команды ls -l в части отображения установленных атрибутов прав доступа. Если установлен в 1 ‘бит смены идентификатора пользователя’, то символ ‘x’ в группе, определяющей права владельца файла, заменяется символом ‘s’. Причем, если владелец имеет право на выполнение файла, то символ ‘x’ заменяется на маленькое ‘s’, а если владелец не имеет права на выполнение файла (например, файл вообще не исполняемый), то вместо ‘x’ ставится ‘S’. Аналогичные замены имеют место при задании ‘бита смены идентификатора группы’, но заменяется символ ‘x’ в группе атрибутов, задающих права группы. Если равен 1 ‘бит сохранения задачи (sticky bit)’, то заменяется символ ‘x’ в группе атрибутов, определяющей права для всех остальных пользователей, причем ‘x’ заменяется символом ‘t’, если все пользователи могут запускать файл на выполнение, и символом ‘T’, если они такого права не имеют.
Таким образом, хотя в выводе команды ls -l не предусмотрено отдельных позиций для отображения значений битов смены идентификаторов и бита сохранения задачи, соответствующая информация выводится. Вот небольшой пример того, как это будет выглядеть:
[root]# ls -l prim1
- rwSrwsrwT 1 kos root 12 Dec 18 23:17 prim1