Разрешить определенным гостям выполнять определенные команды

19

Я хотел бы создать нового пользователя на некоторых моих хостах Debian / Ubuntu, который может обновлять сервер с помощью команд apt-get updateи apt-get dist-upgrade, но я не хочу предоставлять им полный доступ sudo, чтобы иметь возможность делать что-либо еще. Это возможно? Возможно, есть способ создать сценарий, который они не могут редактировать, но могут выполнить, который будет выполнен от имени пользователя root?

Programster
источник
2
Смотрите man sudoersи sudo cat /etc/sudoers.
Златовласка
Благодаря @goldilocks, я всегда думал, что файл sudoers просто для того, чтобы люди могли получить root-доступ раньше.
Программист

Ответы:

30

Sudoи /etc/sudoersфайл предназначен не только для предоставления пользователям полного корневого доступа.

Вы можете редактировать файл sudoers с существующим пользователем sudo с помощью команды sudo visudo

Вы можете сгруппировать команды, которым вы хотите предоставить доступ, как показано ниже:

Cmnd_Alias SHUTDOWN_CMDS = /sbin/poweroff, /sbin/halt, /sbin/reboot
Cmnd_Alias UPDATE_COMMANDS = /usr/bin/apt-get

Затем вы можете дать определенные пользовательские привилегии этим командам, например так:

[User's name] ALL=(ALL) NOPASSWD: SHUTDOWN_CMDS, UPDATE_COMMANDS

Это можно увидеть на изображении ниже введите описание изображения здесь:

Теперь, если вы попытаетесь sudo apt-get updateили sudo apt-get dist-upgradeэти команды будут выполняться без запроса пароля . Если вы хотите запросить пароль, удалите NOPASSWDбит, в котором вы предоставляете пользователю доступ к группам команд.

Если вы попытаетесь запустить что-либо еще от имени sudoпользователя, вам будет предложено ввести пароль и произойдет сбой.

Ссылки

Programster
источник
6
Обратите внимание , что дает пользователям разрешение запускать apt-get, или даже просто apt-get upgrade, дает им полный доступ к корневой ! Многие сценарии обновления позволяют интерактивному пользователю запускать оболочку, например, когда файл конфигурации изменился. Чтобы быть в безопасности, ограничиться apt-getопределенными командами и заставить его быть неинтерактивным. См. Безопасно ли для моего пользователя ssh получать sudo без пароля для apt-get updateи apt-get upgrade?
Жиль "ТАК - перестань быть злым"
В моем случае я должен был поставить строку после%sudo ...
Алексей
Есть ли способ сделать это только из командной строки?
Камиль