ฉันจะล้างการอนุญาต“ s” ในไดเรกทอรีใน Linux ได้อย่างไร


24

drwsrwsr-xฉันมีไดเรกทอรีที่มีการแสดงขึ้นมาพร้อมกับหน้ากากที่ได้รับอนุญาต เมื่อฉันพยายามที่จะตั้งค่าการอนุญาตไป755ยัง S ยังคงอยู่

"s" คืออะไรและเพราะเหตุใดฉันจึงไม่สามารถเปลี่ยนการอนุญาตกลับเป็น 775 ( drwxrwxr-x)

คำตอบ:


25

สิ่งที่คุณเห็นในตำแหน่ง "เรียกใช้" ในคอลัมน์ผู้ใช้และกลุ่มคือบิต SetUID (ตั้งค่า ID ผู้ใช้ในการดำเนินการ) และ SetGID (ตั้งค่า Group ID เมื่อดำเนินการ)

การอนุญาตให้ใช้ไฟล์ Unix นั้นเป็นเลขฐานแปด 4 หลัก SUGO

  • Sควบคุมบิต SetUID (4), SetGID (2) และ "Sticky" (1)
  • ตัวควบคุมUอ่าน (4) / เขียน (2) / ดำเนินการ (1) บิตสำหรับเจ้าของไฟล์
  • Gควบคุมบิตการอ่าน / เขียน / เรียกใช้สำหรับกลุ่มของไฟล์
  • Oควบคุมการอ่าน / เขียน / เรียกใช้บิตสำหรับทุกคน

คุณสามารถลบบิต setuid ออกจากไดเรกทอรีของคุณด้วยchmod ug-s directoryหรือchmod 0755 directory

สำหรับข้อมูลเพิ่มเติมโปรดดูที่หน้าชายchmodและหน้าวิกิพีเดียเกี่ยวกับบิต setuid



"drwsrwsrwx คืออะไร" <- ตรวจสอบอีกครั้ง
Hrvoje Špoljar

6
chmod 0755ไม่ได้ล้างบิต setuid อย่างน้อยไม่ได้อยู่ในลินุกซ์ ฉันกำลังทดสอบระบบอื่น
FUZxxl

1
POSIX บอกว่ามันใช้งานได้กำหนดไว้สำหรับประเภทไฟล์อื่นที่ไม่ใช่ไฟล์ปกติไม่ว่าจะchmodมีโหมด octamal ล้างบิต setuid, setgid และ vtx
FUZxxl

2
เพื่อล้างบิต setuid บนไดเรกทอรีบน Linux ให้ใช้chmod 00755; ดูunix.stackexchange.com/q/393531/46851
Roger Lipscombe

23

setuid และ setgid

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

ในการลบบิต setuid และ setgid เป็นตัวเลขคุณต้องนำหน้ารูปแบบบิตด้วย0(เช่น: 0775กลายเป็น00775)

รันเพื่อลบ setuid และ setgid:

chmod 00775 path

หรือ

chmod a-st path

มันอยู่ในไดเรกทอรีไม่ใช่ไฟล์
Hrvoje Špoljar

1
ไดเรกทอรียังเป็นแฟ้มในระบบแฟ้มยูนิกซ์เป็นสิ่งที่ ooshro กล่าวว่ามีความถูกต้องสมบูรณ์
lynxman

ใช่มันคือไฟล์ทั้งหมด แต่คำอธิบายนั้นไม่พอดีเนื่องจากคุณไม่ต้องดำเนินการบางอย่างที่ดูเหมือน drwxrwxr-x: |
Hrvoje Špoljar

ในยูนิกซ์ inode เป็นสิ่งที่ได้รับอนุญาต
chris

2
GNU chmod ไม่ได้ล้างค่า setuid และ setgid ไบต์ในไดเรกทอรีเมื่อคุณรันด้วยโหมด octamal POSIX อนุญาตพฤติกรรมนี้
FUZxxl

2

กำลังเพิ่มคำตอบของ ooshro ...

หากคุณใช้สิทธิ์ suid หรือ sgid ในไดเรกทอรีไฟล์ใด ๆ ที่สร้างขึ้นภายในไดเรกทอรีนั้นจะมีเจ้าของคนเดียวกัน (ถ้า suid) หรือกลุ่ม (sgid) เป็นไดเรกทอรีที่มีปัญหา

ฉันใช้สิ่งนี้เพื่อแบ่งปันในแซมบ้าที่บ้าน ไดเรกทอรีฐานเป็นของผู้ใช้และกลุ่ม olympia ไม่มีผู้ใช้และสิทธิ์เป็น 2770 ดังนั้นคุณต้องอยู่ในกลุ่ม olympia เพื่ออ่านหรือเขียนอะไรด้านล่างไดเรกทอรีนั้นและมันจะทำให้แน่ใจว่า olympia เป็นกลุ่มของทุกสิ่งที่อยู่ด้านล่าง . ฉันยังมี Samba ที่กำหนดค่าให้ใช้ dirmask 2770 และ filemask 660 เพื่อให้สิทธิ์ถูกต้องตลอดทางจนถึงต้นไม้

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