На некоторых критичных системах, где приходится быть параноиком, мы
ограничиваем список пользователей, кому разрешено выполнять
большинство setuid и setgid команд (на случай появления zero day
exploit), то есть мы разрешаем запуск данных бинарников только для
администраторов. Раньше, если мы хотели создать такие ограничения, мы
выполняли команду chmod 4750, и затем меняли группу с помощью chgrp.
Это было довольно неудобно, и мы не могли иметь двух различных видов
ограничений для одного файла.
Заметьте: если мы изменяем владельца файла, группу или разрешения для
файлов в пакете, мы должны использовать команду installf, чтобы
обновить базу данных установленных в системе программ.
Затем появились UFS ACLs. Это позволило добавлять множество ACLs к
тому же самому файлу, и, хотя теперь мы и могли иметь различные виды
разрешений для файлов, нам все еще приходилось выполнять chmod 4750
для всех файлов, к которым надо было закрыть доступ.
Теперь, когда мы имеем ZFS, появилась удобная возможность использовать
ZFS ACLs*, чтобы отменить разрешения: так, если пользователю Дэнни
нельзя выполнять /usr/bin/su, мы можем лишь добавить ACL для удаления
разрешения на запуск для этого пользователя.
# chmod A+user:danny:execute:deny /usr/bin/su
Если теперь Дэнни захочет запустить su, он увидит что-то вроде:
$ ls -l /usr/bin/su
-r-sr-xr-x+ 1 root sys 34624 Feb 26 2007 /usr/bin/su
$ su -
bash: su: Permission denied
Как и с UFS ACLs, способ определить наличие у файла ACL - знак плюс в
конце разрешений, когда мы выполняем команду ls-l. Если мы хотим
увидеть ACL полностью, используем ls с опцией -v: