I want to give one of the web developers testuser permission to set his own .htpasswd password using the /usr/bin/htpasswd command on the web server 'mywebserver'.
The web server tree belongs to the wwwadmin user, who therefore owns the .htpasswd file in the web root and is able to run htpasswd routinely.
In my understanding of sudo the next line in /etc/sudoers of the web server (stock Apache, CentOS 6) should do the job:
testuser mywebserver=(wwwadmin) /usr/bin/htpasswd
The truth is that whenever the user testuser runs:
sudo /usr/bin/htpasswd .htpasswd someusername
the command is rejected with:
[sudo] password for testuser:
Sorry, user testuser is not allowed to execute '/usr/bin/htpasswd' as root on mywebsever.mydomain.com.
The log /var/log/secure shows:
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
I'm baffled an have spent hours digging here and elsewhere on hints on why this happens (and why is root mentioned as user instead of wwwadmin).
Any clues would be appreciated!
Чтение документации отвечает на ваши вопросы
-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