senha de sincronização do samba com senha unix no debian wheezy

11

Instalei o samba no meu servidor e estou tentando escrever um script para me poupar das duas etapas para adicionar usuário, por exemplo:

adduser username
smbpasswd -a username

Meus smb.confestados:

# This boolean parameter controls whether Samba attempts to sync the Unix
# password with the SMB password when the encrypted SMB password in the
# passdb is changed.
   unix password sync = yes

Leituras adicionais me levaram à pdbeditpágina de manual, que afirma:

   -a     This option is used to add a user into the database.  This  com-
          mand needs a user name specified with the -u switch. When adding
          a new user, pdbedit will also ask for the password to be used.

          Example: pdbedit -a -u sorce
          new password:
          retype new password

          Note

          pdbedit does not call the unix password syncronisation script if
          unix password sync has been set. It only updates the data in the
          Samba user database.

          If you wish to add a user and synchronise the password that  im-
          mediately, use smbpasswd’s -a option.

Então ... agora eu decidi tentar adicionar um usuário com smbpasswd:

1ª tentativa, o usuário unix ainda não existe:

root@raspberrypi:/home/pi# smbpasswd -a newuser
New SMB password:
Retype new SMB password:
Failed to add entry for user newuser.

Segunda tentativa, o usuário unix existe:

root@raspberrypi:/home/pi# useradd mag
root@raspberrypi:/home/pi# smbpasswd -a mag
New SMB password:
Retype new SMB password:
Added user mag.
# switch to user pi, and try to switch to mag
root@raspberrypi:/home/pi# su pi
pi@raspberrypi ~ $ su mag
Password: 
su: Authentication failure

Então, agora eu estou me perguntando:

  1. como faço para sincronizar senhas samba com senhas unix?
  2. onde as senhas do samba são armazenadas?

Alguém pode me ajudar a me esclarecer?

Oz123
fonte
As senhas são armazenadas nos bancos de dados /var/lib/samba/, acredito que estejam, secrets.tdbmas não tenho certeza. Quanto à sua pergunta anterior, duvido que exista uma maneira fácil.
Zoredache

Respostas:

10

Bem ... o link que faltava era:

 libpam-smbpass

Portanto, após a instalação desses pacotes, ele funciona conforme o esperado. A memória de longo prazo da Internet apenas traz informações parciais às vezes. Então, para combater isso, estou publicando aqui o link correto como sincronizar senhas samba com senhas unix e também meu próprio teste.

root@raspberrypi:/home/pi# passwd mag2
passwd: user 'mag2' does not exist
root@raspberrypi:/home/pi# useradd mag2
root@raspberrypi:/home/pi# echo "mag2:12345" | chpasswd
root@raspberrypi:/home/pi# smbclient -L localhost -U mag2
Enter mag2's password: 
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.6]

    Sharename       Type      Comment
    ---------       ----      -------
    print$          Disk      Printer Drivers
    IPC$            IPC       IPC Service (raspberrypi server)
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.6]

    Server               Comment
    ---------            -------
    RASPBERRYPI          raspberrypi server

    Workgroup            Master
    ---------            -------
    WORKGROUP            
root@raspberrypi:/home/pi# su pi
pi@raspberrypi ~ $ su mag2
Password: 
Added user mag2.

mag2@raspberrypi:/home/pi$ 

Espero que isto ajude alguém.

atualização 2017:

libpam-smbpassestá obsoleto . Parece o que o substituiu pam_winbindd. Você pode instalar o pacote libpam-winbindpara obtê-lo. No entanto, isso ainda não sincroniza as senhas do samba com as senhas do unix. Em vez disso, permite que você seja autenticado para unix com um servidor de autenticação do Windows (AD). Você pode encontrar informações sobre isso aqui: https://wiki.samba.org/index.php/Setting_up_Samba_as_an_Active_Directory_Domain_Controller

