จะตั้งค่าการอนุญาตไฟล์เริ่มต้นสำหรับโฟลเดอร์ / ไฟล์ทั้งหมดในไดเรกทอรีได้อย่างไร?


254

ฉันต้องการตั้งค่าโฟลเดอร์เพื่อให้ทุกสิ่งที่สร้างขึ้นภายใน (ไดเรกทอรีไฟล์) สืบทอดการอนุญาตเริ่มต้นและกลุ่ม

ให้เรียกกลุ่ม "สื่อ" และโฟลเดอร์ / ไฟล์ที่สร้างขึ้นภายในไดเรกทอรีควรมี g + rw โดยอัตโนมัติ


1
นั่นไม่ได้ถูกควบคุมโดยผู้ใช้ที่สร้างไฟล์ / โฟลเดอร์ใหม่และ umask ของเขา
Wadih M.

umask เกี่ยวข้องกับการอนุญาต แต่ฉันไม่เชื่อว่ามันจะทำอะไรกับการตั้งค่ากลุ่มเริ่มต้นที่ไม่ใช่ผู้ใช้ด้วยตนเอง
คริส

1
ระบบปฏิบัติการอะไร แท็กที่จำเป็น setfaclและ ACLs ดีฟอลต์ไม่มีอยู่บน AIX
Amit Naidu

คำตอบ:


269

ฉันพบมัน: การใช้สิทธิ์เริ่มต้น

จากบทความ:

chmod g+s <directory>  //set gid 
setfacl -d -m g::rwx /<directory>  //set group to rwx default 
setfacl -d -m o::rx /<directory>   //set other

ต่อไปเราสามารถตรวจสอบ:

getfacl /<directory>

เอาท์พุท:

# file: ../<directory>/
# owner: <user>
# group: media
# flags: -s-
user::rwx
group::rwx
other::r-x
default:user::rwx
default:group::rwx
default:other::r-x

5
เย้ยหยัน!
เกบ

22
ช่วยไม่ให้สับสนกับ gid บิตเหนียว
มิตไน

10
g + s จะทำให้แน่ใจว่าเนื้อหาใหม่ในไดเรกทอรีจะสืบทอดความเป็นเจ้าของกลุ่ม setfacl เปลี่ยนเฉพาะ chmod ในกรณีของคุณกำหนดสิทธิ์เป็น o = rx
Steen Schütt

10
โปรดทราบว่าจะต้องเปิดใช้งาน ACL (รวมเป็นหนึ่งในตัวเลือกการเมาท์สำหรับระบบไฟล์ที่เมาท์) สำหรับการอนุญาตให้ใช้ไฟล์ที่จะสืบทอด
sg23

11
คุณอาจต้องการพิจารณาใช้ 'X' แทนดังนั้นจึงจะตั้งค่าสิทธิ์ดำเนินการในไดเรกทอรีที่ไม่ใช่ไฟล์เท่านั้นsetfacl -d -m g::rwX /<directory>
Adrian Gunawan

27

นี่คือคำตอบเพิ่มเติมของ Chris มันขึ้นอยู่กับประสบการณ์ของฉันบนอุปกรณ์ Linux Linux ของฉัน

การใช้สวิตช์เริ่มต้น (-d) และสวิตช์ปรับเปลี่ยน (-m) จะปรับเปลี่ยนเฉพาะการอนุญาตเริ่มต้น แต่ปล่อยให้มีอยู่เดิม:

setfacl -d -m g::rwx /<directory>

หากคุณต้องการเปลี่ยนโครงสร้างการอนุญาตทั้งหมดของโฟลเดอร์รวมถึงโครงสร้างที่มีอยู่เดิม (คุณจะต้องทำบรรทัดเพิ่มเติมและทำให้มันซ้ำ -R:

setfacl -R -m g::rwx /<directory>

เช่น.

setfacl -R -m g::rwx /home/limited.users/<directory> // gives group read,write,exec permissions for currently existing files and folders, recursively
setfacl -R -m o::x /home/limited.users/<directory> //revokes read and write permission for everyone else in existing folder and subfolders 
setfacl -R -d -m g::rwx /home/limited.users/<directory> // gives group rwx permissions by default, recursively
setfacl -R -d -m o::--- /home/limited.users/<directory> //revokes read, write and execute permissions for everyone else. 

( เครดิตเพื่อ markdwite ในความคิดเห็นสำหรับ synthax ของการเพิกถอนสิทธิพิเศษทั้งหมด)


2
ในการเพิกถอนสิทธิ์ของกลุ่ม (เป็นตัวอย่าง): sudo setfacl -d -mg :: --- / path
markdwhite

1
นั่นเป็นเพียงพิมพ์ผิดที่ระบุsetfacl -R -m g::rwx /<directory>สองครั้งในคำตอบของคุณ?
Shane Rowatt

0

เพิ่มตัวคุณเอง / ผู้ใช้ที่เข้าสู่กลุ่ม www-data ดังนั้นเราจึงสามารถทำงานกับไฟล์ที่สร้างขึ้นโดยเซิร์ฟเวอร์ www-data

sudo usermod -a -G www-data $USER

จำเป็นต้องรีสตาร์ท / relogin เพื่อให้กลุ่มที่เพิ่มใหม่มีผลบังคับใช้

cd /var/www

เพิ่ม www-data เป็นสมาชิกกลุ่มของโฟลเดอร์ html และผู้ใช้ของคุณในฐานะเจ้าของดังนั้นเราจึงเป็นเจ้าของและสมาชิกกลุ่ม

sudo chown -R $USER:www-data html

ใส่ชื่อผู้ใช้ของคุณแทน USER

ตั้งค่าอ่าน, เขียน, ดำเนินการอนุญาตตามที่ต้องการ, (ugo) u = user, g = group, o = others

sudo chmod 750 html

ตั้งค่า GID ของ html ตอนนี้ไฟล์ที่สร้างขึ้นใหม่ใน html จะได้รับสิทธิ์การเป็นเจ้าของ:

sudo chmod g+s html

สิ่งนี้จะสร้างกฎเริ่มต้นสำหรับไฟล์ / dirs ที่สร้างขึ้นใหม่ภายในไดเรกทอรี html และไดเรกทอรีย่อย

sudo setfacl -R -d -m u::rwX -m g::rX -m o::000 html

ทำให้ SELinux ติดตั้งไว้โดยไม่สนใจข้อกำหนดบริบท www-data เพื่อให้อนุญาตการเขียน

sudo setsebool -P httpd_unified 1

รายการไดเรกทอรีเพื่อดูสิทธิ์ใหม่ที่นำไปใช้

ls -ld html

คืนค่านี้

drwxrwsr-x+   3 html www-data

ส่วนท้าย + หมายถึง ACL ซึ่งเป็นรายการควบคุมการเข้าถึงตั้งอยู่ในไดเรกทอรี

การอ้างอิง :ลิงก์ไปยังฟอรัม


-2

การใช้คำสั่งต่อไปนี้คุณสามารถตั้งค่าการอนุญาตเริ่มต้นเป็นไฟล์:

chacl -R filename

3
สิ่งนี้แตกต่างจากคำตอบอื่น ๆ อย่างไร และยกตัวอย่างบางอย่าง
Romeo Ninov

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