sssd:有没有办法强制某些组成员的特定shell?

上下文

我想限制一些AD用户到一个特定的脚本,限制他们可以在这台机器上做什么。

所以,而不是用/bin/bash (比如)连接它们,我想强制它们使用/path/to/my/script 。 这些用户在特定的AD组中。

其他人应该可以使用真正的shell。

经典的方式

如果那些用户在本地用户,我只是改变/etc/passwd的shell字段。

sssd的方式

有没有办法为该组的成员提供不同的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/group1group2成员使用/shell/path/for/group2 ,所有其他DOMAIN用户使用/bin/bash

缺点是如果用户是两个组的成员:它将始终落在第一个“域”DOMAIN_GROUP1中。

你可能不能这样做到一个组,但是你可以在AD中为SSSD更改每个用户的shell。 使用ADSI Edit进入实际的对象属性并更改用户的“loginShell”属性。 或者,你可能会考虑使用Puppet将GPO引入到Linux中,也许在那里pipe理它(虽然我不确定这是可能的)。