contraseña de sincronización de samba con contraseña de Unix en Debian Wheezy

contraseña de sincronización de samba con contraseña de Unix en Debian Wheezy

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

Leer más me llevó a pdbeditla 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:

  1. ¿Cómo puedo sincronizar las contraseñas de Samba con las contraseñas de Unix?
  2. ¿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-smbpasses obsoleto. Parece que lo reemplazó pam_winbindd. Puede instalar el paquete libpam-winbindpara 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

información relacionada