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

Я пытаюсь написать в /etc/network/interfaces пользователя, у которого нет прав root.

Причиной желания записи является разрешение пользователю устанавливать статический IP-адрес, поскольку я использую сервер только для командной строки. Какое разрешение мне нужно дать пользователю в etc/sudoers?

Я не хочу, чтобы у пользователя были полные права root. Просто возможность редактировать этот файл.

8
задан 1 August 2014 в 02:56

2 ответа

Вместо того, чтобы использовать sudo, просто устанавливает ACL на файле:

$ ls -l /var/tmp/foo
-rw-rw---- 1 root root 4 Jul 31 15:26 /var/tmp/foo
$ sudo setfacl -m u:white:rw /var/tmp/foo
$ whoami
white
$ cat /var/tmp/foo
bar

Теперь файл принадлежит 'корню', но 'белый' пользователь может читать и записать в него. 'Белый' пользователь может теперь использовать его любимого редактора для редактирования файла.

25
ответ дан 1 August 2014 в 02:56

Подготовьте сценарий, которые делают редактирование, Вы хотите, например, сценарий, которые пишут корректный файл со статическим IP (то, что вставить этот сценарий, вне объема этого Q& A). Давайте звонить, этот сценарий /root/set_static_ip. (1)

Редактирование /etc/sudoers (2) (с visudo лучше, это проверяет на исправность, это очень трудно для восстановления системы с недопустимым sudoers файлом, даже невозможный от удаленного (3)), и добавьте

user_name_to_authorize ALL=NOPASSWD: /root/set_static_ip 

Теперь, когда пользователь в состоянии использовать sudo /root/set_static_ip без любого пароля, который спрашивают, и сценарий будет работать со всеми полномочиями; никакая другая команда не будет позволена.

, Если Вы хотите, чтобы пользователь просто заменил файл тем, что они хотят, сценарий мог просто быть (назовите его /root/unsafe-overwrite-interface)

#! /bin/bash -e
#
cp /tmp/temp-iface.txt /etc/network/interfaces 
exit 0

... и Вы говорите пользователю редактировать /tmp/temp-iface.txt и затем работать sudo /root/unsafe-overwrite-interface---, разрешающий его в sudoers, как определено выше. Или Вы можете добавлять, что пользователь к ACL перечисляет и дает им разрешение записи на определенном файле .

, Но замечает, что, если Вы не проверяете содержание файла на безопасность, опустошение будет происходить, или намеренный или неумышленный.

<час> Сноски :

(1) этот сценарий должен быть максимально безопасным. Проверьте исходные данные и так далее. Это будет выполняться с полными полномочиями.

(2) в современной sudo установке, можно добавить файл к /etc/sudoers.d/ каталог, который является лучшим---, переживет обновления.

(3) я обычно сохраняю терминал с корневой сессией, открывают (sudo -i), когда я изменяю sudoers механизм и удобное резервное копирование.

8
ответ дан 1 August 2014 в 02:56

Другие вопросы по тегам:

Похожие вопросы: