Вопрос или проблема
Как автоматически обновить пароль пользователя Samba после изменения пароля общего пользователя в системе Ubuntu?
Я использую OpenLDAP в качестве базы данных.
Пароль пользователя Samba автоматически обновляется после изменения пароля с помощью команды passwd.
Ответ или решение
Для автоматической синхронизации паролей между пользователями системы Ubuntu 22.04 и пользователями Samba, использующими OpenLDAP в качестве бэкенда, необходимо настроить механизм, который будет обновлять пароль Samba после изменения пароля локального пользователя. Вот пошаговое руководство по настройке этой функции.
Шаг 1: Убедитесь, что встроены необходимые пакеты
Для начала, убедитесь, что у вас установлены следующие пакеты:
samba
samba-common-bin
libnss-ldap
libpam-ldap
Вы можете установить их с помощью команды:
sudo apt update
sudo apt install samba samba-common-bin libnss-ldap libpam-ldap
Шаг 2: Настройка Samba для использования LDAP
Откройте конфигурационный файл Samba, который обычно расположен по адресу /etc/samba/smb.conf
. Вам нужно убедиться, что параметры LDAP правильно указаны. Добавьте или измените следующие строки в секции [global]
:
passdb backend = ldapsam:ldap://localhost/
ldap suffix = dc=example,dc=com
ldap userdn = cn=admin,dc=example,dc=com
Не забудьте заменить example.com
на ваш домен.
Шаг 3: Настройка PAM для синхронизации паролей
Теперь необходимо настроить PAM, чтобы обновлять пароли Samba при изменении пароля системы. Для этого откройте файл /etc/pam.d/common-password
и добавьте следующие строки:
password required pam_unix.so nullok obscure min=4 max=8 md5
password requisite pam_succeed_if.so uid >= 1000 quiet
# Добавьте следующую строку для синхронизации паролей Samba
password optional pam_smbpass.so
Если pam_smbpass.so
отсутствует, установите пакет libpam-smbpass
:
sudo apt install libpam-smbpass
Шаг 4: Настройка скрипта для синхронизации паролей
Создайте скрипт, который будет автоматически обновлять пароль Samba, когда пользователь меняет пароль через passwd
. Создайте файл, например, /usr/local/bin/sync_samba_password.sh
и добавьте следующее содержимое:
#!/bin/bash
# Синхронизация пароля пользователя Samba
username=$1
password=$2
# Обновляем пароль Samba
smbpasswd -s -a $username <<< "$password
$password"
Сделайте скрипт исполняемым:
sudo chmod +x /usr/local/bin/sync_samba_password.sh
Шаг 5: Изменение конфигурации passwd
Теперь нужно изменить файл /etc/pam.d/common-password
, чтобы при изменении пароля также вызывался ваш скрипт. Добавьте следующую строку:
password required pam_exec.so /usr/local/bin/sync_samba_password.sh
Шаг 6: Тестирование
Теперь протестируйте настройку, изменив пароль пользователя через команду passwd <username>
. Убедитесь, что пароль Samba для этого пользователя также обновляется.
Заключение
Теперь вы настроили систему синхронизации паролей между пользователями системы Ubuntu и пользователями Samba. При изменении пароля локального пользователя через команду passwd
его Samba-пароль будет автоматически обновлен. Это обеспечит более эффективное управление доступом и повысит безопасность вашей системы.