แซมบ้าซิงค์รหัสผ่านพร้อมรหัสผ่านยูนิกซ์ในเดซี่ wheezy


11

ฉันติดตั้งแซมบ้าบนเซิร์ฟเวอร์ของฉันและฉันพยายามเขียนสคริปต์เพื่อสำรองสองขั้นตอนเพื่อเพิ่มผู้ใช้เช่น:

adduser username
smbpasswd -a username

smb.confรัฐของฉัน:

# This boolean parameter controls whether Samba attempts to sync the Unix
# password with the SMB password when the encrypted SMB password in the
# passdb is changed.
   unix password sync = yes

อ่านเพิ่มเติมนำฉันไปที่pdbeditหน้าคนซึ่งระบุ:

   -a     This option is used to add a user into the database.  This  com-
          mand needs a user name specified with the -u switch. When adding
          a new user, pdbedit will also ask for the password to be used.

          Example: pdbedit -a -u sorce
          new password:
          retype new password

          Note

          pdbedit does not call the unix password syncronisation script if
          unix password sync has been set. It only updates the data in the
          Samba user database.

          If you wish to add a user and synchronise the password that  im-
          mediately, use smbpasswd’s -a option.

ดังนั้น ... ตอนนี้ฉันตัดสินใจลองเพิ่มผู้ใช้ด้วยsmbpasswd:

การลองครั้งแรกผู้ใช้ unix ยังคงไม่มีอยู่:

root@raspberrypi:/home/pi# smbpasswd -a newuser
New SMB password:
Retype new SMB password:
Failed to add entry for user newuser.

ลองครั้งที่สองมีผู้ใช้ unix อยู่:

root@raspberrypi:/home/pi# useradd mag
root@raspberrypi:/home/pi# smbpasswd -a mag
New SMB password:
Retype new SMB password:
Added user mag.
# switch to user pi, and try to switch to mag
root@raspberrypi:/home/pi# su pi
pi@raspberrypi ~ $ su mag
Password: 
su: Authentication failure

ดังนั้นตอนนี้ฉันถามตัวเอง:

  1. ฉันจะทำให้รหัสผ่าน samba ซิงค์กับรหัสผ่าน unix ได้อย่างไร
  2. รหัสผ่านแซมบ้าเก็บไว้ที่ไหน

ใครช่วยสอนฉันได้ไหม


รหัสผ่านจะถูกเก็บไว้ในฐานข้อมูลใน/var/lib/samba/ฉันเชื่อว่ารหัสผ่านอยู่ในsecrets.tdbแต่ฉันไม่แน่ใจ สำหรับคำถามเดิมของคุณฉันสงสัยว่ามีวิธีง่าย ๆ
Zoredache

คำตอบ:


10

ดี ... ลิงค์ที่ขาดหายไปคือ:

 libpam-smbpass

ดังนั้นหลังจากติดตั้งแพคเกจนี้จะทำงานตามที่คาด หน่วยความจำระยะยาวของอินเทอร์เน็ตเพิ่งนำข้อมูลบางส่วนมา ดังนั้นเพื่อต่อสู้กับสิ่งนี้ฉันกำลังเผยแพร่ที่นี่ลิงค์ที่ถูกต้องวิธีการซิงค์รหัสผ่านแซมบ้ากับรหัสผ่านยูนิกซ์และการทดสอบของฉันเอง

root@raspberrypi:/home/pi# passwd mag2
passwd: user 'mag2' does not exist
root@raspberrypi:/home/pi# useradd mag2
root@raspberrypi:/home/pi# echo "mag2:12345" | chpasswd
root@raspberrypi:/home/pi# smbclient -L localhost -U mag2
Enter mag2's password: 
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.6]

    Sharename       Type      Comment
    ---------       ----      -------
    print$          Disk      Printer Drivers
    IPC$            IPC       IPC Service (raspberrypi server)
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.6]

    Server               Comment
    ---------            -------
    RASPBERRYPI          raspberrypi server

    Workgroup            Master
    ---------            -------
    WORKGROUP            
