Я хочу, чтобы один администратор мог редактировать файл /etc/fstab, но другой администратор не мог редактировать файл fstab.
Обоим администраторам необходим доступ ко всем остальным административным задачам.
Это возможно?
Я предполагаю, что мне нужно будет как-то настроить, к каким файлам "sudo" дает им доступ. Или, возможно, просто создать неадминистративные учетные записи, а затем создать группу с именем fstab-access и добавить в нее одного из пользователей, а затем настроить привилегии для этой группы... ? Я на правильном пути?
решение1
Если вы дадите им доступ ко всему, то, очевидно, все ставки отменены. Однако вы можете разрешить пользователю редактировать определенный файл и ничего больше. Например:
user ALL = sudoedit /etc/fstab
Разрешает пользователю редактировать только /etc/fstab.
решение2
Если вы хотите разрешить пользователю только редактировать /etc/fstab
, это можно сделать несколькими способами:
- Убедитесь, что списки контроля доступа включены (
acl
опция в/etc/fstab
записи для/
), иsetfacl -m user:joe:rw /etc/fstab
. - Добавьте
sudoers
правило: запуститеvisudo
и добавьте строкуjoe ALL = sudoedit /etc/fstab
Я рекомендую метод sudo, поскольку он позволяет легко проверить, кто что может делать.
Однако, если вы разрешите пользователю редактировать/etc/fstab
, то он сможет косвенно получить права root, добавив запись, которая позволит ему смонтировать внешнюю или циклическую файловую систему, на которой он разместил двоичный файл setuid root.
Довольно странно позволять пользователю редактироватьfstab
только редактировать. Если вы хотите разрешить пользователям монтировать съемные устройства, используйтеpmount
(или полагаться на среды рабочего стола).
Если вы позволяете пользователю запускать команды, не входящие в белый список, как root («все остальные административные задачи»), то вы не можете запретить ему редактировать какой-либо конкретный файл. В какой-то момент вам нужно решить, доверяете ли вы этим людям или нет. Если вы не доверяете им администрирование вашей машины, не давайте им привилегий (заставьте их использовать другую машину, возможно, виртуальную). Если вы доверяете им, позвольте им стать root и скажите им, что определенные файлы находятся под запретом.
решение3
Если вы попытаетесь перечислить все утилиты, которые могут понадобиться администратору, вам придется долго сидеть за клавиатурой.
Технически, именно это желание и является причинойВозможности Linuxбыли разработаны. Чтобы сделать то, что вы хотите: вы могли бы предоставить пользователям определенные возможности, а затем просто предоставить пользователю user1 право записи fstab
(через ACL или что-то еще) и просто не давать те же самые привилегии записи ограниченному пользователю user2 (убедившись, что у user2 нет CAP_CHOWN или CAP_DAC_OVERRIDE), но, учитывая текущее состояние возможностей (с точки зрения того, насколько хорошо развито пространство пользователя), это, вероятно, потребует больше работы, чем пользы.
Без использования возможностей делегирования обязанностей в сценарий «root как пользовательская роль», у вас просто есть различные перестановки использования учетной записи root для выполнения чего-либо. Это приводит нас к вышеупомянутой проблеме сообщения системе каждого возможного инструмента, который нужен другому пользователю (надеюсь, такого, который нельзя будет косвенно использовать для манипулирования fstab
).
Вероятно, вам лучше просто решить, можете ли вы доверять конкретному пользователю быть администратором или нет.