그룹 A의 구성원에게 그룹 B 사용자 계정에 대한 "sudo su" 액세스 권한 부여

그룹 A의 구성원에게 그룹 B 사용자 계정에 대한 "sudo su" 액세스 권한 부여

"x_users"라는 Linux 보안 그룹의 구성원인 권한 없는 사용자 집합(user01, user02, user03...)이 있다고 가정해 보겠습니다.

$ groups user01
user01 : user01 x_users

또한 "x_admins"라는 Linux 보안 그룹의 구성원인 관리자 사용자 집합(admin01, admin02, admin03...)이 있다고 가정해 보겠습니다.

$ groups admin01
admin01 : admin01 x_admins

x_admin 그룹의 모든 구성원이 x_users 그룹의 구성원인 모든 사용자와 마찬가지로 sudo(8) 및 su(1)을 사용하여 대화형 로그인 셸을 호출할 수 있기를 바랍니다. 예를 들어 다음과 같습니다.

[admin01 ~]$ sudo su - user01
[user01 ~]$ # do stuff as user01
[user01 ~]$ exit
[admin01 ~]$

x_admins 그룹의 구성원은 x_users 그룹의 구성원이 아닌 사용자에 대해 대화형 로그인 셸을 호출하기 위해 sudo(8) 및 su(1)을 사용해서는 안 됩니다.

[admin01 ~]$ sudo su - nonxuser
[sudo] password for admin01:
Sorry, user admin01 is not allowed to execute '/bin/su - nonxuser' as root on localhost
[admin01 ~]$

이를 달성하는 한 가지 방법은 다음과 같이 "/etc/sudoers.d/x_admins" 구성 파일을 만드는 것입니다.

# /etc/sudoers.d/x_admins
User_Alias ADMINS = %x_admins, %wheel
ADMINS   ALL = (root) /bin/su - user01
ADMINS   ALL = (root) /bin/su - user02
ADMINS   ALL = (root) /bin/su - user03
# ...

물론 sudoers 구성 파일에 x_users 그룹의 개별 구성원을 수동으로 나열하는 것은 지루하고 오류가 발생하기 쉽습니다. sudoers 구성 파일에서 이를 수행하는 더 깔끔한 방법이 있습니까?

답변1

원하는 것을 보다 엄격하게 달성하는 한 가지 방법은 admins 그룹의 사용자가 "sudo"를 사용하여 users 그룹의 사용자로서 직접 명령을 실행할 수 있도록 허용하는 것입니다. 이는 대략적으로 /etc/sudoers에 다음을 추가하여 수행할 수 있습니다.

%x_admins ALL = (%x_users) ALL

그런 다음 관리자는 다음을 사용하여 사용자 "user0"에 대한 명령을 실행할 수 있습니다.

sudo -u user0 command...

이 사용자에게 전체 쉘 액세스 권한을 얻으려면 관리자가 다음 명령을 사용할 수 있습니다.

sudo -i -u user0

이렇게 하면 관리자가 루트로 아무것도 실행하지 않아도 됩니다. 심지어 "su"도 마찬가지입니다.

관련 정보