Я хочу дать одному из веб-разработчиков тестовый пользователь разрешение установить свой собственный пароль .htpasswd с помощью команды / usr / bin / htpasswd на веб-сервере mywebserver.
Дерево веб-серверов принадлежит wwwadmin пользователь, который, следовательно, владеет файлом .htpasswd в корневом веб-каталоге и может регулярно запускать htpasswd.
В моем понимании sudo следующая строка в / etc / sudoers веб-сервера (стандартный Apache, CentOS 6) должна выполнять эту работу:
testuser mywebserver=(wwwadmin) /usr/bin/htpasswd
На самом деле всякий раз, когда пользователь тестовый пользователь работает:
sudo /usr/bin/htpasswd .htpasswd someusername
команда отклоняется:
[sudo] password for testuser:
Sorry, user testuser is not allowed to execute '/usr/bin/htpasswd' as root on mywebsever.mydomain.com.
Журнал / var / log / secure показывает:
Apr 1 17:13:51 mywebserver sudo: testuser : command not allowed ; TTY=pts/2 ; PWD=/var/www/html ; USER=root ; COMMAND=/usr/bin/htpasswd .htpasswd someusername
Я сбит с толку и часами копался здесь и в других местах, пытаясь понять, почему это происходит (и почему корень упоминается как пользователь вместо wwwadmin).
Любые подсказки будут оценены!
Чтение документации отвечает на ваши вопросы
-u user, --user = user Запустить команду от имени пользователя, отличного от целевого пользователя по умолчанию (обычно root). Пользователь может быть либо именем пользователя, либо числовым идентификатором пользователя (UID) с префиксом «#» (например, # 0 для UID 0). При запуске команд в качестве UID многие оболочки требуют, чтобы символ «#» был экранирован обратной косой чертой («\»). Некоторые политики безопасности могут ограничивать UID теми, которые указаны в базе данных паролей. Политика sudoers разрешает UID, которых нет в базе данных паролей, пока не установлен параметр targetpw. Другие политики безопасности могут не поддерживать это.
Вы даете testuser привилегии запускать / usr / bin / htpasswd на mywebserver в качестве пользователя wwwadmin, но когда вы фактически запускаете команду sudo, вы не указываете, какого пользователя запускать, в результате по умолчанию используется root.
Попробуй это:
sudo -u wwwadmin /usr/bin/htpasswd