servidor membro do domínio samba4: os usuários não podem ver a lista de compartilhamento, em vez disso, eles são solicitados a fornecer uma senha do samba

3

Precisamos descobrir por que os usuários do domínio do Windows estão sendo solicitados por uma senha ao acessar o servidor samba. Eles podem ver o servidor no Microsoft Windows Network, mas eles não podem ver a lista de compartilhamento, porque quando eles clicam no nome do servidor, eles recebem um diálogo de senha.

O diálogo é o problema. Isso não deve aparecer. Eu vou oferecer isso em caso de ajuda: Um login de domínio não é válido. Novamente, eu não preciso disso para funcionar, mas um usuário com uma senha samba local configurada não pode autenticar (setup com smbpasswd ).

Em um ponto, eu removi uma parte extra do smb.conf e reiniciei os serviços nmb,smb,winbind e ele começou a funcionar. Não me lembro de fazer outras alterações. Mais tarde, fiz uma reinicialização para ver se era estável e não permiti que o usuário visualizasse os compartilhamentos desde então.

Na verdade, estava funcionando por um tempo, permitindo que as pessoas visualizassem os compartilhamentos e até mesmo os deixasse em pastas (conforme autorizado pelo grupo de segurança do Active Directory), conforme planejado.

Minha configuração é a seguinte: link

Desativei temporariamente o firewall. Depois de corrigido, incluí regras de firewall e usei alguns comandos deste guia: link

Esta é a minha configuração principal com validação realizada por testparm :

# testparm 
Load smb config files from /etc/samba/smb.conf
Processing section "[public]"
Processing section "[accounting]"
Processing section "[developer]"
Loaded services file OK.
Server role: ROLE_DOMAIN_MEMBER
Press enter to see a dump of your service definitions

[global]
    workgroup = MYWORKGROUP
    realm = MYWORKGROUP.COM
    server string = Samba4 Server
    security = ADS
    kerberos method = dedicated keytab
    winbind enum users = Yes
    winbind enum groups = Yes
    winbind use default domain = Yes
    winbind nss info = rfc2307
    idmap config MYWORKGROUP:range = 500-40000
    idmap config MYWORKGROUP:schema_mode = rfc2307
    idmap config MYWORKGROUP:backend = ad
    idmap config *:range = 70001-80000
    idmap config * : backend = tdb

[public]
    path = /mnt/public
    force group = domain users
    read only = No

[accounting]
    path = /mnt/accounting
    valid users = accounting
    force group = accounting
    read only = No

[developer]
    path = /mnt/developer
    force group = developer
    read only = No

/etc/krb5.conf

# cat krb5.conf 
[logging]
    default = FILE:/var/log/krb5libs.log
    kdc = FILE:/var/log/krb5kdc.log
    admin_server = FILE:/var/log/kadmind.log

[libdefaults]
    default_realm = MYWORKGROUP.COM
    dns_lookup_realm = true
    dns_lookup_kdc = true
    ticket_lifetime = 24h
    forwardable = yes

[appdefaults]
  pam = {
    debug = false
    ticket_lifetime = 36000
    renew_lifetime = 36000
    forwardable = true
    krb4_convert = false
  }

Winbind com sufixo após os arquivos (observe que alguns sistemas usam compactos em vez de arquivos):

# egrep winbind nsswitch.conf
passwd:     files winbind
shadow:     files winbind
group:      files winbind

Eu não vi nenhum recurso de segurança do SELinux Samba que precisava estar ativado:

# getsebool -a | grep samba
samba_create_home_dirs --> off
samba_domain_controller --> off
samba_enable_home_dirs --> off
samba_export_all_ro --> off
samba_export_all_rw --> off
samba_portmapper --> off
samba_run_unconfined --> off
samba_share_fusefs --> off
samba_share_nfs --> off
sanlock_use_samba --> off
use_samba_home_dirs --> off
virt_use_samba --> off

# getsebool -a | grep smb
allow_smbd_anon_write --> off

