sudo 및 sssd는 사용자 그룹에서 작동하지 않습니다

sudo 및 sssd는 사용자 그룹에서 작동하지 않습니다

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

관련 정보