ตั้งกลุ่มเริ่มต้นสำหรับผู้ใช้เมื่อพวกเขาสร้างไฟล์ใหม่?


36

ฉันมักจะพบว่าตัวเองไฟล์ chown-ing เมื่อฉันสร้างพวกเขาผ่าน SSH และพวกเขาเป็นเจ้าของโดยjm:jmตัวอย่างเช่น

จากนั้นเพื่อให้ Apache เข้าถึงได้ฉันต้องทำเช่นchown jm:www-dataนั้น

ฉันแน่ใจว่าฉันสามารถระบุได้ว่าเมื่อฉันสร้างไฟล์แทนที่จะใช้กลุ่มภายใต้ชื่อของฉันให้ระบุชื่ออื่นหรือไม่

หรือมีวิธีที่ดีกว่าในการจัดการผู้ใช้ / กลุ่ม?

คำตอบ:


73

หากคุณต้องการให้ไฟล์ใหม่ทั้งหมดในไดเรกทอรีเฉพาะเป็นของกลุ่มใดกลุ่มหนึ่งให้ใช้setgidบิตนั้น:

chgrp www-data /some/dir
chmod g+s /some/dir

หากคุณมีแผนผังของไดเรกทอรีที่มีอยู่ซึ่งคุณต้องการใช้ลักษณะการทำงานนี้กับคุณสามารถทำได้ด้วยfind:

find /some/dir -type d -exec chgrp www-data {} +
find /some/dir -type d -exec chmod g+s {} +

(หากกลุ่มนั้นเป็นเจ้าของไดเรกทอรีที่เกี่ยวข้องอยู่แล้วคุณสามารถละเว้นคำสั่งแรกในตัวอย่างทั้งสองนี้)


1
คำตอบที่ดี! คุณช่วยอธิบายความ... {} +หมายของสัญลักษณ์ได้อย่างไร?
Alexander Lomia

3
พวกเขาขัดแย้งกับfindคำสั่งที่ครอบคลุมในหน้าคน สำหรับการเรียกใช้ครั้งแรกคำสั่งจะเรียกใช้คำสั่งchgrp www-dataผนวกผลลัพธ์จำนวนหนึ่งเป็นอาร์กิวเมนต์ (แทนที่จะเรียกใช้คำสั่งหนึ่งครั้งสำหรับแต่ละผลลัพธ์ตามที่คุณต้องการ{} \;)
James Henstridge

6
ทำไมไม่ใช้chmod g+s /some/dir -R? เพิ่งทดสอบและดูเหมือนว่าจะทำงาน
Cragmonkey

13
@Cragmonkey: ที่จะตั้ง setgid บิตในไฟล์ปกติ หากมีสิ่งใดเกิดขึ้นที่จะถูกเรียกใช้งานสิ่งนี้จะอนุญาตให้ผู้ใช้รายอื่นในระบบได้รับสิทธิพิเศษของกลุ่มที่เป็นเจ้าของไฟล์
James Henstridge
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.