chmod -u ทำอะไรได้บ้าง


19

โดยอุบัติเหตุฉันวิ่งและมันออกทั้งหมดของสิทธิ์ที่ฉันมีในchmod -u filenamefilename

หน้าคนไม่ได้อ้างอิง-uตัวเลือก การทดลองฉันสามารถสรุปได้ว่ามันไม่ได้ลบสิทธิ์ทั้งหมด แต่เพียงแค่อ่านและดำเนินการเข้าถึงโดยปล่อยให้การเข้าถึงการเขียนยังคงอยู่

แล้วมันทำอะไรกันแน่


ข้อสรุปข้างต้นของฉันผิดฉันคิดว่าการลบสิทธิ์ที่เจ้าของมีจากทุกหมวดหมู่คืออะไร


ฉันคิดว่าพฤติกรรมนั้นคล้ายคลึงกับa=uแต่มีเพียง-แทนที่จะเป็น=และaสามารถถูกทิ้งได้เช่นเดียวกับที่a+xทำได้


6
+1สำหรับถามคำถามพื้นฐานที่ไม่ได้อยู่ในหน้าคน

1
"รูปแบบของโหมดสัญลักษณ์ [ugoa...][[-+=][perms...]...]ที่perms เป็นทั้งตัวอักษรจากชุดที่ศูนย์หรือมากกว่าrwxXst, หรือตัวอักษรเดียวจากชุดugo " (GNU chmod หน้าคน); POSIX ค่อนข้างคลุมเครือ แต่กำหนดการผลิตแบบ "permcopy" สำหรับเอฟเฟกต์เดียวกัน
Michael Homer

1
@MichaelHomer ไม่พูดในสิ่งที่มันทำ
y_wc

1
@y_wc "แทนที่จะใช้ตัวอักษรเหล่านี้ตั้งแต่หนึ่งตัวขึ้นไปคุณสามารถระบุตัวอักษรugoหนึ่งตัว: การอนุญาตที่ให้แก่ผู้ใช้ที่เป็นเจ้าของไฟล์ ( u), การอนุญาตที่ให้แก่ผู้ใช้อื่น ๆ ที่เป็นสมาชิกของกลุ่มของไฟล์ ( g) และสิทธิ์ที่มอบให้แก่ผู้ใช้ที่ไม่อยู่ในหมวดหมู่ทั้งสองก่อนหน้านี้ ( o)
Michael Homer

1
ใช่ฉันอ่านแล้ว ฉันไม่เห็นว่ามันพูดถึงสิ่งที่มันทำ มันบอกว่าฉันสามารถระบุหนึ่งในตัวอักษรเหล่านั้น ตัวอย่างเช่นการระบุuฉันจะระบุสิทธิ์ที่มอบให้แก่ผู้ใช้ที่เป็นเจ้าของไฟล์ แต่มันไม่ได้บอกว่ามันทำอะไร สิ่งที่ระบุแม้หมายถึงอะไร
y_wc

คำตอบ:


19

นี่ไม่ใช่ตัวเลือก แต่เป็นวิธีมาตรฐาน (แต่ไม่ธรรมดา) ในการระบุการอนุญาต มันหมายถึงการที่จะลบ ( -) สิทธิ์ที่เกี่ยวข้องกับเจ้าของไฟล์ ( u) สำหรับผู้ใช้ทั้งหมด (ไม่ก่อนหน้าu, gหรือo) นี่คือเอกสารในหน้าคน

man page ของ GNU chmod มีเอกสารดังนี้:

รูปแบบของโหมดสัญลักษณ์คือ[ugoa...][[-+=][perms...]...]โดยที่permsตัวอักษรเป็นศูนย์หรือมากกว่าจากชุดrwxXstหรือตัวอักษรเดียวจากชุดugo

และหลังจากนั้น

แทนที่จะใช้ตัวอักษรเหล่านี้อย่างน้อยหนึ่งตัวคุณสามารถระบุตัวอักษร ugo หนึ่งตัว: การอนุญาตที่มอบให้แก่ผู้ใช้ที่เป็นเจ้าของไฟล์ ( u), การอนุญาตที่ให้แก่ผู้ใช้อื่น ๆ ที่เป็นสมาชิกของกลุ่มของไฟล์ ( g) และ การอนุญาตที่มอบให้แก่ผู้ใช้ที่ไม่อยู่ในสองหมวดหมู่ก่อนหน้านี้ ( o)

ดังนั้น-uหมายถึงการลบ ( -) สิ่งใดก็ตามที่มีการเปิดใช้งานสิทธิ์สำหรับเจ้าของ ( u) สำหรับทุกคน (เท่ากันa-uยกเว้นยกเว้นเคารพ umask ปัจจุบัน) แม้ว่ามันจะไม่ได้มีประโยชน์มากนัก แต่ในchmod +uบางครั้งความคล้ายคลึงก็จะเป็นเช่นนั้นเพื่อคัดลอกการอนุญาตจากเจ้าของไปยังผู้อื่นเมื่อทำงานซ้ำ ๆ


