пароль синхронизации Samba с паролем Unix на Debian Wheezy


11

Я установил 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.

Вторая попытка, пользователь 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. где хранятся пароли самбы?

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


Пароли хранятся в базах данных /var/lib/samba/, я верю, что пароли есть, secrets.tdbно я не уверен. Что касается вашего первого вопроса, я сомневаюсь, что есть легкий путь.
Zoredache

Ответы:


10

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

 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/Setting_up_Samba_as_an_Active_Directory_Domain_Controller


2
Ссылка не работает, поэтому мы добавили ценную информацию в ответ: /
ubiquibacon

@ubiquibacon Я отредактировал этот ответ так, что теперь ссылка указывает на архивную версию с Wayback Machine (благодаря хорошей работе, проделанной людьми из Интернет-архива).
Энтони Геогеган

1
pam_smbpass устарел
alex.forencich

Да, я больше не могу найти libpam-smbpassсистему Debian 9.1, и она также не работает для меня. Как так получилось, что этот простой вопрос задавался так много раз и до сих пор не имеет ответа?
Фрэнк

@ Oz123 Никто не libpam-winbindможет быть найден в CentOS7.
Чэньцзян

3

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

Синхронизация паролей 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

Если для pam_unix изменить «required» на «Requisite», то после сбоя смены пароля 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.

Примечание . Когда вы изменяете общий пароль, чтобы он также требовал обновления паролей Samba, все зарегистрированные в настоящее время пользователи не смогут изменить свой пароль с помощью «passwd», пока они не войдут в систему повторно, если только у них уже нет существующей учетной записи Samba с паролем, равным на их пароль 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». Это означает, что перед изменением пароля Samba потребуется обновить пароль Unix.

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

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

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

pam_smbpass устарел
alex.forencich

@Joru При исходной компиляции samba 4.9.1 на CentOS7 нет файла pam_smbpass.so. Вы можете мне помочь? ссылка: stackoverflow.com/questions/52932070/…
CHENJIAN

@CHENJIAN SAMBA.ORG удалил pam_smbpass.so из исходников с помощью SAMBA 4. Итак, последняя версия Samba, которую я смог найти, была samba 3.9.16
Аксель Вернер
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.