linux / setfacl - ตั้งค่าไฟล์ / ไดเรกทอรีปัจจุบัน / อนาคตทั้งหมดในไดเรกทอรีหลักเป็น 775 ด้วยเจ้าของ / กลุ่มที่ระบุ


42

ฉันมีไดเรกทอรีที่เรียกว่า "สมาชิก" และภายใต้นั้นมีโฟลเดอร์ / ไฟล์ ฉันจะตั้งค่าโฟลเดอร์ / ไฟล์ปัจจุบันทั้งหมดซ้ำและอนาคตใด ๆ ที่สร้างขึ้นที่นั่นโดยค่าเริ่มต้นมีสิทธิ์ 775 และเป็นของเจ้าของ / กลุ่มไม่มีใคร / admin ตามลำดับ ฉันเปิดใช้งาน ACL ติดตั้งแล้ว แต่ดูเหมือนจะไม่ได้รับคำสั่ง setfacl ให้ทำอย่างถูกต้อง มีความคิดว่าจะทำสิ่งนี้ได้อย่างไร?

คำตอบ:


62

ฉันพบสิ่งที่จริง ๆ แล้วจนถึงสิ่งที่ฉันขอแชร์ที่นี่เพื่อทุกคนที่ประสบปัญหานี้สามารถลองใช้วิธีแก้ไขปัญหานี้:

sudo setfacl -Rdm g:groupnamehere:rwx /base/path/members/
sudo setfacl -Rm g:groupnamehere:rwx /base/path/members/

Rคือเรียกซ้ำซึ่งหมายความว่าทุกสิ่งภายใต้ไดเรกทอรีนั้นจะมีกฎที่ใช้กับมัน
dเป็นค่าเริ่มต้นซึ่งหมายถึงรายการในอนาคตทั้งหมดที่สร้างขึ้นภายใต้ไดเรกทอรีนั้นให้ใช้กฎเหล่านี้ตามค่าเริ่มต้น mจำเป็นต้องมีการเพิ่ม / แก้ไขกฎ

คำสั่งแรกสำหรับรายการใหม่ (ดังนั้น d) คำสั่งที่สองสำหรับรายการเก่า / ที่มีอยู่ภายใต้โฟลเดอร์ หวังว่าสิ่งนี้จะช่วยให้ใครบางคนออกมาเพราะสิ่งนี้ค่อนข้างซับซ้อนและไม่ง่ายนัก


2
นี่คือสิ่งที่ฉันต้องการเพื่อให้เจ้าของไดเรกทอรี grandparent เพื่อให้สามารถปรับเปลี่ยนเนื้อหาของไดเรกทอรี grandchild ใหม่ได้อย่างถูกต้อง
Joost

หากคุณเป็นผู้ใช้ Rpi คนเดียวคุณสามารถแทนที่ g: groupname ด้วย pi: pi หรือเพียงแค่ pi
SDsolar

คุณสามารถระบุสำหรับผู้ใช้กลุ่มและอื่น ๆ -Rdm g:groupnamehere:rwx, -Rdm u:groupnamehere:rwxในหนึ่งบรรทัดเช่น
user2340939

18

ไปกับคำตอบที่คุณยอมรับ ...

คุณสามารถรวมคำสั่งเหล่านั้นเข้าด้วยกันเป็น:

sudo setfacl -Rm d:g:groupnamehere:rwx,g:groupnamehere:rwx /base/path/members/

ก็เท่ห์ ทำไมคุณd:ถึงเลือกไอเท็มชิ้นแรกมากกว่า-Rmd? ฉันสามารถบอกได้ว่าพารามิเตอร์ที่สองไม่ควรมีdefault- มันแปลกที่ linux ยอมรับฉัน
JREAM

1
@JREAM: ลินุกซ์ (จริงgetopt_long) ส่งอาร์กิวเมนต์ทั้งตัวเลือก-mซึ่งจะแยกวิเคราะห์ด้วยมือโดยsetfacl, แยกด้วยเครื่องหมายจุลภาคข้อโต้แย้งผ่าน พวกเขาจะถูกเพิ่มลงในรายการที่เชื่อมโยงซึ่งวนลูปผ่านในตอนท้ายเมื่อเปลี่ยน ACL จริง
เบอนัวต์ดัฟเชซ์

2

setfacl บน linux มี-dและ-kตัวเลือกสำหรับการจัดการการอนุญาตเริ่มต้นซึ่งอาจเป็นสิ่งที่คุณกำลังมองหา (ดูคนสำหรับข้อมูลเพิ่มเติม)


1

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

คุณสามารถบอกให้ผู้ใช้ใช้ชุด umask ของ 0002 และช่วยสร้างไฟล์ใหม่ที่ 0775 (ขึ้นอยู่กับแอพพลิเคชั่น) แต่มันไม่ได้บังคับใช้

ความเข้าใจของฉันคือ ACLs ไม่ได้รับการสืบทอดบนระบบ UNIX / Linux พวกเขาถูกตั้งค่าตามความต้องการ

สำหรับความเป็นเจ้าของไฟล์ / สารบบคุณโชคไม่ดีนักที่นี่

สำหรับความเป็นเจ้าของกลุ่มไฟล์ / ไดเรกทอรีโดยการตั้งค่าไดเรกทอรี set-gid bit (เช่น g + s ใน DIRECTORIES) สิ่งนี้จะทำให้ความเป็นเจ้าของกลุ่มได้รับการสืบทอด

สิ่งที่ฉันทำในสถานการณ์เช่นนี้คือการรันสคริปต์ cron รูทเป็นระยะซึ่งรีเซ็ตสิทธิ์ / ความเป็นเจ้าของที่ไม่เป็นไปตามมาตรฐานในไดเรกทอรีดังกล่าว

กระบวนการอื่น (ไม่แนะนำ) คือการใช้รหัสผู้ใช้เดียวกันเมื่อทำงานกับไฟล์เหล่านี้ สิ่งนี้สามารถทำได้โดยผู้ใช้ที่ล็อกอินเข้าสู่ระบบภายใต้ UID ของตัวเองแล้วใช้ sudo หรือ su เพื่อรันเป็น id นี่ยังคงไม่ได้ 100% โดยเฉพาะอย่างยิ่งที่เกี่ยวข้องกับ ACL และบิตการอนุญาต

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