Я хотел бы ограничить некоторых пользователей AD определенным сценарием, ограничив то, что они могут делать на этой конкретной машине.
Итак, вместо того, чтобы связывать их с /bin/bash
(например), я бы хотел заставить их использовать /path/to/my/script
. Эти пользователи входят в определенную группу AD.
Другие люди должны иметь возможность использовать настоящую оболочку.
Если бы эти пользователи были локальными пользователями, я бы просто изменил поле оболочки в /etc/passwd
.
Есть ли способ указать другое значение оболочки только для членов этой группы?
Если нет, как бы вы это сделали?
Один из способов достижения этой цели - объявить несколько доменов, ограничив первые только членами данной группы.
[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.
Вероятно, вы не можете сделать это для группы, но вы можете изменить оболочку для каждого пользователя в AD для SSSD. Откройте фактические атрибуты объекта с помощью ADSI Edit и измените атрибут «loginShell» для пользователя. В качестве альтернативы вы можете изучить возможность использования Puppet для переноса GPO в Linux и, возможно, управлять им там (хотя я не уверен, что это возможно).