一部のADユーザーを特定のスクリプトに制限して、この特定のマシンで実行できる操作を制限したいのですが。
したがって、それらを/bin/bash
(たとえば)に接続する代わりに、/path/to/my/script
を使用するように強制します。これらのユーザーは特定のADグループに属しています。
他の人は本物のシェルを使用できるはずです。
これらのユーザーがローカルユーザーの場合、/etc/passwd
のShellフィールドを変更するだけです。
そのグループのメンバーにのみ異なるシェル値を提供する方法はありますか?
そうでない場合、どのようにしますか?
この目標を達成する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に持ち込み、そこで管理することもできます(ただし、それが可能かどうかはわかりません)。