หลักแรกสำหรับสัญกรณ์อนุญาตให้ใช้ไฟล์ Unix แบบฐานแปด 4 หลักคืออะไร?


คำตอบ:


48

จากman chmod:

โหมดตัวเลขมาจากตัวเลขฐานแปดถึงหนึ่งถึงสี่ (0-7) ซึ่งได้มาจากการเพิ่มบิตด้วยค่า 4, 2 และ 1 ตัวเลขที่ตัดออกใด ๆ จะถือว่าเป็นศูนย์นำหน้า ตัวเลขตัวแรกจะเลือก ID ผู้ใช้ชุด (4) และตั้งค่ากลุ่ม ID (2) และแอ็ตทริบิวต์เหนียว (1)

"set user ID", "set group ID" และ "sticky" คืออะไรคุณถาม?

setuid / setgid :

setuid และ setgid (ย่อมาจาก "set user ID เมื่อเรียกใช้งาน" และ "set group ID เมื่อเรียกใช้งาน" ตามลำดับ) คือค่าสถานะการเข้าถึง Unix ที่อนุญาตให้ผู้ใช้เรียกใช้งานไฟล์ได้ด้วยสิทธิ์ของเจ้าของหรือกลุ่มของไฟล์ปฏิบัติการ พวกเขามักจะใช้เพื่อให้ผู้ใช้ในระบบคอมพิวเตอร์เพื่อเรียกใช้โปรแกรมที่มีสิทธิ์ยกระดับชั่วคราวเพื่อดำเนินงานที่เฉพาะเจาะจง แม้ว่าสิทธิ์ของ ID ผู้ใช้หรือรหัสกลุ่มที่ระบุจะไม่ได้รับการยกระดับเสมอไป

นอกจากนี้เมื่อนำไปใช้กับไดเรกทอรี setuid / setgid ทำให้เกิดไฟล์ใหม่ที่สร้างขึ้นในไดเรกทอรีเพื่อสืบทอด uid หรือ gid ตามลำดับของไดเรกทอรีหลัก พฤติกรรมนี้แตกต่างกันไปตามรสชาติของยูนิกซ์ ตัวอย่างเช่น linux ให้เกียรติ setgid แต่ไม่สนใจ setuid บนไดเรกทอรี

และเหนียว :

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


12

Setgid มีฟังก์ชั่นที่สำคัญอีกอย่างที่ฉันต้องพึ่งพาทุกวัน แต่ไม่รวมอยู่ในข้อความที่ตัดตอนมาของ Handyman5 (ข้อความอ้างอิงมาจากหน้าเดียวกันที่ลิงก์ด้านบน):

ธง setuid และ setgid เมื่อตั้งค่าในไดเรกทอรีมีความหมายที่แตกต่างกันอย่างสิ้นเชิง

การตั้งค่าการอนุญาต setgid ในไดเรกทอรี (chmod g + s) ทำให้ไฟล์และไดเรกทอรีย่อยใหม่สร้างขึ้นเพื่อรับรหัสกลุ่มแทนที่จะเป็น ID กลุ่มหลักของผู้ใช้ที่สร้างไฟล์ (ID เจ้าของไม่ได้รับผลกระทบเท่านั้น รหัสกลุ่ม) ไดเรกทอรีย่อยที่สร้างขึ้นใหม่สืบทอดบิต setgid

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

[root@foo]# find /path/to/directory -type d -exec chmod g+s {} \;

chmod g+sจะหมายถึงการเพิ่ม 2 ที่ด้านหน้าของค่าฐานแปดทำให้ไดเรกทอรีที่มีสิทธิ์ 775 ( drwxrwxr-x) เป็น 2775 ( drwxrwsr-x)


2
FYI: MacOS X ทำงานเสมือนว่าบิต SGID เปิดอยู่ในไดเรกทอรีเสมอ
Jonathan Leffler

4

นอกเหนือจากคำตอบอื่น ๆ แล้วผู้นำ 0 คือการประชุมที่ใช้ในการบอกตัวเลขเป็นฐานแปด ไม่จำเป็นต้องใช้ที่นี่เนื่องจากการอนุญาตให้ใช้ไฟล์จะแสดงเป็นเลขฐานแปดเสมอ แต่อาจเป็นอีกสาเหตุหนึ่งว่าทำไมจึงมีอยู่


2

ต่อไปนี้เป็นเครื่องคำนวณการอนุญาต Limux / Unix ที่ใช้งานง่ายเพื่อช่วยให้คุณทราบถึงการอนุญาตของไฟล์หรือไดเรกทอรี


เพียงโพสต์ลิงก์ที่ขมวดคิ้ว คุณควรโพสต์เนื้อหาที่เกี่ยวข้องแล้วอ้างอิงแหล่งที่มาของคุณ
MDMarra

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