การตั้งค่าการแบ่งปันแซมบ้าสาธารณะที่ไม่ระบุชื่อเพื่อให้สามารถเข้าถึงผ่าน Windows 7 และ XBMC


9

ดังนั้นฉันควรเริ่มต้นด้วยการบอกว่าฉันทำสิ่งนี้ได้สำเร็จน้อยกว่าหนึ่งสัปดาห์ที่ผ่านมาและฉันก็ไม่มีปัญหา แต่หลังจากที่ฉันทำการฟอร์แมทและกำหนดค่าเซิร์ฟเวอร์ของฉันใหม่และตอนนี้ฉันมีเวลาที่ยากลำบากที่สุด

นี่คือสิ่งที่ฉันมีมาก่อนและสิ่งที่ฉันพยายามทำอีกครั้ง ฉันใช้แซมบ้าสาธารณะบนเซิร์ฟเวอร์ Ubuntu ทุกคนในเครือข่ายของฉันสามารถเข้าถึงส่วนแบ่งและเนื้อหาเป็นเพียงแค่พิมพ์ \ ชื่อโฮสต์ ไม่จำเป็นต้องใช้รหัสผ่าน ผู้ใช้ที่ไม่ได้อยู่ในเวิร์กกรุ๊ปของการแชร์มีสิทธิ์อ่าน แต่ผู้ใช้ที่อยู่ในเวิร์กกรุ๊ปนั้นมีสิทธิ์อ่าน / เขียน (วินโดว 7)

ตอนนี้ถ้าฉันพยายามเชื่อมต่อกับ \ ชื่อโฮสต์ฉันได้รับแจ้งชื่อผู้ใช้และรหัสผ่าน หากฉันเข้าสู่โหมด un pw ฉันจะสามารถเข้าใช้งานได้เต็มรูปแบบ แต่ไม่ควรทำ การตั้งค่าปัจจุบันของฉันคือ ...

security = user
map to guest = bad user

[Shares]
path = /home/shares
available = yes
read only = no
browsable = yes
public = yes
writable = yes
guest ok = yes

ฉันดึงผมออกมา ข้อเสนอแนะใด ๆ

แก้ไข:

ฮึนี้ทำให้ฉันลำบากมาก ฉันสนิทกันมาก

นี่คือสิ่งที่ฉันมี

ฉันจะได้รับส่วนแบ่งจาก Windows 7 โดยไปที่เริ่มต้นและพิมพ์ \ ชื่อโฮสต์ \ Sharename แต่ฉันได้รับแจ้งให้ระบุชื่อผู้ใช้และรหัสผ่าน ฉันไม่สามารถปล่อยให้มันว่างได้เพราะจะใช้เวิร์กกรุ๊ปเป็นโดเมน ดังนั้นฉันป้อน \ สำหรับชื่อผู้ใช้เพื่อล้างมันและเข้าสู่ระบบด้วยชื่อผู้ใช้และรหัสผ่านที่ว่างเปล่า เยี่ยมมากตอนนี้ฉันสามารถเข้าถึงไฟล์ในการแชร์ได้

เมื่อฉันเข้ามาแล้วการกำหนดค่าเวิร์กกรุ๊ปจะทำงานอย่างถูกต้อง ถ้าฉันใช้คอมพิวเตอร์ที่มี WORKGROUP เริ่มต้นฉันสามารถอ่านและดำเนินการได้ คอมพิวเตอร์ในเวิร์กกรุ๊ปโฮมของฉันสามารถอ่านเขียนและดำเนินการได้ ดังนั้นมันจึงใช้ได้

ปัญหาคือไม่ควรถามรหัสผ่านเลย ควรเปิดเผยต่อสาธารณะทุกคนในเครือข่าย ฉันพยายามที่จะแบ่งปันกับ XBMC และมันไม่ได้แสดงภายใต้ smb ในตัวจัดการไฟล์ ฉันไม่สามารถเข้าถึงด้วยตนเองจาก XBMC เช่นกัน ฉันได้รับการเชื่อมต่อถูกปฏิเสธข้อผิดพลาด