นอกจากนี้ยังมีการบันทึกไว้ใน POSIXแต่มีการกำหนดไว้อย่างคลุมเครือมากขึ้น: ข้อกำหนดคุณสมบัติการอนุญาตกว้างwho[+-=]perms(หรือตัวเลข) และผลกระทบของสิ่งเหล่านั้นจะถูกระบุเพิ่มเติม:

สัญลักษณ์ permcopy u, gและoผู้แทนของสิทธิ์ในปัจจุบันที่เกี่ยวข้องกับผู้ใช้กลุ่มและส่วนอื่น ๆ ของบิตโหมดไฟล์ตามลำดับ สำหรับส่วนที่เหลือของส่วนนี้permหมายถึงที่ไม่ใช่ขั้วpermและpermcopyในไวยากรณ์

แล้ว

-

... ถ้าคนที่ไม่ได้ระบุบิตโหมดไฟล์แสดงโดยดัดสำหรับเจ้าของกลุ่มและสิทธิ์อื่น ๆ ยกเว้นสำหรับผู้ที่มีบิตสอดคล้องกันในโหมดหน้ากากสร้างไฟล์ของกระบวนการกล่าวอ้างจะถูกล้าง


ขอบคุณไมเคิล เอกสารประกอบ POSIX นั้นน่าเชื่อถือ แอฟริกา แต่ ... โปรดดูนี้ความคิดเห็นของฉัน ฉันไม่เห็นว่าสิ่งที่เกิดขึ้นหลังจาก "ดังนั้น" ติดตามจากสิ่งที่ก่อนหน้านี้ permsสามารถuที่ฉันได้รับ ใช่uระบุสิทธิ์หรือเจ้าของ แต่มันจะปฏิบัติตามที่-uลบสิทธิ์ของเจ้าของ (โมดูลัสumask) จากผู้ใช้ทั้งหมดได้อย่างไร
y_wc

เพราะนั่นคือสิ่งที่-ทำทุกครั้ง: จะลบการอนุญาตที่ระบุออกจากคลาสผู้ใช้ที่ระบุ -uเป็นสิ่งที่คล้ายคลึงกับ-wหรือ (ใกล้) ugo-uเพื่อ
Michael Homer

ฉันกำลังจะบอกว่าฉันไม่ได้มาที่นี่เพื่อพูดคุยเกี่ยวกับเอกสารประกอบและฉันยินดีที่จะเข้าใจว่าเกิดอะไรขึ้น แต่เอกสารเพิ่งคลิก ขอบคุณ
y_wc

ฉันสามารถรบกวนคุณกับchmodคำถามเอกสารอื่นได้หรือไม่? แจ้งให้เราทราบหากคุณคิดว่านี่เป็นคำถามที่แยกกัน "และ = ทำให้เพิ่มและทำให้บิตที่ไม่ได้กล่าวถึงถูกลบยกเว้นว่าบิตของผู้ใช้และ ID กลุ่มที่ไม่ได้รับการตั้งค่าของไดเรกทอรีจะไม่ได้รับผลกระทบ" สำหรับฉันแล้วจะบอกว่าให้ไดเรกทอรีที่เจ้าของมีสิทธิ์การเขียนเท่านั้น จะออกจากสิทธิ์ของเจ้าของในฐานะที่เป็นchmod u=rx directory แต่นั่นไม่ใช่สิ่งที่เกิดขึ้นแทนพวกเขากลายเป็นที่คาดว่าrwx r-xฉันแปลความหมายบางอย่างผิดหรือเปล่า?
y_wc

มันบอกว่าsบิตsetuid / setgid ( ) ถูกทิ้งไว้ตามลำพังถ้าคุณไม่พูดถึงมันและสิ่งอื่นที่คุณไม่ได้ระบุจะถูกลบออก
Michael Homer

2

คำตอบนั้นคล้ายกับ/unix//a/429424/255251เล็กน้อย

chmod -u file_name

ไม่ได้ลบการอนุญาตทั้งหมด แต่จะพิจารณาถึงumaskคุณค่า

umask
0022
ls -l file
-rwxrwxrwx 1 user user 4 Feb 25 15:17 file
chmod -u file
chmod: file: new permissions are ----w--w-, not ---------
ls -l file
-----w--w- 1 user user 4 Feb 25 15:17 file

ตอนนี้เปลี่ยนค่า umask

umask 777
chmod 777 file
chmod -u file
chmod: file: new permissions are rwxrwxrwx, not ---------
ls -l file
-rwxrwxrwx 1 user user 4 Feb 25 15:17 file

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