sssd: Existe uma maneira de forçar um shell específico para alguns membros do grupo?

7

O contexto

Gostaria de restringir alguns usuários do AD a um script específico, limitando o que eles podem fazer nessa máquina em particular.

Então, em vez de conectá-los com /bin/bash (por exemplo), eu gostaria de forçá-los a usar /path/to/my/script . Esses usuários estão em um grupo específico do AD.

Outras pessoas devem poder usar a concha real.

A maneira clássica

Se esses usuários fossem usuários locais, apenas alteraria o campo do shell em /etc/passwd .

O caminho sssd

Existe uma maneira de fornecer um valor de shell diferente apenas para os membros desse grupo?

Se não, como você faria isso?

    
por Christophe Drevet-Droguet 21.02.2014 / 14:27

2 respostas

12

Uma maneira de atingir esse objetivo é declarar vários domínios, restringindo os primeiros a apenas os membros de um determinado grupo.

[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

Membros de group1 use /shell/path/for/group1 , membros de group2 use /shell/path/for/group2 , todos os outros DOMAIN usuários usem /bin/bash

Uma desvantagem é se um usuário é um membro de ambos os grupos: ele sempre cairá no primeiro "domínio" DOMAIN_GROUP1.

EDIT: uso de ldap_user_search_base em vez do ldap_user_search_filter preterido. Ele deve estar trabalhando em versões mais recentes do sssd.

    
por 24.02.2014 / 15:08
2

Você provavelmente não pode fazer isso em um grupo, mas pode alterar o shell por usuário no AD para SSSD. Vá para os atributos reais do objeto usando o ADSI Edit e altere o atributo "loginShell" para o usuário. Alternativamente, você pode procurar usar o Puppet para trazer coisas semelhantes ao GPO para o Linux e talvez gerenciá-lo lá (não tenho certeza se é possível).

    
por 21.02.2014 / 15:31