Oz123
fonte
2
O link está quebrado, é por isso que colocamos informações valiosas na resposta: /
ubiquibacon
@ubiquibacon Eu editei esta resposta para que o link agora aponte para a versão arquivada da Wayback Machine (graças ao bom trabalho realizado pelo pessoal do Internet Archive).
Anthony Geoghegan
1
pam_smbpass parece estar obsoleto
alex.forencich
Sim, não consigo mais encontrar libpam-smbpassum sistema Debian 9.1 e também não funciona para mim. Como é possível que essa pergunta simples tenha sido feita tantas vezes e ainda não tenha resposta?
Frank Breitling
@ Oz123 libpam-winbindNÃO pode ser encontrado no CentOS7.
CHENJIAN
3

Queria comentar a resposta anterior, mas não pôde fazê-lo por falta de pontos de reputação. Tentei colocar o conteúdo completo nesta resposta, mas não consegui, pois dizia que parecia spam. Aqui está o acesso ao conteúdo completo na máquina de wayback e a seguir, uma breve versão dos pontos principais:

Sincronização de senhas Unix e Samba no Debian Etch

Instale os seguintes pacotes:

# apt-get install libpam-smbpass smbclient

Unix -> Samba

Para atualizar a senha do Samba sempre que um usuário alterar sua senha Unix, altere

/etc/pam.d/common-password: from

password   required   pam_unix.so nullok obscure min=4 max=8 md5

para

password   requisite**  pam_unix.so nullok obscure min=4 max=8 md5
password   required   pam_smbpass.so nullok use_authtok try_first_pass

Alterar "obrigatório" para "requisito" para pam_unix garantirá que, se a alteração da senha do Unix falhar, a execução dos plug-ins termina imediatamente.

Para que isso funcione, os usuários já devem ter contas Samba e suas senhas Samba devem corresponder às senhas Unix. Porque este não é necessariamente o caso, devemos mudar

/etc/pam.d/common-auth: from

auth    required        pam_unix.so nullok_secure

para

auth    requisite       pam_unix.so nullok_secure
auth    optional        pam_smbpass.so migrate

Isso criará um usuário do Samba, se ele ainda não existir, e mudará sua senha para a senha do Unix, sempre que o usuário fizer login usando SSH ou qualquer outro serviço que use autenticação do sistema padrão (autenticação comum).

Você deverá ver uma mensagem Usuário adicionado ao fazer login usando SSH com uma conta que ainda não tem uma conta Samba.

Como isso também criará uma conta Samba para root, convém desativar o acesso root no Samba (o Debian Etch o desativou por padrão):

/etc/samba/smb.conf:

invalid users = root

Advertência : Isso não funcionará se o usuário efetuar login via SSH ou outros serviços sem usar uma senha (por exemplo, usando autenticação de chave pública / privada). Nesse caso, o PAM não terá a senha de texto sem formatação, necessária para criar a senha do Samba.

Aviso : Quando você modifica a senha comum para também exigir atualizações de senhas do Samba, qualquer usuário conectado no momento não poderá alterar sua senha usando "passwd" até que faça login novamente, a menos que já tenha uma conta Samba existente com uma senha igual para sua senha Unix.

Samba -> Unix

Instruímos o Samba a usar o PAM ao alterar senhas:

/etc/samba/smb.conf:

unix password sync = yes
pam password change = yes

Reinicie o Samba usando /etc/init.d/samba restart.

Configure o PAM para suportar a alteração de senha pelo Samba adicionando @include common-password:

/etc/pam.d/samba:

@include common-auth
@include common-account
@include common-session
@include common-password

Isso usará o mesmo mecanismo para alterar senhas ao usar o Samba e ao usar "passwd". Isso significa que será necessária uma atualização da senha do Unix antes de tentar alterar a senha do Samba.

Criando novos usuários

use chpasswd para evitar erros:

# useradd test
# echo “test:newpass” | chpasswd
Joru
fonte
pam_smbpass parece estar obsoleto
alex.forencich
@Joru Na compilação de fonte do samba 4.9.1 no CentOS7, não há nenhum arquivo de pam_smbpass.so. Pode me ajudar? link: stackoverflow.com/questions/52932070/…
CHENJIAN
@CHENJIAN SAMBA.ORG pam_smbpass.so removido a partir das fontes com SAMBA 4. Assim última versão Samba eu era capaz de descobrir que era samba 3.9.16
Axel Werner