root@raspberrypi:/home/pi# su pi
pi@raspberrypi ~ $ su mag2
Password: 
Added user mag2.

mag2@raspberrypi:/home/pi$ 

ฉันหวังว่านี่จะช่วยคนอื่นได้

อัปเดต 2017:

libpam-smbpassจะเลิก pam_winbinddดูเหมือนว่าสิ่งที่มันถูกแทนที่ด้วยคือ คุณสามารถติดตั้งแพ็คเกจlibpam-winbindเพื่อรับมันได้ อย่างไรก็ตามนี่ยังไม่ซิงค์รหัสผ่านแซมบ้ากับรหัสผ่านยูนิกซ์ของคุณ แต่จะอนุญาตให้คุณพิสูจน์ตัวตนเป็นยูนิกซ์ด้วยเซิร์ฟเวอร์ Windows Authentication (AD) คุณสามารถค้นหาข้อมูลได้ที่นี่: https://wiki.samba.org/index.php/Setting_up_Samba_as_an_Active_Directory_Domain_Controller


2
ลิงก์เสียนั่นคือสาเหตุที่เราใส่ข้อมูลที่มีค่าลงในคำตอบ: /
ubiquibacon

@ubiquibacon ฉันได้แก้ไขคำตอบนี้แล้วเพื่อให้ลิงก์ชี้ไปที่เวอร์ชันที่เก็บถาวรจาก Wayback Machine (ขอบคุณการทำงานที่ดีของผู้ใช้ Internet Archive)
Anthony Geoghegan

1
pam_smbpass ดูเหมือนจะเลิกใช้แล้ว
alex.forencich

ใช่ฉันไม่พบlibpam-smbpassระบบ Debian 9.1 อีกต่อไปและมันก็ไม่ได้ผลสำหรับฉัน เป็นไปได้อย่างไรที่คำถามง่าย ๆ นี้ได้รับการถามมาหลายครั้งแล้วและยังไม่มีคำตอบ?
Frank Breitling

@ Oz123 libpam-winbindไม่พบใน CentOS7
เฉินเจียน

3

ต้องการแสดงความคิดเห็นกับคำตอบก่อนหน้า แต่ไม่สามารถทำได้เพราะขาดคะแนนชื่อเสียง พยายามใส่เนื้อหาแบบเต็มในคำตอบนี้ แต่ไม่สามารถทำได้ตามที่กล่าวไว้ว่าดูเหมือนว่าเป็นสแปม นี่คือการเข้าถึงเนื้อหาแบบเต็มบนเครื่อง wayback และต่อไปนี้เป็นประเด็นหลักโดยย่อ:

การซิงค์รหัสผ่าน Unix และ Samba บน Debian Etch

ติดตั้งแพ็คเกจต่อไปนี้:

# apt-get install libpam-smbpass smbclient

Unix -> แซมบ้า

ในการอัปเดตรหัสผ่าน Samba ทุกครั้งที่ผู้ใช้เปลี่ยนรหัสผ่าน Unix ให้เปลี่ยน

/etc/pam.d/common-password: จาก

password   required   pam_unix.so nullok obscure min=4 max=8 md5

ถึง

password   requisite**  pam_unix.so nullok obscure min=4 max=8 md5
password   required   pam_smbpass.so nullok use_authtok try_first_pass

การเปลี่ยน "required" เป็น "requisite" สำหรับ pam_unix จะทำให้แน่ใจว่าหากการเปลี่ยนรหัสผ่าน Unix ล้มเหลวการดำเนินการของปลั๊กอินจะสิ้นสุดลงทันที

เพื่อให้ใช้งานได้ผู้ใช้จะต้องมีบัญชี Samba และรหัสผ่านของ Samba จะต้องตรงกับรหัสผ่าน Unix เพราะนี่ไม่ใช่กรณีที่จำเป็นเราต้องเปลี่ยน

/etc/pam.d/common-auth: จาก

