Samba: как скопировать /etc/passwd в пароли samba на новых версиях сервера Ubuntu

Samba: как скопировать /etc/passwd в пароли samba на новых версиях сервера Ubuntu

Я пишу скрипт для копирования паролей пользователей 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

Мне по-прежнему интересно получить ответ на мой вопрос выше для будущих установок, и я приму тот ответ, который подойдет лучше всего.

Связанный контент