ldap을 사용하여 서로 다른 sudo 권한을 가진 그룹을 저장하면 sssd와의 sudo 통합이 제대로 작동하지 않습니다. LDAP에 직접 액세스하도록 sudo를 설정하면 제대로 작동합니다.
이것이 우리의 시나리오입니다.
ldap에서 사용자 정의: waynea
Waynea는 2개의 그룹에 속해 있습니다. gcadmin 그룹을 사용하면 특정 명령을 루트로 실행할 수 있습니다. 또 다른 그룹인 gcoracle을 사용하면 로컬(ldap에 정의되지 않음) 사용자 oracle로 특정 명령을 실행할 수 있습니다.
waynea@pgc501> id
uid=5091(waynea) gid=5000(mcsuser) groups=5000(mcsuser),5022(gcadmin),5024(gcoracle)
다음은 두 그룹에 대한 ldap sudo 정의입니다.
waynea@pgc501> ldapsearch -h pld101.foo.com -x "(cn=%gcadmin)"
# %gcadmin, SUDOers, foo.com
dn: cn=%gcadmin,ou=SUDOers,dc=foo,dc=com
cn: %gcadmin
objectClass: sudoRole
objectClass: top
sudoCommand: /usr/bin/id
sudoCommand: /bin/ps
sudoCommand: /u01/oracle/12.1.0/agent12c/agent_inst/bin/emctl
sudoHost: ALL
sudoUser: %gcadmin
sudoRunAs: ALL
waynea@pgc501> ldapsearch -h pld101.foo.com -x "(cn=%gcadmin)"
# %gcoracle, SUDOers, foo.com
dn: cn=%gcoracle,ou=SUDOers,dc=foo,dc=com
cn: %gcoracle
objectClass: sudoRole
objectClass: top
sudoCommand: /bin/sh
sudoCommand: /u01/oracle/12.1.0/agent12c/sbin/nmosudo *
sudoHost: ALL
sudoRunAs: oracle
sudoUser: %gcoracle
이제 sudo를 ldap에 직접 연결할 때입니다. IE /etc/nsswitch.conf에는 다음이 있습니다.
sudoers: files ldap
"sudo -ll"을 실행하면 다음과 같은 결과가 나타납니다.
waynea@pgc501 > sudo -ll
Matching Defaults entries for waynea on this host:
requiretty, !visiblepw, always_set_home, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS", env_keep+="MAIL
PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES",
env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
User waynea may run the following commands on this host:
RunAsUsers: oracle
Commands:
/bin/sh
/u01/oracle/12.1.0/agent12c/sbin/nmosudo *
RunAsUsers: root
Commands:
/usr/bin/id
/u01/oracle/12.1.0/agent12c/agent_inst/bin/emctl
모두 괜찮습니다.
sssd를 사용하기 위해 sudo를 전환하면,
sudoers: files sss
우리는 이것을 얻습니다:
waynea@pgc501 > sudo -ll
Matching Defaults entries for waynea on this host:
requiretty, !visiblepw, always_set_home, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS", env_keep+="MAIL
PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES",
env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY",
secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin
User waynea may run the following commands on this host:
RunAsUsers: root
Commands:
/bin/sh
/u01/oracle/12.1.0/agent12c/sbin/nmosudo *
RunAsUsers: root
Commands:
/usr/bin/id
/u01/oracle/12.1.0/agent12c/agent_inst/bin/emctl
Waynea는 이제 루트로 쉘(/bin/sh)을 시작할 수 있는 권한을 갖습니다.
다음은 /etc/sssd/sssd.conf의 관련 항목입니다.
[domain/default]
id_provider = ldap
auth_provider = ldap
sudo_provider = ldap
ldap_sudo_search_base = ou=SUDOers,dc=foo,dc=com
ldap_uri = ldap://pld101.foo.com,ldap://pld301.foo.com/
ldap_search_base = dc=foo,dc=com
ldap_user_search_base = ou=People,dc=foo,dc=com
ldap_group_object_class = posixGroup
ldap_group_search_base = ou=Group,dc=foo,dc=com
ldap_group_name = cn
ldap_group_member = memberUid
ldap_id_use_start_tls = False
chpass_provider = ldap
cache_credentials = true
[sudo]
ldap_sudo_full_refresh_interval = 86400
ldap_sudo_smart_refresh_interval = 3600
어떤 도움이라도 대단히 감사하겠습니다! SSD를 활용하고 싶지만 이것이 다소 방해가 됩니다.
OS/rpm 버전은 다음과 같습니다.
Linux 6.5 (OEL)
sssd-1.9.2-129.el6_5.4.x86_64
sudo-1.8.6p3-12.el6.x86_64
libsss_sudo-1.9.2-129.el6_5.4.x86_64
sssd-client-1.9.2-129.el6_5.4.x86_64
답변1
사용자는 waynea
로그아웃했다가 다시 로그인해야 합니다.
sudo -ll
다음과 같이 인쇄하세요.
[WanJie@svr-master root]$ sudo -ll
Matching Defaults entries for WanJie on this host:
!visiblepw, always_set_home, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE", env_keep+="LC_COLLATE LC_IDENTIFICATION
LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin, !visiblepw,
always_set_home, env_reset, requiretty
사용자는 WanJie
이 호스트에서 다음 명령을 실행할 수 있습니다.
SSSD Role: %admin
RunAsUsers: ALL
Options: !authenticate
Commands:
/root/aaa.sh
SSSD Role: WanJie
RunAsUsers: ALL
Options: !authenticate
Commands:
/root/sudo.sh