Я пытаюсь написать в /etc/network/interfaces
пользователя, у которого нет прав root.
Причиной желания записи является разрешение пользователю устанавливать статический IP-адрес, поскольку я использую сервер только для командной строки. Какое разрешение мне нужно дать пользователю в etc/sudoers
?
Я не хочу, чтобы у пользователя были полные права root. Просто возможность редактировать этот файл.
Вместо того, чтобы использовать 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
Теперь файл принадлежит 'корню', но 'белый' пользователь может читать и записать в него. 'Белый' пользователь может теперь использовать его любимого редактора для редактирования файла.
Подготовьте сценарий, которые делают редактирование, Вы хотите, например, сценарий, которые пишут корректный файл со статическим 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 механизм и удобное резервное копирование.