Команда auths позволяет просматривать перечень выделенных вам на уровне ядра полномочий и перезапускать Shell с указанными полномочиями на использование тех или иных команд. Перейдем к объяснению порядка использования команды auths с различными аргументами (примеры даны для пользователя с полномочиями типа execsuid и chown):
* Команда auths без аргументов выдает список полномочий уровня ядра. Например:
* Команда auths с опцией -a позволяет ограничивать набор выделяемых полномочий. Так, например, пользователь, уже имеющий полномочия execsuid и chown, может сократить их до полномочия chown:
Для восстановления полномочий вам следует выйти из Shell'а, запущенного с командой auths -r.
* Команда auths с опцией -c позволяет вместо запуска интерактивной подоболочки вводить команду. В нижеприведенном примере после удаления полномочий chown запускается команда auths.
Благодаря наличию променов можно управлять степенью разрушений, порождаемых в ваших данных SUID-программой. Напомним, что SUID-программа начинает свое выполнение под исполнительным кодом пользователя, равным коду владельца SUID-программы, и действительным кодом пользователя, вызвавшего программу. В традиционных UNIX-подобных системах SUID-программа имеет полный доступ ко всем файлам, процессам и IPC-об'ектам (т.е. ко всему, что имеет общее название "ресурсы"), к которым владелец программы ИЛИ инициатор ее запуска сам имеет доступ, поскольку программа с помощью команды setuid может переходить с кода владельца на код запускающего. Снаружи промена эта возможность ограничивается ресурсами, к которым инициатор запуска и владелец имеют доступ одновременно, что видно из настоящего раздела.
В UNIX-подобных системах SUID-программы используются для того, чтобы защитить файлы от доступа к ним извне кого бы то ни было, за исключением хорошо известного набора программ. Примером может служить набор команд управления устройством построчной печати, имеющий дело с совокупностью файлов конфигурации, файлов состояния и командных файлов на языке Shell, с помощью которых ведется слежение за распределением заданий между печатающими устройствами. Несколькими командами пользователи и администраторы запускают и отменяют эти задания, запрашивают и изменяют статус печатающих устройств, добавляют и удаляют устройства из системы или из активного контура. Все файлы печати принадлежат псевдопользователю lp, код которого выступает в качестве кода владельца всех файлов, используемых в подсистеме управления построчной печатью, включая сами специальные файлы печатающих устройств.
В то время, когда файл распечатывается командой lp, программа может обращаться не только к файлам в базе данных, но также и к файлам, направляемым на принтер, ибо она может переключиться на ваш пользовательский код с тем, чтобы получить доступ к вашим файлам. Программа-нарушитель с легкостью отыщет в структуре ваших каталогов защищенные файлы и скопирует их в специальное место, доступное только для lp. Другими словами, ваше доверие lp как программе базируется на надежде, что она не злоупотребит выделенной ей властью.
Если при запуске SUID-программы привилегия nopromain отсутствует, промен создается и текущий каталог становится корнем промена. Файлы в поддереве, начинающемся с этого корня, находятся внутри промена, все прочие файлы являются по отношению к промену внешними. Промены защищают данные пользователя от программы-нарушителя, ограничивая способы доступа последней к содержимому промена. Выполняясь под кодом идентификации пользователя, инициировавшего ее запуск, SUID-программа может обращаться только к тем файлам, к которым имеют доступ как сам инициатор, так и владелец (т.е. к общим файлам). Внутри же промена все обращения программ подчиняются обычным правилам. Примеры использования променов см. в UNIX User's Reference.