Instalé samba en mi servidor y estoy intentando escribir un script que me ahorre los dos pasos para agregar un usuario, por ejemplo:
adduser username
smbpasswd -a username
Mis 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
Leer más me llevó a pdbedit
la página de manual que dice:
-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.
Entonces... ahora decidí intentar agregar un usuario con smbpasswd
:
Primer intento, el usuario de Unix aún no existe:
root@raspberrypi:/home/pi# smbpasswd -a newuser
New SMB password:
Retype new SMB password:
Failed to add entry for user newuser.
Segundo intento, el usuario de 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
Entonces ahora me pregunto:
- ¿Cómo puedo sincronizar las contraseñas de Samba con las contraseñas de Unix?
- ¿Dónde se almacenan las contraseñas de Samba?
¿Alguien puede ayudarme a iluminarme?
Respuesta1
Bueno... el eslabón perdido era:
libpam-smbpass
Entonces, después de instalar estos paquetes, funciona como se esperaba. La memoria a largo plazo de Internet a veces sólo aporta información parcial. Entonces, para combatir esto, estoy publicando aquí el enlace correcto sobre cómosincronizar contraseñas de samba con contraseñas de Unix, y también mi propia prueba.
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 esto ayude a alguien más.
actualización 2017:
libpam-smbpass
es obsoleto. Parece que lo reemplazó pam_winbindd
. Puede instalar el paquete libpam-winbind
para obtenerlo. Sin embargo, esto todavía no sincroniza las contraseñas de Samba con sus contraseñas de Unix. En su lugar, le permite autenticarse en Unix con un servidor de autenticación de Windows (AD). Puedes encontrar información sobre eso aquí:https://wiki.samba.org/index.php/Setting_up_Samba_as_an_Active_Directory_Domain_Controller
Respuesta2
Quería comentar la respuesta anterior pero no pude hacerlo por falta de puntos de reputación. Intenté poner el contenido completo en esta respuesta pero no pude porque decía que parecía spam.aquíes el acceso al contenido completo en wayback machine, y a continuación se muestra una versión breve de los puntos principales:
Sincronización de contraseñas de Unix y Samba en Debian Etch
Instale los siguientes paquetes:
# apt-get install libpam-smbpass smbclient
Unix -> Samba
Para actualizar la contraseña de Samba cada vez que un usuario cambia su contraseña de Unix, cambie
/etc/pam.d/contraseña-común: de
password required pam_unix.so nullok obscure min=4 max=8 md5
a
password requisite** pam_unix.so nullok obscure min=4 max=8 md5
password required pam_smbpass.so nullok use_authtok try_first_pass
Cambiar "requerido" a "requisito" para pam_unix garantizará que si falla el cambio de contraseña de Unix, la ejecución de los complementos finalice inmediatamente.
Para que esto funcione, los usuarios ya deben tener cuentas de Samba y sus contraseñas de Samba deben coincidir con sus contraseñas de Unix. Como esto no es necesariamente así, debemos cambiar
/etc/pam.d/common-auth: desde
auth required pam_unix.so nullok_secure
a
auth requisite pam_unix.so nullok_secure
auth optional pam_smbpass.so migrate
Esto creará un usuario de Samba, si aún no existe, y cambiará su contraseña a la contraseña de Unix, cada vez que el usuario inicie sesión usando SSH o cualquier otro servicio que use autenticación del sistema predeterminado (autenticación común).
Debería ver un mensaje Usuario agregado al iniciar sesión usando SSH con una cuenta que aún no tiene una cuenta Samba.
Debido a que esto también creará una cuenta de Samba para root, es posible que desees deshabilitar el acceso de root en Samba (Debian Etch lo tiene deshabilitado de forma predeterminada):
/etc/samba/smb.conf:
invalid users = root
Advertencia: Esto no funcionará si el usuario inicia sesión a través de SSH u otros servicios sin usar una contraseña (por ejemplo, mediante autenticación de clave pública/privada). En este caso, PAM no tendrá la contraseña en texto plano, necesaria para crear la contraseña de Samba.
Aviso: Cuando modifica common-password para requerir también actualizaciones de contraseñas de Samba, cualquier usuario que haya iniciado sesión actualmente no podrá cambiar su contraseña usando "passwd" hasta que vuelva a iniciar sesión, a menos que ya tenga una cuenta de Samba existente con una contraseña igual a su contraseña Unix.
Samba->Unix
Le indicamos a Samba que use PAM al cambiar contraseñas:
/etc/samba/smb.conf:
unix password sync = yes
pam password change = yes
Reinicie Samba usando /etc/init.d/samba restart.
Configure PAM para admitir el cambio de contraseña por parte de Samba agregando @include common-password:
/etc/pam.d/samba:
@include common-auth
@include common-account
@include common-session
@include common-password
Esto utilizará el mismo mecanismo para cambiar contraseñas cuando se usa Samba que cuando se usa "passwd". Esto significa que será necesaria una actualización de la contraseña de Unix antes de intentar cambiar la contraseña de Samba.
Creando nuevos usuarios
use chpasswd para evitar errores:
# useradd test
# echo “test:newpass” | chpasswd