Дозвольте певним гостям виконувати певні команди


19

Я хотів би створити новий користувач на деяких з моїх хостів Debian / Ubuntu , який здатний оновити сервер з допомогою команд apt-get updateі apt-get dist-upgrade, але я не wan't , щоб дати їм повний доступ SUDO , щоб бути в змозі зробити що - небудь ще. Чи можливо це? Можливо, є спосіб створити скрипт, який вони не можуть редагувати, але можуть виконувати, який буде виконуватися як користувач root?


2
Дивіться man sudoersі sudo cat /etc/sudoers.
goldilocks

Дякуючи @goldilocks, я завжди думав, що файл sudoers - це просто дозволити людям раніше мати доступ до кореневого доступу.
Programster

Відповіді:


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 користувачеві отримати бездорожне судо для apt-get updateта apt-get upgrade?
Жиль "ТАК - перестань бути злим"

У моєму випадку мені довелося ставити лінію після%sudo ...
Олексія

Чи є спосіб зробити це просто з командного рядка?
Каміль Дзедзіч
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.