루트 비밀번호를 변경하기 위해 관리자가 필요하지 않습니다. sudo 사용자 가이 명령을 실행하고 싶지 않습니다.
sudo passwd $root
다음 명령을 사용하여 sudoers 파일에서 시도했습니다.
%sudo ALL=(ALL) ALL, !/usr/bin/passwd $root
차단하려면 어떻게해야합니까?
루트 비밀번호를 변경하기 위해 관리자가 필요하지 않습니다. sudo 사용자 가이 명령을 실행하고 싶지 않습니다.
sudo passwd $root
다음 명령을 사용하여 sudoers 파일에서 시도했습니다.
%sudo ALL=(ALL) ALL, !/usr/bin/passwd $root
차단하려면 어떻게해야합니까?
답변:
sudoers 매뉴얼 에 따르면 :
It is generally not effective to "subtract" commands from ALL using the
’!’ operator. A user can trivially circumvent this by copying the
desired command to a different name and then executing that. For
example:
bill ALL = ALL, !SU, !SHELLS
Doesn’t really prevent bill from running the commands listed in SU or
SHELLS since he can simply copy those commands to a different name, or
use a shell escape from an editor or other program. Therefore, these
kind of restrictions should be considered advisory at best (and
reinforced by policy).
이것이 sudoers 정책이 작동하지 않는 이유입니다.
사용자가 루트 권한을 얻지 못하게하고 비밀번호를 변경하지 못하게하려면 다음 절차를 시도하십시오.
sudoers에 다음 지시문이 포함되어 있다고 가정하십시오.
root ALL=(ALL:ALL) ALL
%sudo ALL=(ALL:ALL) ALL
사용자 이름이이라고 가정하면 foo
그의 그룹은 foo
및 sudo
입니다. groups
명령 출력은 다음과 같습니다.
foo sudo
그룹 foo
에서 사용자 제거 sudo
:이 gpasswd -d foo sudo
후에 사용자 foo
는 sudo를 사용하여 명령을 실행할 수 없습니다.
sudoers 파일을 편집하십시오. 이 명령을 사용하십시오 :
sudo visudo -f /etc/sudoers.d/foo
foo
예를 들어 사용자 권한을 정의하십시오 .
foo ALL=/usr/bin, !/usr/bin/passwd, !/usr/bin/su
이는 사용자 foo
가 및 명령을 /usr/bin/
제외한 모든 명령을 디렉토리에서 실행할 수 있음을 의미합니다 . 참고 : 사용자 가 비밀번호를 변경하려면을 사용 하지 않고 명령을 실행할 수 있습니다 .passwd
su
foo
passwd
sudo
사용자 foo
권한 의 다른 예 :
foo ALL =/usr/bin, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root
즉, 사용자 foo
는 디렉토리에서 명령을 실행할 수 /usr/bin/
있으며 모든 컴퓨터에서 루트를 제외한 모든 사람의 비밀번호를 변경할 수 있습니다.
Cmnd_Aliases
"권한 수준" 을 정의 하고 작성하여 명령 그룹을 정의 할 수 있습니다 . sudoers manual 의 EXAMPLE 섹션에서 유용한 예제를 찾을 수 있으며 다음은 sudoers 사용 방법에 대한 유용한 링크 입니다.
foo ALL=/usr/bin/*, !/usr/bin/passwd
왜 그런지 알았어 야했는데 ?