ยังคงดึงผมออกมามากกว่านี้ ส่วนที่แย่ที่สุดคือครั้งแรกที่ฉันทำสิ่งนี้เมื่อประมาณหนึ่งสัปดาห์ที่แล้วฉันใช้เวลาประมาณ 30 นาทีและมันก็ทำงานได้อย่างสมบูรณ์แบบ ตอนนี้ฉันอาจใช้เวลาอย่างน้อย 4 ชั่วโมงและมันก็ยังไม่ทำงาน

Testparm:

Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[printers]"
Processing section "[print$]"
Processing section "[Shares]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions

[global]
        workgroup = FELLOWSHIP
        server string = %h server (Samba, Ubuntu)
        map to guest = Bad User
        obey pam restrictions = Yes
        pam password change = Yes
        passwd program = /usr/bin/passwd %u
        passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
        unix password sync = Yes
        syslog = 0
        log file = /var/log/samba/log.%m
        max log size = 1000
        socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
        dns proxy = No
        wins support = Yes
        usershare allow guests = Yes
        panic action = /usr/share/samba/panic-action %d
        idmap config * : backend = tdb

[printers]
        comment = All Printers
        path = /var/spool/samba
        create mask = 0700
        printable = Yes
        print ok = Yes
        browseable = No

[print$]
        comment = Printer Drivers
        path = /var/lib/samba/printers

[Shares]
        path = /home/shares
        read only = No
        guest ok = Yes

อัปเดต: ดังนั้นการแชร์ในเครือข่ายของฉันจึงไม่ต้องคำนึงถึงกลุ่มงาน ผู้ใช้ Windows ทุกคนที่เชื่อมต่อกับเครือข่ายของฉันสามารถเห็น NAS ภายใต้ Netowork และเข้าถึงได้ กุญแจสำคัญคือการตั้งค่าความปลอดภัยเพื่อความปลอดภัย = แบ่งปัน ฉันรู้ว่ามันเลิกใช้แล้ว แต่มันใช้งานได้และความปลอดภัย = ผู้ใช้และแผนที่กับผู้ใช้ = ผู้ใช้ที่ไม่ดีไม่ได้ทำงานให้ฉัน

อย่างไรก็ตามตอนนี้ดูเหมือนว่าทุกคนที่เชื่อมต่อกับสิทธิ์ unix ส่วนกลางของการแชร์ได้รับสิทธิ์สำหรับไดเรกทอรีซึ่งสามารถจัดการได้ แต่ฉันต้องการให้ผู้ใช้ที่เข้าร่วมเวิร์กกรุ๊ปที่ระบุใน smb.conf เพื่อรับสิทธิ์กลุ่ม unix

ด้วยวิธีนี้ฉันสามารถตั้งค่าไดเรกทอรีเป็น 775 และฉันจะสามารถเขียนได้เพราะฉันเข้าร่วมในเวิร์กกรุ๊ป แต่ผู้ใช้รายอื่นสามารถอ่านและดำเนินการได้เท่านั้น


คุณควรจะสามารถแมปผู้ใช้เวิร์กกรุ๊ปเพื่อรับสิทธิ์เฉพาะกับไฟล์แผนที่ชื่อผู้ใช้: samba.org/samba/docs/man/manpages-3/smb.conf.5.html#USERNAMEMAP
Aaron

คำตอบ:


8

เกิดขึ้นกับการสะดุดในหัวข้อนี้ในฟอรัม Ubuntuและคิดว่าอาจช่วยได้ มันอธิบายขั้นตอนที่เกิดขึ้นเบื้องหลัง:

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

เมื่อชื่อผู้ใช้นั้นถูกส่งผ่าน Samba จะค้นหาในฐานข้อมูลรหัสผ่านสำหรับผู้ใช้นั้น:

  • หากไม่มีการจับคู่กับชื่อผู้ใช้ผู้ใช้ไคลเอนต์จะถูกติดแท็ก "ผู้ใช้ที่ไม่ดี" และถูกแปลง (แมป) ไปยังบัญชีเกสต์ซึ่งโดยค่าเริ่มต้นคือ "ไม่มีใคร"

  • หากพบการจับคู่ชื่อผู้ใช้และมีรหัสผ่านแซมบ้าที่ตรงกับรหัสที่ส่งโดยไคลเอนต์ Windows ผู้ใช้ Windows จะเข้าถึงโดยอัตโนมัติแม้ว่าจะไม่ใช่ผู้ใช้ที่ไม่ระบุชื่อซึ่งเป็นเหตุผลที่คุณต้องเพิ่ม "บังคับผู้ใช้ = ไม่มีใคร" นิยามหุ้นของคุณ

  • หากพบว่าตรงกับชื่อผู้ใช้ แต่รหัสผ่าน samba ไม่ตรงกับรหัสผ่านที่ส่งโดยไคลเอ็นต์ Windows โดยอัตโนมัติคุณจะได้รับแจ้งให้ใส่รหัสผ่าน - แม้จะเป็นแบบแชร์แขก

