sudo 사용자의 명령 차단 실행하고 싶지 않습니다. sudo 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그의 그룹은 foosudo입니다. 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/제외한 모든 명령을 디렉토리에서 실행할 수 있음을 의미합니다 . 참고 : 사용자 가 비밀번호를 변경하려면을 사용 하지 않고 명령을 실행할 수 있습니다 .passwdsufoopasswdsudo

  • 사용자 foo권한 의 다른 예 :

    foo ALL =/usr/bin, /usr/bin/passwd [A-Za-z]*, !/usr/bin/passwd root
    

    즉, 사용자 foo는 디렉토리에서 명령을 실행할 수 /usr/bin/있으며 모든 컴퓨터에서 루트를 제외한 모든 사람의 비밀번호를 변경할 수 있습니다.

Cmnd_Aliases“권한 수준” 을 정의 하고 작성하여 명령 그룹을 정의 할 수 있습니다 . sudoers manual 의 EXAMPLE 섹션에서 유용한 예제를 찾을 수 있으며 다음은 sudoers 사용 방법에 대한 유용한 링크 입니다.


답변

를 통해 명령 별칭을 추가하십시오 visudo.

Cmnd_Alias PASSWD=/usr/bin/passwd
Cmnd_Alias SU=/bin/su

다음을 통해 제한을 추가하십시오 visudo.

%nopasswdgroup ALL = ALL, !PASSWD, !SU

nopasswdgroup이라는 그룹에 사용자를 추가하십시오.

usermod -aG nopasswdgroup nopasswduser