Я пишу сценарий для копирования паролей пользователей Linux в samba на сервере Ubuntu 10.04. Я использую Samba 3 с бэкэндом tdbsam.
1) Как мне (если возможно) скопировать учетные записи (пользователя / пароль) из linux в samba с помощью сценария оболочки?
2) Как мне узнать в моем скрипте, что определенный пользователь находится в базе данных samba user, имеет пароль и активирован? Мне это нужно, поскольку мой сценарий запускается чаще, и при последующих запусках мне нужно будет выяснить, присутствует ли уже пользователь. Я бы не стал копировать, устанавливать пароль или активировать, если это не нужно.
Это голова моего конфига:
[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
Я решил пока вернуться к 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
Мне все еще любопытен ответ на мой вопрос выше для будущих установок, и я приму ответ, который подходит лучше всего.
Файл паролей samba и теневые файлы вашей системы имеют разные схемы хеширования. Я считаю, что ни один из них не обратим, поэтому нет никакого способа конвертировать между одним и другим. Единственный способ синхронизировать пароли - это во время их изменения путем одновременного обновления обоих файлов, введенных пользователем. В этом весь смысл настройки синхронизации паролей unix.