синхронизация пароля samba с паролем unix на debian wheezy

синхронизация пароля samba с паролем unix на debian wheezy

Я установил Samba на свой сервер и пытаюсь написать скрипт, который избавит меня от двух шагов по добавлению пользователя, например:

adduser username
smbpasswd -a username

Мои 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

Дальнейшее чтение привело меня на pdbeditстраницу руководства, на которой указано:

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

Итак... теперь я решил попробовать добавить пользователя с помощью smbpasswd:

1-я попытка, пользователь unix по-прежнему не существует:

root@raspberrypi:/home/pi# smbpasswd -a newuser
New SMB password:
Retype new SMB password:
Failed to add entry for user newuser.

2-я попытка, пользователь 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

Итак, теперь я задаю себе вопрос:

  1. как синхронизировать пароли Samba с паролями Unix?
  2. где хранятся пароли Samba?

Может ли кто-нибудь помочь мне просветить?

решение1

Ну... недостающее звено было:

 libpam-smbpass

Итак, после установки этих пакетов все работает как и ожидалось. Долговременная память Интернета иногда просто приносит частичную информацию. Поэтому, чтобы бороться с этим, я публикую здесь правильную ссылку, каксинхронизировать пароли samba с паролями unix, а также мой собственный тест.

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$ 

Надеюсь, это поможет кому-то еще.

обновление 2017:

libpam-smbpassне рекомендуется. Кажется, то, что заменило его, это pam_winbindd. Вы можете установить пакет, libpam-winbindчтобы получить его. Однако это все еще не синхронизирует пароли samba с вашими паролями unix. Вместо этого он позволяет вам аутентифицироваться в unix с помощью сервера аутентификации Windows (AD). Информацию об этом вы можете найти здесь:https://wiki.samba.org/index.php/Настройка_Samba_как_контроллера_домена_активного_каталога

решение2

Хотел прокомментировать предыдущий ответ, но не смог из-за отсутствия очков репутации. Попытался разместить полный контент в этом ответе, но не смог, так как было написано, что это похоже на спам.здесьесть доступ к полному контенту на wayback machine, а ниже приводится краткая версия основных моментов:

Синхронизация паролей Unix и Samba в Debian Etch

Установите следующие пакеты:

# apt-get install libpam-smbpass smbclient

Unix -> Самба

Чтобы обновлять пароль Samba всякий раз, когда пользователь меняет свой пароль Unix, измените

/etc/pam.d/common-password: из

password   required   pam_unix.so nullok obscure min=4 max=8 md5

к

password   requisite**  pam_unix.so nullok obscure min=4 max=8 md5
password   required   pam_smbpass.so nullok use_authtok try_first_pass

Изменение «required» на «required» для pam_unix гарантирует, что в случае сбоя смены пароля Unix выполнение плагинов будет немедленно завершено.

Чтобы это работало, пользователи уже должны иметь учетные записи Samba, а их пароли Samba должны совпадать с паролями Unix. Поскольку это не обязательно так, мы должны изменить

/etc/pam.d/common-auth: из

auth    required        pam_unix.so nullok_secure

к

auth    requisite       pam_unix.so nullok_secure
auth    optional        pam_smbpass.so migrate

Это создаст пользователя Samba, если он еще не существует, и изменит его пароль на пароль Unix всякий раз, когда пользователь входит в систему с помощью SSH или любой другой службы, использующей системную аутентификацию по умолчанию (common-auth).

При входе в систему с использованием SSH с учетной записью, у которой еще нет учетной записи Samba, вы должны увидеть сообщение «Добавлен пользователь».

Поскольку это также создаст учетную запись Samba для root, вам может потребоваться отключить доступ root в Samba (в Debian Etch он отключен по умолчанию):

/etc/samba/smb.conf:

invalid users = root

Предостережение: Это не сработает, если пользователь войдет в систему через SSH или другие службы без использования пароля (например, с помощью аутентификации с открытым/закрытым ключом). В этом случае у PAM не будет открытого пароля, который необходим для создания пароля Samba.

Уведомление: Если вы измените common-password так, чтобы он также требовал обновления паролей Samba, любой вошедший в систему пользователь не сможет изменить свой пароль с помощью «passwd», пока не войдет повторно, если только у него уже нет существующей учетной записи Samba с паролем, совпадающим с паролем Unix.

Самба -> Unix

Мы указываем Samba использовать PAM при смене паролей:

/etc/samba/smb.conf:

unix password sync = yes
pam password change = yes

Перезапустите Samba с помощью /etc/init.d/samba restart.

Настройте PAM для поддержки смены пароля с помощью Samba, добавив @include common-password:

/etc/pam.d/samba:

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

Это будет использовать тот же механизм для изменения паролей при использовании Samba, что и при использовании "passwd". Это означает, что потребуется обновить пароль Unix перед попыткой изменить пароль Samba.

Создание новых пользователей

используйте chpasswd, чтобы избежать ошибок:

# useradd test
# echo “test:newpass” | chpasswd

Связанный контент