web-dev-qa-db-ja.com

sssd:一部のグループメンバーに特定のシェルを強制する方法はありますか?

コンテキスト

一部のADユーザーを特定のスクリプトに制限して、この特定のマシンで実行できる操作を制限したいのですが。

したがって、それらを/bin/bash(たとえば)に接続する代わりに、/path/to/my/scriptを使用するように強制します。これらのユーザーは特定のADグループに属しています。

他の人は本物のシェルを使用できるはずです。

古典的な方法

これらのユーザーがローカルユーザーの場合、/etc/passwdのShellフィールドを変更するだけです。

Sssdの方法

そのグループのメンバーにのみ異なるシェル値を提供する方法はありますか?

そうでない場合、どのようにしますか?

この目標を達成する1つの方法は、いくつかのドメインを宣言して、最初のドメインを特定のグループのメンバーのみに制限することです。

[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_base = DC=domain,DC=local?subtree?(memberOf=CN=group1,OU=Groups,DC=domain,DC=local)
# Shell
override_Shell = /Shell/path/for/group1
# Homedir
override_homedir = /home/%u

[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_base = DC=domain,DC=local?subtree?(memberOf=CN=group2,OU=Groups,DC=domain,DC=local)
# Shell
override_Shell = /Shell/path/for/group2
# Homedir
override_homedir = /home/%u


[domain/DOMAIN]
id_provider = ad
# Domain
ad_domain = domain.local
# Servers
ad_server = dc01.domain.local,dc02.domain.local,dc03.domain.local
# Homedir
override_homedir = /home/%u

group1のメンバーは/Shell/path/for/group1を使用し、group2のメンバーは/Shell/path/for/group2を使用し、その他すべてのDOMAINユーザーは/bin/bashを使用します

欠点は、ユーザーが両方のグループのメンバーである場合です。これは常に最初の「ドメイン」DOMAIN_GROUP1に該当します。

編集:廃止されたldap_user_search_baseの代わりにldap_user_search_filterを使用します。新しいバージョンのsssdで動作するはずです。

おそらくグループに対しては実行できませんが、SSSDのADでユーザーごとにシェルを変更できます。 ADSI Editを使用して実際のオブジェクト属性に移動し、ユーザーの「loginShell」属性を変更します。あるいは、Puppetを使用してGPOのようなものをLinuxに持ち込み、そこで管理することもできます(ただし、それが可能かどうかはわかりません)。

2
jmp242