我想限制一些AD用户到一个特定的脚本,限制他们可以在这台机器上做什么。
所以,而不是用/bin/bash (比如)连接它们,我想强制它们使用/path/to/my/script 。 这些用户在特定的AD组中。
其他人应该可以使用真正的shell。
如果那些用户在本地用户,我只是改变/etc/passwd的shell字段。
有没有办法为该组的成员提供不同的shell值?
如果不是,你会怎么做?
实现这一目标的一种方法是声明若干个领域,将第一个领域限制在给定组的成员之内。
[sssd] config_file_version = 2 services = nss, pam domains=DOMAIN_GROUP1,DOMAIN_GROUP2,DOMAIN [nss] default_shell = /bin/bash [domain/DOMAIN_GROUP1] id_provider = ad # Domain ad_domain = domain.local # Servers ad_server = dc01.domain.local,dc02.domain.local,dc03.domain.local # Restrict to group members ldap_user_search_filter = (memberOf=CN=group1,OU=Groups,DC=domain,DC=local) # Shell override_shell = /shell/path/for/group1 [domain/DOMAIN_GROUP2] id_provider = ad # Domain ad_domain = domain.local # Servers ad_server = dc01.domain.local,dc02.domain.local,dc03.domain.local # Restrict to group members ldap_user_search_filter = (memberOf=CN=group2,OU=Groups,DC=domain,DC=local) # Shell override_shell = /shell/path/for/group2 [domain/DOMAIN] id_provider = ad # Domain ad_domain = domain.local # Servers ad_server = dc01.domain.local,dc02.domain.local,dc03.domain.local
group1成员使用/shell/path/for/group1 , group2成员使用/shell/path/for/group2 ,所有其他DOMAIN用户使用/bin/bash
缺点是如果用户是两个组的成员:它将始终落在第一个“域”DOMAIN_GROUP1中。
你可能不能这样做到一个组,但是你可以在AD中为SSSD更改每个用户的shell。 使用ADSI Edit进入实际的对象属性并更改用户的“loginShell”属性。 或者,你可能会考虑使用Puppet将GPO引入到Linux中,也许在那里pipe理它(虽然我不确定这是可能的)。