Если Ваши сценарии запускаются со строки #!/bin/bash
они будут все еще выполнены с помощью удара, даже если оболочка по умолчанию будет zsh.
Я нашел синтаксис zsh действительно близко к тому удара, и я не обращал внимание, если были действительно некоторые несовместимости. Я переключился 6 лет назад от удара до zsh беспрепятственно.
Если Вы только хотели позволить пользователю редактировать /etc/fstab
, Вы могли сделать это несколькими способами:
acl
опция в /etc/fstab
запись для /
), и setfacl -m user:joe:rw /etc/fstab
.sudoers
правило: выполненный visudo
и добавьте строку joe ALL = sudoedit /etc/fstab
Я рекомендую sudo метод, потому что он помогает контролировать, кто может сделать что.
Однако, если Вы позволяете пользователю редактировать /etc/fstab
, затем они могут косвенно получить корень путем добавления записи, которая позволяет им смонтировать внешнюю файловую систему или файловую систему цикла, в которой они посадили корневой двоичный файл setuid.
Довольно странно позволить пользователю редактировать fstab
только. Если Вы хотите позволить пользователям монтировать съемные устройства, использовать pmount
(или полагайтесь на настольные среды).
Если Вы позволяете пользователю выполнять недобавленные в белый список команды как корень (“все другие задачи администрирования”), то Вы не можете препятствовать тому, чтобы они редактировали какой-то конкретный файл. В какой-то момент необходимо решить, доверяете ли Вы этим людям или нет. Если Вы не доверяете им для управления машиной, не давайте им полномочия (заставьте их использовать другую машину, возможно, виртуальную машину вместо этого). При доверии им позвольте им стать корнем и сказать им, что определенные файлы запрещены.
При попытке перечислить каждую утилиту, которую администратор, возможно, должен использовать, то Вы будете сидеть на клавиатуре некоторое время.
Технически, этот вид требования - то, почему поддержка Linux была разработана. Чтобы сделать то, что Вы желаете: Вы могли дать пользователям особые возможности и затем просто дать user1 доступ для записи к fstab
(через ACL или что-то), и просто не дают то же самое полномочие записи ограниченному user2 (удостоверяющийся user2, не имел CAP_CHOWN или CAP_DAC_OVERRIDE), но, учитывая текущее состояние возможностей (с точки зрения как хорошо разработанный, пространство пользователя), это - вероятно, больше работы, чем это стоит.
Не используя возможности опуститься обязанности до "корня как пользовательский ролевой сценарий ", у Вас просто есть различные перестановки использования корневой учетной записи, чтобы сделать материал с. Это приносит нам к вышеупомянутой проблеме сообщения системы каждый возможный инструмент другие пользовательские потребности (надо надеяться, тот, который не может косвенно использоваться для управления fstab
).
Вы, вероятно, более обеспечены просто решение, можно ли доверять конкретному пользователю, чтобы быть администратором или нет.
Если Вы предоставляете им доступ ко всему, то, очевидно, все ставки выключены. Однако можно позволить пользователю редактировать конкретный файл и ничто иное. Например:
user ALL = sudoedit /etc/fstab
Позволил бы пользователю только редактировать/etc/fstab.