การใช้ setfacl เพื่อให้สมาชิกกลุ่มสามารถเขียนไฟล์ใด ๆ ในไดเรกทอรี


12

ฉันต้องการใช้ setfacl เพื่อให้ทุกคนในกลุ่ม 'แอป' สามารถแก้ไขไฟล์ใด ๆ ที่มีอยู่ใน / usr / local / users / app โดยไม่คำนึงถึงสิ่งที่สิทธิ์ UNIX ดั้งเดิมพูด ฉันมีผู้ใช้สองคนคือจอห์นและเบ็น ฉันพยายามติดตามคำแนะนำจากคำถามอื่นแต่จอห์นไม่สามารถเขียนไปยังไฟล์บางไฟล์ได้ ดูเหมือนว่านี่เป็นเพราะหน้ากาก ACL อย่างไรก็ตามฉันได้ตั้งค่ามาสก์เริ่มต้นในไดเรกทอรีของ rwx แล้วไฟล์ในนั้นจะไม่สืบทอดเมื่อสร้าง

เช่น john ไม่สามารถเขียนไฟล์ด้านล่างนี้ได้ แต่เขาเป็นสมาชิกของกลุ่ม 'app' ที่มีการเขียน acls ลงในไฟล์ดังนั้นฉันจึงประหลาดใจที่เขาไม่สามารถแก้ไขไฟล์ได้

ben@app1:/usr/local/users$ ls -la app/app-1.0-SNAPSHOT/lib/play.templates_2.10-2.1.1.jar 
-rw-r--r--+ 1 ben users 38326 Apr  2 10:21 app/app-1.0-SNAPSHOT/lib/play.templates_2.10-2.1.1.jar

ben@app1:/usr/local/users/app$ getfacl app-1.0-SNAPSHOT/lib/
# file: app-1.0-SNAPSHOT/lib/
# owner: ben
# group: users
user::rwx
group::rwx          #effective:r-x
group:app:rwx       #effective:r-x
mask::r-x
other::r-x
default:user::rwx
default:group::rwx
default:group:app:rwx
default:mask::rwx
default:other::r-x

ben@app1:/usr/local/users$ getfacl app/app-1.0-SNAPSHOT/lib/play.templates_2.10-2.1.1.jar 
# file: app/app-1.0-SNAPSHOT/lib/play.templates_2.10-2.1.1.jar
# owner: ben
# group: users
user::rw-
group::rwx          #effective:r--
group:app:rwx       #effective:r--
mask::r--
other::r--

คำตอบ:


7

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

ตัวอย่างของสาเหตุที่คุณต้องการให้พฤติกรรมนี้เป็นเช่นถ้าคุณรู้ว่าไฟล์นั้นต้องการผู้ใช้ / กลุ่มที่แตกต่างกันเพื่อให้สามารถเข้าถึงได้ แต่ด้วยเหตุผลบางอย่างที่ซับซ้อนขึ้นด้วยการอนุญาตและคุณต้องการวิธีที่จะพูดว่า การอนุญาตเริ่มต้นถูกตั้งค่าเป็นไม่ว่าจะเป็นสมาชิกกลุ่มของพวกเขาหรืออะไรก็ตามที่ setfacl แบบเรียกซ้ำได้รับการดำเนินการในภายหลังไม่ จำกัด ไม่ให้สิ่งนี้ ! ผู้ใช้ที่เป็นเจ้าของมีสถานะพิเศษในโลก POSIX แต่ก็มีสิทธิ์ที่ผู้ใช้รายอื่นไม่มีเช่นความสามารถในการไม่ใช่สิทธิ์การใช้งานและเปลี่ยนสิทธิ์ไฟล์และมีสิทธิ์ไม่ถูก จำกัด โดยมาสก์ (ซึ่งจะเป็น อย่างไรก็ตามไม่มีจุดหมายเพราะสิทธิพิเศษครั้งแรกที่ระบบมอบให้) นี่คือเหตุผลที่พวกเขายังคงได้รับ rwx แม้ว่าหน้ากากถูก จำกัด

หากต้องการตอบคำถามเฉพาะของคุณให้เพิ่มบิตการเขียนลงในหน้ากากบนไฟล์แล้วลองอีกครั้งในฐานะjohnผู้ใช้

นี่คือรุ่นบรรทัดคำสั่งของคำอธิบายข้างต้นโปรดสังเกตว่าสิทธิในการเปลี่ยนแปลง "ประสิทธิภาพ" เมื่อใดก็ตามที่ฉันแก้ไขเป็นมาสก์


ขอขอบคุณ. ฉันซาบซึ้งในคำตอบ เป็นไปได้หรือไม่ที่ไฟล์ใหม่จะถูกสร้างด้วยรูปแบบเริ่มต้นของ rwx? ฉันได้แก้ไขคำถามของฉันพร้อมรายละเอียดเพิ่มเติมอีกสองสามข้อ
Ben McCann

ใช่หน้ากากเป็นหนึ่งในหมวดหมู่ (เช่นผู้ใช้และกลุ่ม) ที่คุณสามารถตั้งค่า ACL เริ่มต้นได้ มาสก์เริ่มต้นควรสืบทอดไปยังไดเรกทอรีย่อยและนำไปใช้กับไฟล์ต่างๆ ตัวอย่าง: setfacl -md: m :: rwx / path / to / Dir
Bratchley

ACL เริ่มต้นกำลังสืบทอดไปยังไดเรกทอรีย่อย แต่ไม่ใช่ไฟล์ทำให้ ACL ไม่มีประโยชน์อย่างสมบูรณ์ :-(
Ben McCann

เพื่อให้แน่ใจว่าเรากำลังพูดถึงสิ่งเดียวกันคุณกำลังพูดถึง acl เริ่มต้นสำหรับรายการหน้ากาก? นี่คือสิ่งที่ฉันได้รับจากการทดสอบ
Bratchley

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

0

มันเป็นไปไม่ได้. cp, rsync ฯลฯ สร้างไฟล์โดยไม่คำนึงถึง ACL เริ่มต้น

เหตุใด cp ไม่เคารพ ACL


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

นรกคือคุณสามารถเห็นรายการ ACL ที่พวกเขาพูดถึงมันเป็นเพียงสิทธิ์ที่มีประสิทธิภาพที่พวกเขาคาดหวังที่จะเห็นไม่ได้อยู่ที่นั่น นั่นเป็นโอกาสที่ดีที่จะพูดว่า "เฮ้เพื่อนลองมาส์กของคุณ"
Bratchley

1
ที่จริงแล้วฉันคิดว่ามันดูเหมือนว่า EvilRyry โพสต์เกี่ยวกับหน้ากากและ OP ก็ตอบกลับด้วย "มันไม่ทำงาน" จากนั้นโพสต์เอาท์พุท getfacl ที่ดูเหมือนว่าจะแสดงว่า "felles" ได้รับ rwx บนไฟล์ ในอัตรานี้คำตอบที่โหวตสูงสุดไม่ตรงกับประสบการณ์ส่วนตัวของฉันและสิ่งที่ฉันแสดงไว้ที่นี่พร้อมตัวอย่างคำสั่ง
Bratchley
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.