2017-01-24 4 views
1

Использование Ubuntu 16.04LTSПредоставление пользователю гостя запустить скрипт с повышенными привилегиями

Я пытаюсь, чтобы позволить пользователю гостя, который не имеет SUDO полномочия перегружать Nginx всякий раз, когда им нужно, выполнив простой скрипт:

#!/bin/sh 
nginx -s reload 

, который имеет разрешения -r-xr-xr-x

и позволяет им сделать это с добавлением строки в файле sudoers:

root ALL=(ALL:ALL) ALL 
guest ALL=NOPASSWD: /path/to/script.sh 

Это все еще дает разрешение на отклонение ошибок.

nginx: [alert] could not open error log file: open() "/usr/local/nginx/logs/error.log" failed (13: Permission denied) 

Я не хочу, чтобы дать свои права гостевых пользователей SUDO, но для того, чтобы перезарядить Nginx Я обычно нужно использовать sudo nginx -s reload

Edit: решаемые мой вопрос - я overthinking проблему, пытаясь выполните команды, которые нужны моим гостевым пользователям через скрипт. Также не получается, как работает/etc/sudoers. Это видео помогло: https://www.youtube.com/watch?v=YSSIm0g00m4

Как корень я сделал sudoers.d файл, visudo -f /etc/sudoers.d/guests, чтобы правильно дать мои гости SUDO полномочия по Nginx и только Nginx:

Cmnd_Alias NGINX = /usr/local/nginx/sbin/nginx 
Cmnd_Alias GUESTS_CMND = NGINX 
%guests ALL=GUESTS_CMND 
+0

больше [ubuntu.se] или [sf] вопрос, чем программирование - проголосовали за движение. – Filburt

+0

Вы пытались setuid to root? –

+0

И как гость запускает этот скрипт? –

ответ

0

Как и в моем редактирования - я был переосмыслив проблему, пытаясь запустить команды, которые нужны моим гостевым пользователям через скрипт. Также не получается, как работает/etc/sudoers. Это видео помогло: https://www.youtube.com/watch?v=YSSIm0g00m4

Как корень я сделал sudoers.d файл, visudo -f /etc/sudoers.d/guests, чтобы правильно дать мои гости SUDO полномочия по Nginx и только Nginx:

Cmnd_Alias NGINX = /usr/local/nginx/sbin/nginx 
Cmnd_Alias GUESTS_CMND = NGINX 
%guests ALL=GUESTS_CMND