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


19

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


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пользователя, вам будет предложено ввести пароль и произойдет сбой.

Ссылки


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

В моем случае я должен был поставить строку после%sudo ...
Алексей

Есть ли способ сделать это только из командной строки?
Камиль
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.