Embora eu tenha que iniciar nmbd em um script, pois o script de início de serviço está gerando um erro ( bind failed on pipe socket /var/run/samba/nmbd/unexpected: Address already in use ) nessa plataforma. Ele funcionou em um ponto quando eu simplesmente comecei usando o comando: nmbd (duas mensagens aparecem em log.nmbd: nmbd ...started , standard input is not a socket, assuming -D option ). Então, aqui está o meu script de reinicialização:

# cat smb-restart 
service nmb restart
nmbd
service smb restart
service winbind restart
ps -eaf|egrep "mbd|winbind"

Tudo parece estar em execução:

# ps -eaf|egrep "mbd|winbind"
root     25057     1  0 12:38 ?        00:00:00 nmbd
root     25071     1  0 12:38 ?        00:00:00 smbd
root     25087     1  0 12:38 ?        00:00:00 winbindd
root     25091 25087  0 12:38 ?        00:00:00 winbindd
root     25092 25071  0 12:38 ?        00:00:00 smbd
root     25512 25087  0 12:45 ?        00:00:00 winbindd
root     25513 25087  0 12:45 ?        00:00:00 winbindd
root     25514 25087  0 12:45 ?        00:00:00 winbindd
root     25579 25087  0 12:45 ?        00:00:00 winbindd

Não tenho certeza se isso é necessário, mas adicionei comandos pam winbind aqui:

# cat /etc/pam.d/system-auth-ac 
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
auth        sufficient    pam_fprintd.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 500 quiet
auth        sufficient    pam_krb5.so use_first_pass
auth        sufficient    pam_winbind.so use_first_pass
auth        required      pam_deny.so

account     required      pam_unix.so
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 500 quiet
account     sufficient    pam_winbind.so use_first_pass
account     required      pam_permit.so

password    requisite     pam_cracklib.so try_first_pass retry=3 type=
password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password    sufficient    pam_krb5.so use_authok
password    sufficient    pam_winbind.so use_first_pass
password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so
session     optional      pam_krb5.so
session     optional      pam_winbind.so use_first_pass

Eu entrei no domínio com sucesso e vejo usuários e grupos de domínio por meio de wbinfo -u e wbinfo -g .

Eu posso listar e renovar o principal de serviço com kinit [email protected] e klist .

Acho que o winbind está bem carregado:

# ldconfig -v | grep winbind
libnss_winbind.so.2 -> libnss_winbind.so.2

# locate libnss_winbind
/lib64/libnss_winbind.so
/lib64/libnss_winbind.so.2
/usr/lib64/libnss_winbind.so

# locate libnss_wins
/lib64/libnss_wins.so
/lib64/libnss_wins.so.2
/usr/lib64/libnss_wins.so

Eu tenho um usuário chamado jcalfee, mas o comando id não consegue encontrá-los:

# wbinfo -u|egrep jcalfee
jcalfee
# id jcalfee
id: jcalfee: No such user

No entanto, posso usar chgrp usando um grupo de domínio.

chgrp "domain users" /mnt/public

Meu arquivo host contém uma linha como essa, fui obrigado a colocar o nome totalmente resolvido do smb-host primeiro na linha 127.0.0.1:

127.0.0.1   smb-host.domain.com samba-host localhost ....

É assim que eu configuro um novo diretório de compartilhamento no SELinux, isso tem funcionado:

function mkdir_samba_share {
  path=${1?directory path}
  set -o xtrace
  mkdir -p "$path"
  semanage fcontext -a -t samba_share_t "$path(/.*)?"
  restorecon -R "$path"
  chmod 770 -R "$path"
  chgrp "domain users" "$path"
  ls -ldZ "$path"
  set +o xtrace
}

Eu adicionei um keytab (isso irá avisar se o seu smb.conf não contiver um método kerberos global).

net ads keytab create -U Administrator%password
    
por jcalfee314 29.05.2013 / 21:51

1 resposta

2

Sem dúvida, é um tipo de falha no mecanismo de autenticação. Eu presumo que o Kerberos está trabalhando para você?

kinit [email protected]

e

kinit [email protected]

Em seguida, verifique

klist

para os dois tokens de autenticação devem aparecer. Se não, por favor, envie de volta a resposta. Eu vi um monte de possíveis falhas, mas vamos descartá-las uma a uma.

    
por 10.06.2013 / 16:05