Eu segui o tutorial deste site para instalar o SSSD (sem o WinBind) para ingressar em um domínio do Windows Server 2008. E isso é um grande sucesso. Antes disso, eu estava tentando usar o Zentyal para criar pastas compartilhadas, mas sem sorte ... Zentyal sempre mostra erros ...
Eu queria usar a GUI para concluir o trabalho, mas quando falhei no Webmin Samba e no Zentyal, a única opção que deixei foi configurar um por um com o comando e implementar o smb.conf manualmente. Felizmente, o tutorial pode ingressar no domínio sem problemas, e eu posso configurar o compartilhamento do Samba.
Aqui está o smb.conf
[global]
workgroup = ADDOMAIN
server string = Samba Server Version %v
security = ads
# encrypt passwords = yes
# passdb backend = tdbsam
idmap config * : backend = tdb
realm = addomain.tld
access based share enum = yes
# this is just a member server
domain master = no
local master = no
preferred master = no
# in my test network I could not get AD authentication for smb shares to work
# without adding "kerberos method = secrets and keytab"
kerberos method = secrets and keytab
# Add the IPs / network ranges / subnets allowed acces to the server in general.
# this is not a nesessary entry but in general a good idea.
# hosts allow = 127. your local network info
# log files split per-machine:
log file = /var/log/samba/log.%m
# enable the following line to debug:
# log level = 3
# maximum size of 50KB per log file, then rotate:
max log size = 50
# Not interested in printers
load printers = no
cups options = raw
# This stops an annoying message from appearing in logs
printcap name = /dev/null
# File Shares under valid users I put a group if you create a group for samba in # active directory and add users to it those users will be able to access smb
# shares from this server over the network.
[guest]
comment = guest
path = /home/samba/guest
public = yes
readonly = no
writable = yes
guest ok = yes
[admin]
comment = admin
path = /home/samba/admin
public = no
readonly = no
writable = yes
guest ok = no
valid users = @"[email protected]"
Há um usuário, ADDOMAIN \ admintest (ou [email protected]), que faz o login em um PC Windows e tenta acessar a pasta de compartilhamento "Admin", mas não conseguiu conceder acesso. O log diz "NT_STATUS_ACCESS_DENIED". Mas tenho certeza de que a conta está no grupo.
Para garantir que o AD e as informações do usuário sejam sincronizadas com o meu CentOS 7, alterei os usuários válidos de @"[email protected]"
para "[email protected]"
. O usuário pode acessar a pasta compartilhada.
Então, o que tentei resolver foi usar o comando id
. Eu modifiquei o sssd.conf não precisa usar o nome completo qualificado. Então ...
# id admintest
uid=821800500(admintest) gid=821800513(domain users) groups=821800513(domain users)
Isso é simplesmente estranho. Sim esta conta está nos usuários do domínio, mas ainda tem alguns outros grupos que pertencem ao incluindo o "admingp".
Então usei o comando "getent" para mostrar os membros do grupo.
# getent group admingp
admingp:*:821808307:administrator,admintest,ben, ... (etc)
Aí está, o mais admirável está no grupo. Porque também no grupo de usuários do domínio e eu tento modificar novamente o smb.conf, os usuários válidos mudaram para @"domain [email protected]"
e adivinhem? A pasta de compartilhamento está acessível.
Portanto, posso concluir que o smb.conf está bem, a autenticação do AD está bem. Mas, como você percebeu, id admintest
exibe apenas o primeiro grupo correspondente. Os outros são pulados, portanto não posso definir a pasta de compartilhamento com permissão de grupo. E eu tenho dúzias de grupos e dúzias de pastas de compartilhamento lá, não posso simplesmente implementá-las uma a uma.
E eu teste final para o comando id
. A conta do Linux "suporte" pertence a dois grupos. Um é "suporte" e o outro é "roda".
# id support
uid=1000(support) gid=1000(support) groups=1000(support),10(wheel)
Os usuários do Linux não são afetados. Então ... o que deu errado? Eu anexei o sssd.conf aqui. Por favor, dê uma olhada.
[sssd]
domains = addomain.tld
config_file_version = 2
services = nss, pam
[domain/addomain.tld]
ad_domain = addomain.tld
krb5_realm = ADDOMAIN.TLD
realmd_tags = manages-system joined-with-samba
cache_credentials = True
id_provider = ad
krb5_store_password_if_offline = True
default_shell = /bin/bash
ldap_id_mapping = True
# use_fully_qualified_names = True
# fallback_homedir = /home/%u@%d
use_fully_qualified_names = False
fallback_homedir = /home/%u
enumerate = True
access_provider = simple
# access_provider = ldap
Muito obrigado em avançado.