특정 명령에서 작동하지 않는 sudo


15

sudo데비안 8에서 다소 이상한 문제가 있습니다. 사용자는에서 일부 명령을 실행할 수 없습니다 /etc/sudoers.d. Chef를 사용하여 구성을 배포하므로 모든 파일이 자동으로 생성됩니다.

예:

이 구성은 잘 작동합니다

root@server:~# cat /etc/sudoers.d/nginx 
# This file is managed by Chef.
# Do NOT modify this file directly.

user  ALL=(root) NOPASSWD:/usr/sbin/nginx

그리고 이것은 실패합니다 :

root@server:~# cat /etc/sudoers.d/update-rc.d 
# This file is managed by Chef.
# Do NOT modify this file directly.

user  ALL=(root) NOPASSWD:/usr/sbin/update-rc.d

user@www42:~$ sudo update-rc.d 
[sudo] password for user: 
Sorry, user user is not allowed to execute '/usr/sbin/update-rc.d' as root on server.

무엇이 잘못 될 수 있습니까?

진단 :

Mar  5 12:12:51 server sudo:    user : command not allowed ; TTY=pts/0 ; PWD=/home/user ; USER=root ; COMMAND=/usr/sbin/update-rc.d
Mar  5 12:14:25 www42 su[1209]: pam_unix(su:session): session closed for user user

root@server:~# sudo --version
Sudo version 1.8.10p3
Configure options: --prefix=/usr -v --with-all-insults --with-pam --with-fqdn --with-logging=syslog --with-logfac=authpriv --with-env-editor --with-editor=/usr/bin/editor --with-timeout=15 --with-password-timeout=0 --with-passprompt=[sudo] password for %p:  --disable-root-mailer --with-sendmail=/usr/sbin/sendmail --with-rundir=/var/lib/sudo --mandir=/usr/share/man --libexecdir=/usr/lib/sudo --with-sssd --with-sssd-lib=/usr/lib/x86_64-linux-gnu --with-selinux --with-linux-audit
Sudoers policy plugin version 1.8.10p3
Sudoers file grammar version 43

답변:


28

문제는 update-rc.d(에서 /etc/sudoers.d/update-rc.d) 의 점입니다 . 부터 man sudo:

#includedir 지시문은 시스템 패키지 관리자가 패키지 설치의 일부로 sudoers 규칙을 삭제할 수있는 sudo.d 디렉토리를 작성하는 데 사용할 수 있습니다. 예를 들면 다음과 같습니다.

#includedir /etc/sudoers.d

sudo는 /etc/sudoers.d의 각 파일을 읽고 ~로 끝나거나 ~를 포함하는 파일 이름을 건너 뜁니다 . 문자는 패키지 관리자 또는 편집자의 임시 / 백업 파일에 문제가 발생하지 않도록합니다.


3
sudoers의 의심스러운 디자인 결정은 2 가지입니다. #주석과 지시문의 일부로 사용 하고 파일을 무시합니다. 흥미롭게 (자극적으로) visudo -f some.file 종료 할 때 무시 될 수 있다고 경고하지 않습니다. 간단한 공감에 의해 쿼터스 알바트 로스가 진정 될 수 있습니다.
user9517

1
@istheEnglishway는 완전히 동의합니다. 그러나 우스운 알바트 로스는 여전히 우스운 상태입니다.
MadHatter

~ (또는 실제로 일부 확장명을 가진 파일)을 가진 파일을 무시하는 것은 편집 후에 백업 파일의 이전 구성을 활성화 하지 않기를 원하기 때문에 실제로는 매우 좋습니다 . 그리고 해당 머신의 에디터가 백업 파일을 남겼는지 수동으로 확인하고 싶지 않을 것입니다. 물론 이것은 허용 된 확장자 (예 :)를 가진 파일 만 포함하여 수행 할 수 *.cf있지만 나중에 기능이 추가되고 일부 사용자는 어쨌든 설정된 확장자를 사용해야한다는 불만이 생길 수 있습니다.
ilkkachu

주석과 include 지시문 모두에서 사용되는 해시 기호에 대해서는 이전 버전과의 호환성이 그 뒤에있는 이유인지 확인하는 사람이 있습니까?
ilkkachu

5

sudo -ll사용자에게 적용 가능한 명령 / 구성 목록을 얻으려면 실행 하십시오.

update-rc.d 절이 표시되지 않으면 요리사 레시피를 조정하여 여러 사용자가 아닌 사용자마다 단일 sudoers.d 파일을 배포하는 것을 고려할 수 있습니다.

그룹 관련 sudoers 파일이 필요한지 고려할 수도 있습니다.

이 질문에 대한 답변이 도움이 될 수 있습니다 : /ubuntu/246455/how-to-give-nopasswd-access-to-multiple-commands-via-sudoers

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.