Назад | Перейти на главную страницу

Команда Sudo отклонена (htpasswd) - CentOS / Apache (htaccess)

Я хочу дать одному из веб-разработчиков тестовый пользователь разрешение установить свой собственный пароль .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