Я установил 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
Итак, теперь я задаю себе вопрос:
- как синхронизировать пароли Samba с паролями Unix?
- где хранятся пароли 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