ลองเพิ่มforce user = nobodyลงในคำจำกัดความการแชร์ของคุณและดูว่าเป็นเช่นนั้น

แก้ไข 02/20/2013:

คือการtestparmกลับมารหัสทางออกของบางสิ่งบางอย่างอื่นที่ไม่ใช่ศูนย์? ในทำนองเดียวกันฉันจะไปข้างหน้าและให้พื้นที่ของการกำหนดค่าที่ดูดีและยาก นอกจากนี้ฉันไม่แน่ใจว่า smb.conf ที่คำนึงถึงขนาดตัวพิมพ์เป็นอย่างไร แต่ทุกตัวอย่างที่ฉันเห็น (ตัวอย่าง) ของmap to guest = Bad UserB และ U นั้นเป็นตัวพิมพ์ใหญ่ ตรวจสอบหน้าคู่มือSambaเพื่อดูตัวเลือกที่คุณใช้และตรวจสอบทุกอย่างอีกครั้ง


เฮ้ไบรซ์ขอบคุณที่ตอบ ฉันจัดการเพื่อความคืบหน้าเล็กน้อยตั้งแต่คำถามเดิมของฉัน แต่ฉันยังคงมีปัญหาเดียวกันเป็นหลัก ฉันจัดการเพื่อรับส่วนแบ่งของฉัน (ฉันเรียกว่าส่วนแบ่ง) ได้รับการกำหนดค่าเพื่อให้ทุกคนในเวิร์กกรุ๊ปที่กำหนดไว้ในการตั้งค่าระดับโลกใน smb.conf สามารถเข้าถึงได้ทันที - ไม่จำเป็นต้องใช้รหัสผ่าน ดำเนินการต่อในความคิดเห็นถัดไป ...
George Spake

นี่คือการตั้งค่าสำหรับการแบ่งปัน: [Shares] path = /home/shares browsable = yes available = yes read only = no public = yes writable = yes guest ok = yes หากฉันเพิ่มการforce user = nobodyหยุดพักและฉันไม่สามารถเข้าถึงการแบ่งปันได้เลย ที่นี่เป็นที่ที่ได้รับแปลก แต่; เมื่อฉันเรียกใช้ testparm มันจะตก[Shares] path = /home/shares read only = no guest ok = yesดังนั้นด้วยเหตุผลบางอย่างมันก็ไม่เห็นว่ามีคำจำกัดความที่เป็นสาธารณะเขียนได้มีอยู่และเรียกดูได้ นี่อาจเป็นตัวบ่งชี้ว่าปัญหาอยู่ตรงไหน
George Spake

@GeorgeSpake ทำการแก้ไข ...
Aaron

1
ฉันคิดว่า testparm เพิ่งคายอะไรออกมาแบบนั้น ทุกอย่างเป็นตัวพิมพ์เล็กในไฟล์ conf ฉันยังค้นพบและฉันจำเป็นต้องตรวจสอบสิ่งนี้ testparm นั้นทิ้งคำจำกัดความที่ไม่ใช่ค่าเริ่มต้นเท่านั้นซึ่งจะอธิบายได้ว่าเหตุใดผลลัพธ์บางรายการจึงถูกละเว้น
George Spake

การปรับปรุง samba ล่าสุด4.3.11+dfsg-0ubuntu0.14.04.3บน Ubuntu 14.04 ทำลายส่วนแบ่งสาธารณะของฉันforce user = nobodyเป็นเพียงการแก้ไขที่ฉันต้องการเพื่อนำส่วนแบ่งสาธารณะกลับมา
Antony

7

นี่คือวิธีการกำหนดค่า OpenElec ควรทำสิ่งที่คุณขอ (แม้ว่าจะเป็นอีกหนึ่งปีต่อมา ... มันอาจจะช่วยได้ในครั้งต่อไป) เพียงแค่ปรับการตั้งค่าการแชร์ตามต้องการ

