ฉันพบวิธีแก้ปัญหาโดยใช้สิทธิ์ของ Samba แต่ยังต้องการทราบว่ามีแนวทางฝั่งไคลเอ็นต์หรือไม่ (ไม่เคยได้ยินเลย แต่ใครจะรู้)
ในสถานการณ์ของฉันซึ่งมีเซิร์ฟเวอร์ไฟล์ที่คล้ายกับ NAS ที่มีอยู่ + ใช้งานร่วมกันกับระบบไฟล์ NTFS ภายนอก โดยที่ไม่เคยมีการตั้งค่าสิทธิ์ผู้ใช้จากภายใน Windows ที่ใช้งานเซิร์ฟเวอร์ Samba และพีซีไคลเอนต์ Ubuntu กับผู้ใช้ที่เป็นผู้ใหญ่ (" ชื่อผู้ใหญ่") และผู้ใช้ที่เป็นเด็ก ("ชื่อเด็ก")...
Samba NAS-box ต้องการความสามารถในการเพิ่มชื่อผู้ใช้ Ubuntu ของเด็กเป็นผู้ใช้ เช่น. ผ่าน 'ชื่อลูกของ adduser'
ชื่อผู้ใช้ของเด็กถูกเพิ่มลงในเซิร์ฟเวอร์ แต่ไม่สามารถใช้ (ได้อย่างง่ายดาย) เพื่อตั้งค่าการอนุญาตไฟล์ acl/Linux บนดิสก์ NTFS ฉันแค่ต้องการให้มันอยู่ที่นั่นสำหรับ Samba
บนเซิร์ฟเวอร์ เมื่อสร้างผู้ใช้แล้ว จะต้องเพิ่มผู้ใช้ไปยัง Samba และเปิดใช้งานบน Samba ด้วย คำสั่งสำหรับสิ่งนี้คือ 'smbpasswd -a childname' และ 'smbpasswd -e childname'
ตราบเท่าที่ยังทำงานได้ดีก่อนที่จะเพิ่มผู้ใช้ลูก (มีคำแนะนำมากมาย) บรรทัด /etc/fstab ที่เซิร์ฟเวอร์ใช้เพื่อเมานต์ HDD นั้นไม่สำคัญนักและสามารถปล่อยให้เหมือนเดิมได้
บรรทัด /etc/fstab ที่ไคลเอ็นต์ใช้เพื่อเมานต์การแชร์ Samba ก็ไม่สำคัญเช่นกัน ไม่จำเป็นต้องเพิ่มการตั้งค่าใหม่สำหรับ acl หรือ fmask= และ dmask= หรือ file_mode= และ folder_mode= หรือสำหรับข้อมูลรับรองเพิ่มเติมใดๆ ไฟล์ที่จะสร้าง
ไม่จำเป็นต้องพยายามสร้างไฟล์การแมปผู้ใช้เพื่อเปิดใช้งานการอนุญาตไฟล์ acl/POSIX บนดิสก์ ntfs (วิธีนี้อาจเป็นไปได้)
ในไฟล์ etc/fstab ที่เกี่ยวข้อง เซิร์ฟเวอร์สามารถใช้ ntfs เป็นประเภทไฟล์ได้ แต่ไคลเอ็นต์ต้องใช้ cifs หากต้องการติดตั้งอัตโนมัติ
บน HDD ที่ใช้ร่วมกัน เป็นการดีที่สุดที่จะไม่เก็บโฟลเดอร์ของผู้ใช้ที่เป็นเด็กไว้ในโฟลเดอร์ของผู้ใช้ที่เป็นผู้ใหญ่ หรือไม่ให้โฟลเดอร์ของผู้ใหญ่เป็นรูทของไดรฟ์ (ในกรณีของฉัน ฉันไม่สามารถหลีกเลี่ยงสิ่งเหล่านี้ได้ง่ายๆ)
สิทธิ์ง่ายๆ ที่จำเป็นสำหรับการเพิ่มผู้ใช้เด็กที่ไม่มีสิทธิ์เขียนและสิทธิ์การอ่านที่จำกัดสามารถจัดการได้ภายใน Samba โดยแก้ไข smb.conf
ใน smb.conf การตั้งค่าส่วนกลางจำเป็นต้องเพิ่มบรรทัดนี้:-
เรียกดูได้ = ไม่
ใน smb.conf รายการสำหรับการแบ่งปันของผู้ใช้ที่เป็นผู้ใหญ่จำเป็นต้องเพิ่มบรรทัดเหล่านี้:-
รายการอ่าน = รากผู้ใหญ่ชื่อเด็กชื่อ
รายการเขียน = ชื่อผู้ใหญ่รูท
ในข้างต้น แม้ว่าชื่อผู้ใช้ของเด็กจะต้องอยู่ในรายการอ่านของการแบ่งปันแซมบ้าของผู้ใหญ่ เนื่องจากโฟลเดอร์ของพวกเขาอยู่ภายในและการอนุญาตไม่เพียงแค่ "สำรวจ" เพื่อให้พวกเขาอ่านการแบ่งปันของพวกเขาโดยที่ยังไม่สามารถ เพื่ออ่านโฟลเดอร์ด้านบน
การตั้งค่าที่เรียกดูได้ = ไม่ไม่ปลอดภัยเหมือนกับการลบสิทธิ์ไฟล์ acl/POSIX จากผู้ใช้รายนั้นสำหรับไฟล์เหล่านั้น แต่ในกรณีนี้ก็เพียงพอแล้ว
ใน smb.conf รายการสำหรับการแบ่งปันของผู้ใช้ลูกจำเป็นต้องเพิ่มบรรทัดเหล่านี้:-
รายการอ่าน = รากผู้ใหญ่ชื่อเด็กชื่อ
รายการเขียน = ชื่อผู้ใหญ่รูท
ในกรณีของฉัน การเปลี่ยนแปลงข้างต้นไม่ส่งผลกระทบต่อพีซี Windows ในเครื่องที่เข้าถึงการแชร์
วิธีอื่นๆ อาจเป็นการทำสำเนาไฟล์ทั้งหมดในเครื่องสำหรับผู้ใช้ที่เป็นเด็ก หรือฟอร์แมต hdd ที่ใช้ร่วมกันใหม่เป็น ext4 และจัดระเบียบเลย์เอาต์ของโฟลเดอร์ให้แตกต่างออกไป แต่ฉันพบว่าวิธีนี้ดีกว่า ทำในสิ่งที่ฉันต้องการ และใช้ของ Samba การควบคุมการเข้าถึงสั้นของ acl
หากฉันทำข้อผิดพลาดใด ๆ ฉันจะขอบคุณที่ได้รู้ หากมีวิธีที่ง่ายกว่าในการจำกัดผู้ใช้ภายใน Ubuntu UI ซึ่งจะมีประโยชน์เช่นกัน (เนื่องจากการเพิ่มสิ่งเหล่านี้ไว้ด้านบนจะไม่เสียหายหากมีอยู่)