auth    required        pam_unix.so nullok_secure

ถึง

auth    requisite       pam_unix.so nullok_secure
auth    optional        pam_smbpass.so migrate

สิ่งนี้จะสร้างผู้ใช้ Samba หากยังไม่มีอยู่และเปลี่ยนรหัสผ่านเป็นรหัสผ่าน Unix ทุกครั้งที่ผู้ใช้ลงชื่อเข้าใช้ด้วย SSH หรือบริการอื่น ๆ ที่ใช้การตรวจสอบสิทธิ์เริ่มต้นของระบบ (common-auth)

คุณควรเห็นข้อความเพิ่มผู้ใช้เมื่อเข้าสู่ระบบโดยใช้ SSH ด้วยบัญชีที่ยังไม่มีบัญชี Samba

เนื่องจากสิ่งนี้จะสร้างบัญชี Samba สำหรับรูทคุณอาจต้องการปิดใช้งานการเข้าถึงรูทใน Samba (Debian Etch ปิดใช้งานโดยค่าเริ่มต้น):

/etc/samba/smb.conf:

invalid users = root

ข้อแม้ : นี้จะไม่ทำงานหากผู้ใช้เข้าสู่ระบบผ่านทาง SSH หรือบริการอื่น ๆ โดยไม่ต้องใช้รหัสผ่าน (ตัวอย่างเช่นโดยใช้การตรวจสอบคีย์สาธารณะ / ส่วนตัว) ในกรณีนี้ PAM จะไม่มีรหัสผ่านแบบข้อความธรรมดาซึ่งจำเป็นสำหรับการสร้างรหัสผ่าน Samba

ประกาศ : เมื่อคุณแก้ไขรหัสผ่านทั่วไปเพื่อต้องการอัปเดตรหัสผ่านของ Samba ผู้ใช้ที่เข้าสู่ระบบในปัจจุบันจะไม่สามารถเปลี่ยนรหัสผ่านโดยใช้ "passwd" จนกว่าพวกเขาจะลงชื่อเข้าใช้อีกครั้งเว้นแต่ว่าพวกเขามีบัญชี Samba อยู่แล้ว รหัสผ่าน Unix ของพวกเขา

Samba -> Unix

เราแนะนำให้ Samba ใช้ PAM เมื่อเปลี่ยนรหัสผ่าน:

/etc/samba/smb.conf:

unix password sync = yes
pam password change = yes

รีสตาร์ท Samba โดยใช้ /etc/init.d/samba รีสตาร์ท

กำหนดค่า PAM เพื่อรองรับการเปลี่ยนรหัสผ่านโดย Samba โดยการเพิ่ม @include รหัสผ่านทั่วไป:

/etc/pam.d/samba:

@include common-auth
@include common-account
@include common-session
@include common-password

สิ่งนี้จะใช้กลไกเดียวกันในการเปลี่ยนรหัสผ่านเมื่อใช้ Samba เหมือนกับเมื่อใช้ "passwd" ซึ่งหมายความว่าจะต้องมีการอัปเดตรหัสผ่าน Unix ก่อนที่จะพยายามเปลี่ยนรหัสผ่าน Samba

สร้างผู้ใช้ใหม่

ใช้ chpasswd เพื่อหลีกเลี่ยงข้อผิดพลาด:

# useradd test
# echo “test:newpass” | chpasswd

pam_smbpass ดูเหมือนจะเลิกใช้แล้ว
alex.forencich

@Joru โดยแหล่งรวบรวมของ samba 4.9.1 บน CentOS7 pam_smbpass.soมีไฟล์ไม่ คุณสามารถช่วยฉันได้ไหม? link: stackoverflow.com/questions/52932070/…
CHENJIAN

@CHENJIAN SAMBA.ORG ลบ pam_smbpass.so ออกจากแหล่งที่มี SAMBA 4 ดังนั้นเวอร์ชัน Samba ล่าสุดที่ฉันสามารถค้นหาได้คือ samba 3.9.16
Axel Werner
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.