[global]
  server string = YOURSERVERNAME
  workgroup = WORKGROUP
  netbios name = %h
  security = share
  guest account = root
  socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=65536 SO_SNDBUF=65536
  smb ports = 445
  max protocol = SMB2
  min receivefile size = 16384
  deadtime = 30
  os level = 20
  mangled names = no
  syslog only = yes
  syslog = 2
  name resolve order = lmhosts wins bcast host
  preferred master = auto
  domain master = auto
  local master = yes
  printcap name = /dev/null
  load printers = no
  browseable = yes
  writeable = yes
  printable = no
  encrypt passwords = true
  enable core files = no
  passdb backend = smbpasswd
  smb encrypt = disabled
  use sendfile = yes

[share]
comment = Share
path = /share
available = yes
browsable = yes
writable = yes
public = yes

ขอบคุณสำหรับการเพิ่มนี้! ฉันพยายามอย่างหนักที่จะได้รับส่วนแบ่งสาธารณะที่ทำงานร่วมกับ Windows 8.1 การตั้งค่าเหล่านี้เป็นเคล็ดลับ
davidmdem

13
Urgh! "บัญชีเกสต์ = รูท" หมายความว่าบัญชีผู้เยี่ยมชมถูกแมปไปที่รูทเช่นมีสิทธิ์ที่ไม่ จำกัด ในการทำสิ่งใด ระวังให้มาก! ข้างหน้ามังกร!
DanielSmedegaardBuus

0

เนื่องจากการค้นหาของ Google นำเรามาที่นี่และไม่มีคำตอบที่ชัดเจนฉันจึงสรุป

ต่อไปนี้เป็นเงื่อนไขที่จำเป็นเพื่อให้แน่ใจว่าลูกค้า SMB จะไม่ได้รับแจ้งชื่อผู้ใช้และรหัสผ่านเมื่อเข้าถึงเซิร์ฟเวอร์ Samba ของคุณ:

  1. เพิ่มguest account = <owner-of-your-shares>ภายใต้[global]ส่วน เป็นสิ่งสำคัญที่บัญชีเจ้าของหุ้นของคุณมีสิทธิ์เข้าถึงได้ หากคุณไม่ทำเช่นนี้แซมบ้าจะถือว่าบัญชีเกสต์เป็นnobodyผู้ใช้ซึ่งไม่น่าจะสามารถเข้าถึงข้อมูลในการแบ่งปันของคุณได้

    หรือคุณสามารถระบุforce user = <owner-of-your-share>ใต้[shareXYZ]บล็อกของคุณ

  2. ตรวจสอบให้แน่ใจคุณมี[shareXYZ]guest ok = yes

    ตั้งค่าbrowsable = yesแต่มักจะสืบทอดมาจาก[global]และถูกตั้งค่าเป็นค่าyesเริ่มต้น

จากนั้นอาจsecurity = userตั้งค่าด้วย (นี่เป็นค่าเริ่มต้นเมื่อคุณไม่ได้ตั้งค่า Active Directory ในสภาพแวดล้อมของคุณ) แม้ว่าฉันไม่แน่ใจว่าจำเป็นต้องใช้ค่าสถานะนี้เนื่องจากฉันไม่มีโฆษณาในสภาพแวดล้อมของฉันหรือไม่

แน่นอนถ้าคุณต้องการnobodyใช้ในการทำงานแล้วคุณสามารถเพียงแค่chown -Rh 65534:65534 /yourshareหลังจากนั้นคุณจะปรับเพียงกับการตั้งค่าเดียวภายใต้ของคุณguest ok = yes[shareXYZ]

โปรดทราบว่าการตั้งค่าrwxเป็นothers( chmod o+rwx /yourshare) ไม่อนุญาตให้ Samba กับnobodyผู้ใช้ในการแบ่งปัน strace -f -e chdir,geteuid,getegid -p <pid-of-the-parent-smbd-process>ผมได้ตรวจสอบเรื่องนี้กับ อาจจะเป็นเพียงแค่แซมบ้าละเว้นสิทธิ์ที่กำหนดไว้สำหรับothers? ไม่แน่ใจ.


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.