samba sync password com unix password no debian wheezy

10

Eu 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 estados smb.conf :

# 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

Outras leituras trouxeram-me para a página pdbedit man, 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.

2a 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 estou me perguntando:

  1. como faço com que as senhas do samba sejam sincronizadas com senhas do UNIX?
  2. onde as senhas do samba são armazenadas?

Alguém pode me ajudar a esclarecer?

    
por Oz123 23.09.2012 / 10:00

2 respostas

8

Bem ... o elo perdido foi:

 libpam-smbpass

Então, depois de instalar esses pacotes, ele funciona como esperado. A memória de longo prazo da Internet apenas traz informações parciais às vezes. Então, para lutar contra isso, estou publicando aqui o link correto como sincroniza 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 isso ajude alguém.

atualização 2017:

libpam-smbpass está obsoleto . Parece que o que substituiu é pam_winbindd . Você pode instalar o pacote libpam-winbind para obtê-lo. No entanto, isso ainda não sincroniza as senhas do samba com suas senhas do Unix. Em vez disso, permite que você autentique no unix com um servidor de autenticação do Windows (AD). Você pode encontrar informações sobre isso aqui: link

    
por 23.09.2012 / 10:21
3

Queria comentar a resposta anterior, mas não conseguiu fazer isso por falta de pontos de reputação. Tentei colocar o conteúdo completo sobre esta resposta, mas não podia, como se disse, que parecia spam. aqui é o acesso ao conteúdo completo na máquina de wayback, e segue a breve versão dos principais pontos:

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: de

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

Mudar "required" para "requisite" para pam_unix irá garantir que se a mudança de senha do Unix falhar, a execução dos plugins terminará imediatamente.

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

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

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 alterará sua senha para a senha do Unix sempre que o usuário fizer login usando o SSH ou qualquer outro serviço que use a autenticação padrão do sistema (common-auth). / p>

Você deverá ver uma mensagem Adicionado usuário ao fazer login usando o SSH com uma conta que ainda não tenha uma conta do Samba.

Porque isso também irá criar uma conta Samba para o root, você pode querer desabilitar o acesso root no Samba (o Debian Etch o desabilitou 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). Neste caso, o PAM não terá a senha em texto puro, que é necessária para criar a senha do Samba.

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

Samba - > Unix

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

/etc/samba/smb.conf:

unix password sync = yes
pam password change = yes

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

Configure o PAM para suportar a mudança de senha pelo Samba, adicionando a senha comum @include:

/etc/pam.d/samba:

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

Isso usará o mesmo mecanismo para alterar as senhas ao usar o Samba como 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 o chpasswd para evitar erros:

# useradd test
# echo “test:newpass” | chpasswd
    
por 02.02.2016 / 15:58