การทำให้มั่นใจว่าไฟล์ใหม่ในไดเรกทอรีเป็นของกลุ่ม


67

ฉันต้องการสร้างไดเรกทอรีที่แชร์เมื่อมีผู้ใช้จำนวนหนึ่ง (ทั้งหมดบอกว่าเป็น mygroup) สามารถสร้างและแก้ไขไฟล์ได้ ฉันต้องการให้ไฟล์ทั้งหมดในไดเรกทอรีนี้และไดเรกทอรีย่อยเป็นของmygroup

ฉันเปลี่ยนไฟล์ที่มีอยู่เพื่อให้กลุ่มmygroupใช้อยู่chgrpแต่ไฟล์ใหม่ยังคงถูกสร้างขึ้นเป็นของกลุ่มหลักของผู้ใช้ มีวิธีการตรวจสอบไฟล์ใหม่ที่เป็นของกลุ่มโดยไม่ต้องรัน chgrp ซ้ำ ๆ

คำตอบ:


108

คุณต้องการตั้งค่าบิต SetGID

chmod g+s dir

ไฟล์ใหม่ทั้งหมดที่สร้างในไดเรกทอรีจะมีกลุ่มตั้งไว้ที่กลุ่มของไดเรกทอรี

โพสต์บล็อก superuserอธิบายบิตเหนียวและบิตสิทธิ์ Linux อื่น ๆ :

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


1
ขอบคุณ การอ้างอิงมีประโยชน์ อธิบายคำสั่ง umask ที่เป็นส่วนหนึ่งของภาพ
justintime

4
สิ่งที่เกี่ยวกับการสร้างไดเรกทอรีย่อยในไดเรกทอรีเริ่มต้นซึ่งเป็นของกลุ่มของไดเรกทอรีหลักหรือไม่ เป็นไปได้ไหม
daaxix

@ คำตอบของลุคข้างล่างเป็นสิ่งสำคัญที่จะไม่สับสนเมื่อสิ่งนี้ล้มเหลวในความเงียบ: ใช้ sudo
Rhubarb


11

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

โดยไม่ต้อง sudo

$ ls -ld dir
drwxrwxr-x 2 luke testgroup 4096 Mar  9 10:44 dir

$ chmod g+s dir                                     # no errors

$ ls -ld dir
drwxrwxr-x 2 luke testgroup 4096 Mar  9 10:44 dir   # but nothing changed

$ touch dir/nosudo && ls -l dir/
-rw-rw-r-- 1 luke luke 0 Mar  9 10:51 nosudo        # and the group is set wrong

ด้วย sudo

$ sudo chmod g+s dir

$ ls -ld dir
drwxrwsr-x 2 luke testgroup 4096 Mar  9 10:44 dir   # the setgid bit is now on

$ touch dir/withsudo && ls -l dir/
-rw-rw-r-- 1 luke luke      0 Mar  9 10:51 nosudo
-rw-rw-r-- 1 luke testgroup 0 Mar  9 10:51 withsudo # and the group is set right
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.