ตัวพิมพ์ใหญ่ S ในสิทธิ์ของโฟลเดอร์


43

ตัวอักษรSหมายถึงอะไรด้านล่าง? ไฟล์ที่สงสัยคือโฟลเดอร์

                                                                ป้อนคำอธิบายรูปภาพที่นี่

ฉันอ่านที่นี่ว่าตัวพิมพ์ใหญ่Sสามารถแทนได้ว่าsetgidบิตนั้นแอ็คทีฟสำหรับไบนารีที่ปฏิบัติการได้ แต่นี่เป็นโฟลเดอร์ มันยังหมายความว่าsetgidบิตถูกเปิดใช้งานหรือไม่ ถ้าเป็นเช่นนั้นนั่นหมายความว่าอย่างไร

คำตอบ:


36

นั่นหมายความว่าไฟล์ใด ๆ ที่ถูกดร็อปไว้ในโฟลเดอร์จะอยู่ในกลุ่มที่เป็นเจ้าของ

ตัวอย่างเช่นสมมติว่าคุณมีโฟลเดอร์ชื่อ "shared" ซึ่งเป็นของผู้ใช้ "intrpc" และกลุ่ม "users" และคุณ (ในฐานะผู้ใช้ "initrpc") วางไฟล์ลงไป ดังนั้นไฟล์จะเป็นของผู้ใช้ "intrpc" และกลุ่ม "ผู้ใช้" โดยไม่คำนึงถึงกลุ่มหลักของ "initrpc"

บนระบบส่วนใหญ่หากบิต set-group-ID ของไดเรกทอรีถูกตั้งค่าไฟล์ย่อยที่สร้างขึ้นใหม่จะสืบทอดกลุ่มเดียวกับไดเรกทอรีและไดเรกทอรีย่อยที่สร้างขึ้นใหม่จะสืบทอดบิต set-group-ID ของไดเรกทอรีหลัก

คุณสามารถอ่านเกี่ยวกับเรื่องนี้ที่นี่

ทำไมตัวอักษรตัวพิมพ์ใหญ่ (จากลิงก์ที่คุณให้)

setgid ไม่มีผลหากกลุ่มไม่มีสิทธิ์ดำเนินการ setgid แสดงด้วยตัวพิมพ์เล็ก "s" ในผลลัพธ์ของ ls ในกรณีที่ไม่มีผลกระทบจะแสดงด้วยตัวพิมพ์ใหญ่ "S"


นี่คือคำอธิบายที่ดีของ setgid ที่นำไปใช้กับไดเรกทอรี
Matthias Braun

2
ฉันคิดว่ามันเป็นความเข้าใจผิดที่จะพูดsetgid has no effect if the group does not have execute permissionsเพราะมันไม่ได้มีผลกระทบ เพียงเพิ่มไฟล์ลงในไดเรกทอรีในฐานะเจ้าของไดเรกทอรี: ไฟล์จะมีกลุ่มของไดเรกทอรีแทนกลุ่มหลักของเจ้าของ
Matthias Braun

12

ตัวพิมพ์ใหญ่ S เป็นเพราะไดเรกทอรีไม่มีสิทธิ์ดำเนินการสำหรับกลุ่ม ในวิธีนี้บ่งชี้ว่า "ข้อผิดพลาด" ตามที่คุณพูด:

ไฟล์ย่อยที่สร้างขึ้นใหม่สืบทอดกลุ่มเดียวกับไดเรกทอรีและไดเรกทอรีย่อยที่สร้างขึ้นใหม่สืบทอดบิต set-group-ID ของไดเรกทอรีหลัก

(ที่มา: https://www.gnu.org/software/coreutils/manual/html_node/Directory-Setuid-and-Setgid.html )

อย่างไรก็ตามคุณปฏิเสธการอนุญาตให้สมาชิกกลุ่มเข้าสู่ไดเรกทอรี

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