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

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

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 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.

2ª tentativa, existe usuário unix:

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 para sincronizar as senhas do samba com as senhas unix?
  2. onde as senhas do samba são armazenadas?

Alguém pode ajudar a me esclarecer?

Responder1

Bem... o elo que faltava era:

 libpam-smbpass

Então, depois de instalar este pacote ele funciona conforme o esperado. A memória de longo prazo da Internet às vezes traz apenas informações parciais. Então para combater isso estou publicando aqui o link correto de como fazersincronizar senhas do samba com senhas unixe 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 que 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ê se autentique no 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

Responder2

Queria comentar a resposta anterior, mas não consegui por falta de pontos de reputação. Tentei colocar o conteúdo completo nesta resposta, mas não consegui, pois parecia spam.aquié o acesso ao conteúdo completo na máquina wayback, e a seguir está a versão resumida dos pontos principais:

Sincronização de senha 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

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 terminará imediatamente.

Para que isso funcione, os usuários já devem ter contas Samba e suas senhas Samba devem corresponder às senhas Unix. Como este 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 Samba, se ainda não existir, e alterará sua senha para a senha Unix, sempre que o usuário fizer login usando SSH ou qualquer outro serviço que use autenticação padrão do sistema (common-auth).

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

Como isso também criará uma conta Samba para root, você pode querer desabilitar o acesso root no Samba (o Debian Etch o desabilita por padrão):

/etc/samba/smb.conf:

invalid users = root

Embargo: isso não funcionará se o usuário fizer 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 simples, necessária para criar a senha do Samba.

Perceber: 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 a 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 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

informação relacionada