Как мне гарантировать, что только пользователь "Алиса" может запускать программу setuid, принадлежащую secure?
Есть два возможных подхода. Один использует только традиционные разрешения Unix, а другой использует новомодные списки ACL.
Традиционный Unix
Создать новую группу; возможно ALICE
или что-то явно отличающееся от alice
учетной записи пользователя. Убедитесь, что alice
является членом ALICE
в group(5)
. (vigr(8)
- отличный способ отредактировать файл group(5)
.) Установите права владения вашими getpwd
программами secure:ALICE
и удалить привилегии мирового исполнения для файла. Тогда только secure
и члены группы ALICE
могут выполнить программу setuid getpwd
.
Если alice
является просто заменой для потенциально большей группы людей, то, возможно, назовите группу SECURE
. (Верхний регистр просто удобен для моего описания. Вам не нужно придерживаться верхнего регистра.)
новомодных списков ACL
setfacl -m u:alice:x getpwd
Программа setfacl(1)
немного сложна, но она позволяет создавать гораздо более сложные разрешения, чем традиционные разрешения Unix. Поскольку они довольно разные, в большинстве систем, которые я видел, по умолчанию они не включены - для этого требуется опция acl
до mount(8)
при монтировании файловой системы. Вам необходимо добавить acl
к файловым системам в /etc/fstab
, для которых требуются дополнительные разрешения. (Вам не нужно перезагружаться, чтобы сделать его доступным; mount /file/system -oremount,acl
будет достаточно, пока файловая система смонтирована - обычно до перезагрузки.)
Я предлагаю придерживаться традиционного метода Unix.