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.conf
estados:
# 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 à pdbedit
pá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:
- como faço para sincronizar as senhas do samba com as senhas unix?
- 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-smbpass
está obsoleto. Parece que o que o 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 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