Samba: 새 버전의 우분투 서버에서 /etc/passwd를 삼바 비밀번호로 복사하는 방법

Samba: 새 버전의 우분투 서버에서 /etc/passwd를 삼바 비밀번호로 복사하는 방법

우분투 서버 10.04의 samba에 Linux 사용자 비밀번호를 복사하는 스크립트를 작성 중입니다. 저는 tdbsam 백엔드와 함께 Samba 3을 사용하고 있습니다.

1) 쉘 스크립트를 사용하여 Linux에서 Samba로 계정(사용자/비밀번호)을 어떻게 복사합니까?

2) 특정 사용자가 Samba 사용자 DB에 있고 비밀번호가 있고 활성화되었는지 내 스크립트에서 어떻게 알 수 있습니까? 내 스크립트가 더 자주 실행되고 후속 실행 시 사용자가 이미 존재하는지 확인해야 하므로 이것이 필요합니다. 필요하지 않은 경우 비밀번호를 복사하거나 설정하거나 활성화하지 않습니다.

이것은 내 구성의 머리입니다.

[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

삼바 비밀번호 파일과 시스템 섀도우 파일은 서로 다른 해싱 체계를 가지고 있습니다. 나는 둘 중 어느 것도 되돌릴 수 없다고 생각하므로 둘 중 하나를 전환할 방법이 없습니다. 비밀번호를 동기화하는 유일한 방법은 사용자 입력에서 두 파일을 동시에 업데이트하여 비밀번호가 변경될 때입니다. 이것이 유닉스 비밀번호 동기화 설정의 핵심입니다.

답변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

향후 설치를 위해 위 질문에 대한 답변이 여전히 궁금하며 가장 적합한 답변을 수락하겠습니다.

관련 정보