
Я пишу скрипт для копирования паролей пользователей Linux в Samba на сервере Ubuntu 10.04. Я использую Samba 3 с бэкэндом tdbsam.
1) Как (если возможно) скопировать учетные записи (пользователь/пароль) из Linux в Samba с помощью скрипта оболочки?
2) Как узнать в моем скрипте, есть ли определенный пользователь в базе данных пользователей samba, имеет ли он пароль и активирован? Мне это нужно, так как мой скрипт запускается чаще, и при последующих запусках мне нужно будет узнать, присутствует ли уже пользователь. Я бы не копировал, не устанавливал пароль и не активировал, если это не нужно.
Это заголовок моей конфигурации:
[global]
workgroup = WORKGROUP
server string = %h server
security = SHARE
obey pam restrictions = Yes
pam password change = no
passdb backend = tdbsam
unix password sync = no
syslog = 0
log file = /var/log/samba/log.%m
max log size = 1000
dns proxy = No
panic action = /usr/share/samba/panic-action %d
encrypt passwords = true
invalid users = root
hosts allow = 192.168.0.1/24
решение1
Файл паролей samba и ваши системные файлы теней имеют разные схемы хеширования. Я считаю, что ни один из них не является обратимым, поэтому нет способа конвертировать между ними. Единственный способ синхронизировать пароли — это обновить оба файла одновременно в момент их изменения с помощью ввода пользователя. В этом и заключается весь смысл настройки синхронизации паролей unix.
решение2
Я решил вернуться к smbpasswd на данный момент. И я решил не синхронизировать пароли. Мне нужно простое решение, которое работает здесь и сейчас.
Теперь это глава конфигурации:
[global]
workgroup = WORKGROUP
security = SHARE
passdb backend = smbpasswd:/etc/samba/smbpasswd
unix password sync = no
syslog = 0
log file = /var/log/samba/log.%m
max log size = 1000
А это скрипт, который я буду запускать при первоначальной установке и время от времени:
USER=samwin
cat /etc/samba/smbpasswd | grep -e "^$USER:"
if [ $? -ne 0 ]; then
echo "Adding Samba user USER:"
smbpasswd -a $USER
else
echo "Samba user $USER already present."
fi
Мне по-прежнему интересно получить ответ на мой вопрос выше для будущих установок, и я приму тот ответ, который подойдет лучше всего.