일반 사용자가 일반 사용자 및 일반 그룹으로만 sudo 명령을 실행하도록 제한하는 방법

일반 사용자가 일반 사용자 및 일반 그룹으로만 sudo 명령을 실행하도록 제한하는 방법

foobar그룹의 일반 사용자로서, 해당 사용자가 실행 중인 사용자의 비밀번호를 알고 있다면 관리자가 아닌 다른 사용자(예: ) 처럼 명령을 실행할 users수 있기를 원합니다 . 예를 들어 다음이 가능해야 합니다.sudoraboof:usersfoobar

$ sudo -u raboof echo Hello World!
[sudo] Password for raboof:
$ sudo -g users echo Hello World!
$ sudo -u raboof -g users Hello World!

그러나 거부는 위의 두 번째 및 세 번째 변형의 맥락에서 sudo작동합니다 .echo Hello World!

제가 구성한 sudo표준 플러그인 sudoers은 다음과 같습니다.

User_Alias USER_ADMIN = #0, %#0, %wheel
Runas_Alias RUNAS_ADMIN = #0, %#0, %wheel

User_Alias USER_USER = ALL, !USER_ADMIN
Runas_Alias RUNAS_USER = ALL, !RUNAS_ADMIN

Defaults:USER_USER targetpw

USER_ADMIN ALL = (ALL:ALL) ALL

USER_USER ALL = (RUNAS_USER:RUNAS_USER) ALL

내가 원하는 방식으로 작동하려면 sudo플러그인을 어떻게 구성해야 합니까 ?sudoers

답변1

위에 정의된 표현식을 사용하여 많은 고민 끝에 관리자가 아닌 사용자(예: ) 로 호출할 때 Runas_Alias실제로 세 가지 조합 모두에 작동하는 다음 구성을 생각해 냈습니다 .sudoraboof:users

User_Alias USER_USER = ALL, !#0, !%#0, !%wheel
Runas_Alias RUNAS_USER_USER = ALL, !#0, !%#0, !%wheel
Runas_Alias RUNAS_USER_GROUP = ALL, !#0, !wheel

Defaults:USER_USER targetpw

USER_USER ALL = (RUNAS_USER_USER:RUNAS_USER_GROUP) ALL

foobar $ sudo -u raboof id
uid=1000(raboof) gid=100(users) groups=100(users)
foobar $ sudo -g users id
uid=1000(foobar) gid=100(users) groups=100(users)
foobar $ sudo -u raboof -g users id
uid=1000(raboof) gid=100(users) groups=100(users)

알 수 없는 이유로 인해 Runas_Alias다음과 같이 이전에 정의된 정의를 중첩하고 부정하는 것은 작동하지 않습니다.

Runas_Alias RUNAS_ADMIN_USER = #0, %#0, %wheel
Runas_Alias RUNAS_ADMIN_GROUP = #0, wheel
Runas_Alias RUNAS_USER_USER = ALL, !RUNAS_ADMIN_USER
Runas_Alias RUNAS_USER_GROUP = ALL, !RUNAS_ADMIN_GROUP

관련 정보