สำหรับไฟล์ที่สร้างจากบัญชีtestuserในไดเรกทอรี / var / www ฉันต้องการให้มีg + rwxเป็นสิทธิ์และwww-dataเป็นกลุ่ม
ฉันจะบรรลุสิ่งนี้ได้อย่างไร
ฉันกำลังสร้างไฟล์ผ่าน SSH
สำหรับไฟล์ที่สร้างจากบัญชีtestuserในไดเรกทอรี / var / www ฉันต้องการให้มีg + rwxเป็นสิทธิ์และwww-dataเป็นกลุ่ม
ฉันจะบรรลุสิ่งนี้ได้อย่างไร
ฉันกำลังสร้างไฟล์ผ่าน SSH
คำตอบ:
ในการตั้งกลุ่มให้setgidบิต:/var/www
chgrp www-data /var/www
chmod g+s /var/www
หากต้องการปรับไดเรกทอรีย่อยด้วย: find /var/www -type d -exec chmod g+s {} +
สิ่งนี้จะทำให้ไฟล์ที่สร้างขึ้นใหม่ทั้งหมดสืบทอดกลุ่มของพาเรนต์ไดเร็กทอรีแทนที่จะเป็นของผู้ใช้
การกำหนดสิทธิ์กลุ่มเริ่มต้นคุณจะต้องใช้ACL ของ ตั้งค่า "เริ่มต้น" ACL:
setfacl -m "default:group::rwx" /var/www
หากต้องการปรับไดเรกทอรีย่อยด้วย: find /var/www -type d -exec setfacl -m d:g::rwx {} +
หมายเหตุ: ระบบไฟล์ต้องเปิดใช้งานการสนับสนุน ACL บางครั้งก็เปิดตามค่าเริ่มต้น ในext3หรือext4คุณอาจได้รับ "ไม่รองรับการทำงาน" ซึ่งในกรณีนี้จะต้องเปิดใช้งานด้วยตนเอง:
สำหรับระบบไฟล์ที่เมาท์ในปัจจุบัน: mount -o remount,acl /
อย่างถาวร - หนึ่งในวิธีการด้านล่าง:
ที่ระดับ fstab: แก้ไข/etc/fstab
ให้มีacl
ในฟิลด์ตัวเลือก
ที่ระดับระบบไฟล์: tune2fs -o acl /dev/diskname
chmod
จะได้รับไฟล์ทั้งหมดด้วย
install
จะจัดการเพื่อหลีกเลี่ยงไดเรกทอรีเริ่มต้น ACL
/var/www/html/projects
โฟลเดอร์และเมื่อ www-data สร้างไฟล์มันจะมีrw-rw-r
สิทธิ์ แต่เมื่อฉันทำอะไรในคอนโซลมันจะสร้างไฟล์rw-r--r
ขึ้นมา ฉันจะบังคับไฟล์ที่สร้างใหม่ให้มีrw-rw-r
สิทธิ์ได้อย่างไร
umask
สิทธิ์เริ่มต้นจะถูกควบคุมโดย สิทธิ์เริ่มต้นต่อไดเรกทอรีสามารถเปลี่ยนแปลงได้โดยใช้setfacl
ในการโพสต์หลัก
นี่อาจทำให้คนไม่กี่คนที่ติดอยู่กับคำตอบ 'grawity' ใน setgid หากกลุ่มของโฟลเดอร์นั้นแตกต่างจากของคุณคุณอาจต้องใช้ chmod เป็น root แต่คุณจะไม่ได้รับข้อผิดพลาดใด ๆ ที่ระบุว่าคุณต้องทำสิ่งนี้
$ 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 still wrong
$ 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 group is set
กลุ่มของไฟล์ที่สร้างโดยผู้ใช้คือกลุ่มของผู้ใช้นั้น (ใน / etc / group) การอนุญาตถูกควบคุมโดยพารามิเตอร์ UMASK ดูสิ่งนี้
stor
/appe
? ผ่าน HTTPPUT
หรือไม่ ผ่านบัญชีเชลล์? รายละเอียดเหล่านี้มีความสำคัญเนื่องจากมีผลกระทบอย่างมากต่อคำตอบที่เป็นไปได้และจำเป็นต้องอยู่ในคำถามของคุณ