sudoers: NOPASSWD в той же строке, что и PASSWD: ALL?

Является ли эта комбинация законной:

username ALL=(ALL) NOPASSWD: /usr/bin/foo, PASSWD:ALL 

или они конфликтуют или отменяют друг друга?

Глядя на страницу man sudoers я бы сказал, что вы можете сделать их вместе:

 Tag_Spec A command may have zero or more tags associated with it. There are eight possible tag values, NOPASSWD, PASSWD, NOEXEC, EXEC, SETENV, NOSETENV, LOG_INPUT, NOLOG_INPUT, LOG_OUTPUT and NOLOG_OUTPUT. Once a tag is set on a Cmnd, subsequent Cmnds in the Cmnd_Spec_List, inherit the tag unless it is overridden by the opposite tag (ie: PASSWD overrides NOPASSWD and NOEXEC overrides EXEC). 

PASSWD:ALL впоследствии переопределит NOPASSWD . Существует даже пример, показывающий, что вы пытаетесь на странице руководства.

По умолчанию sudo требует, чтобы пользователь выполнил аутентификацию непосредственно перед запуском команды. Это поведение можно изменить с помощью тега NOPASSWD. Как и Runas_Spec, тег NOPASSWD устанавливает по умолчанию для команд, которые следуют за ним в Cmnd_Spec_List. И наоборот, тег PASSWD можно использовать для того, чтобы отменить ситуацию. Например:

 ray rushmore = NOPASSWD: /bin/kill, PASSWD: /bin/ls, /usr/bin/lprm 

Рекомендации

  • справочная страница для sudoers