Intereting Posts
Можно ли включить запрос на подтверждение при выполнении вложенной команды в bash? Как преобразовать выходные данные scripts / get_maintainer.pl в качестве входных данных для пересылки сообщений в почтовый ящик или git-send? Почему мой сервер не работает нормально? BASH: цикл через ls Есть ли удобный способ обернуть список команд bash в rlwrap? rsync mkstemp failed Неверный аргумент (22) с поддержкой davfs облака Box.com DisplayPort и Intel HD вызывают зависание GPU eth0 NO-CARRIER для подключения к Arch / Wired не работает Как загрузчик действительно передает в ядро? Общее использование ЦП и использование ЦП в списке процессов различаются в верхней реализации FreeBSD? Centos 7 Минимальная сеть VB недоступна, если я использую WiFi? Трубопровод из находки в grep grep-шаблоны из файла1 в столбец file2 Проблема с установкой GRUB / LILO при двойной загрузке с windows 10 UEFI / GPT Как переименовать файлы, используя комбинацию циклов в bash?

Как заставить пользователей устанавливать списки управления доступом в каталогах, которыми они не владеют?

У меня есть набор каталогов хранения на машинах Linux, все 770 / root: root (perms / owner: group), для которых я использую ACL для управления доступом пользователей. (Я не могу использовать группы unix, поскольку каталоги распределяются по сети, где группы управляются через LDAP, для которых я не являюсь администратором).

Для каждого каталога один пользователь имеет полный доступ к rwx через ACL, а все остальные имеют rx-доступ через ACL.

В настоящее время мне приходится вручную реагировать на запросы о добавлении / удалении пользователей, и мне бы хотелось, чтобы эта способность передавалась пользователям «rwx» для своих каталогов (потому что я – ленивый администратор, естественно).

Лучшим решением, которое я могу придумать, является создание скрипта / программы с корневым setuid, который проверяет статус ACL «rwx» вызывающего пользователя в данном каталоге и позволяет им добавлять / удалять пользователей ACL «rx», как в :

$ modify_acls.sh [--remove] [--add] <my_directory> <other_user> 

Есть ли более простой способ сделать это, или решение выше не работает по какой-либо причине?

Вместо сценария оболочки setuid рассмотрите возможность включения определенного скрипта в sudo .

Несмотря на то, что он чаще всего используется таким образом, sudo не ограничивается «разрешать кому-либо выполнять какую-либо программу с правами root». Вы можете легко настроить «пользователю A, B и C разрешено выполнять только этот конкретный скрипт как root» в /etc/sudoers . Для получения дополнительной информации см. man sudoers .

На самом деле нет преимущества использования sudo вместо скрипта setuid, за исключением того, что в системах, где скрипты setuid полностью отключены по соображениям безопасности, вторая альтернатива просто не работает вообще. Вы все равно можете написать собственный двоичный файл setuid, но вставка строки в sudoers проще, быстрее и проще изменить позже, когда вы хотите добавить или удалить пользователей.

Использование сценария оболочки, вероятно, не будет работать, поскольку скрипты оболочки setuid обычно не поддерживаются в Linux.

Обходным решением было бы написать небольшой исполняемый файл In C, чтобы предоставить требуемые функции и setuid root для этого исполняемого файла.