หมายเลขแรกของอะไรในอาร์กิวเมนต์ chmod 4 หมายเลข (เช่น `chmod 4555`)


20

chmod 4555เมื่อติดตั้งโปรแกรมก็แนะนำให้ผมทำ โอเคฉันรู้เกี่ยวกับค่าถ้าฉันใช้ตัวเลขสามตัว ตัวอย่างเช่น

chmod 555 test-file

จะให้

-r-xr-xr-x

4 สำหรับการเขียน 2 สำหรับการอ่านและ 1 สำหรับการดำเนินการ แต่เมื่อฉันทำสิ่งนี้:

chmod 4555 test-file

มันให้ฉัน

-r-sr-xr-x

ดังนั้นเปลี่ยนไปx sมันหมายความว่าอะไร?


1
อธิบายด้วยที่นี่: askubuntu.com/a/550947/72216 ("เกี่ยวกับ s- flag")
Jacob Vlijm

@JacobVlijm ยังอธิบายเพิ่มเติมในเชิงลึกกับบิต "พิเศษ" อื่น ๆ ด้านล่าง
โทมัสวอร์ด

คำตอบ:


29

มีจริง 4 chmodชุดแอตทริบิวต์คุณสามารถทำงานกับทาง

Special, User/Owner, GroupและOthersเพื่อที่ว่าเมื่อทำงานร่วมกับ chmods หมายเลขสี่มีจำนวนแรกที่เป็นบิตพิเศษที่สามารถเป็นชุด

chmod 4555 เท่ากับดังต่อไปนี้:

  • Set UID บิต - เรียกใช้ไฟล์ในฐานะเจ้าของโดยไม่คำนึงว่าผู้ใช้รายใดกำลังเรียกใช้
  • ผู้ใช้ / เจ้าของ: Read, Execute
  • กลุ่ม: Read, Execute
  • อื่น ๆ : Read, Execute

sใน 'คนอ่าน' สายของคุณสำหรับสิทธิ์บ่งชี้ว่าSetUIDบิต (อธิบายด้านล่าง) เป็นชุด


อย่างมีประสิทธิภาพเราสามารถแยกchmodอาร์กิวเมนต์การอนุญาตสี่หมายเลขเป็นตัวอธิบายเฉพาะดังนี้และทำการคำนวณทางคณิตศาสตร์เพื่อกำหนดว่า a 4ในส่วนแรกจะเป็นอย่างไร5ในส่วนถัดไปและอื่น ๆ

โปรดทราบว่า####เป็นSpecial User/Owner GroupและOthersอยู่ในลำดับที่

สำหรับSpecialแอ็ตทริบิวต์ (หมายเลขแรกในchmodอาร์กิวเมนต์สี่หมายเลข):

  • Set UID- เรียกใช้ไฟล์ในฐานะเจ้าของโดยไม่คำนึงถึงผู้ใช้ที่เรียกใช้ (แสดงsในสตริงสิทธิ์ที่มนุษย์อ่านได้สำหรับUserส่วน) = +4 ( --sใต้User/Owner)
  • Set GID- เรียกใช้ไฟล์เป็นกลุ่มโดยไม่คำนึงถึงผู้ใช้ / กลุ่มที่ใช้งานไฟล์นั้น (แสดงsในสตริงสิทธิ์ที่มนุษย์อ่านได้สำหรับGroupส่วน) = +2 ( --sใต้Group)
  • Sticky Bit- มีประสิทธิภาพเฉพาะกับไดเรกทอรีเท่านั้น - หากตั้งค่าเฉพาะผู้ใช้ที่เป็นเจ้าของไดเรคทอรี่และrootสามารถลบไดเรคทอรี่และเฉพาะเจ้าของไฟล์หรือrootสามารถลบไฟล์ที่อยู่ข้างในได้ (แสดงtในสตริงสิทธิ์ที่มนุษย์อ่านได้สำหรับOthersส่วน) = +1 ( --tใต้Others)

สำหรับUser/Owner, GroupและOthersคุณลักษณะ (ช่วงสามตัวเลขในจำนวนสี่chmodอาร์กิวเมนต์):

  • Read= +4 ( r--)
  • Write= +2 ( -w-)
  • Execute(สำหรับไฟล์) หรือ 'Enter Into / List Items' (สำหรับไดเรกทอรี) = +1 ( --x)

7

มันเรียกว่าSETUIDบิต ถ้ามันถูกกำหนดโดยchmod 4555 test-file(ในกรณีของคุณ) จากนั้นผู้ใช้test-fileสามารถดำเนินการได้ราวกับว่าผู้ใช้เป็นเจ้าของไฟล์

เมื่อSETUIDตั้งค่าบิตแล้ว ID ผู้ใช้ที่มีประสิทธิภาพ ( EUID) ของผู้ใช้ที่ไม่ได้รับอนุญาตให้เรียกใช้ไฟล์เป็นอย่างอื่น (โดยการอนุญาตปกติเช่น0744) รับ EUID ของเจ้าของไฟล์และสามารถเรียกใช้ไฟล์ได้

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