'chmod u + x' กับ 'chmod + x'


112

ความแตกต่างระหว่างchmod u+xและเพียงchmod +xคืออะไร? ฉันได้เห็นแบบฝึกหัดมากมายที่บอกว่าใช้u+xเพื่อทำให้สคริปต์ทำงานได้ อย่างไรก็ตามการละเว้นสิ่งuนั้นดูเหมือนจะไม่มีผลใด ๆ

คำตอบ:


149

หน้าคนของchmodปกที่

  • คุณหมายถึงผู้ใช้
  • gหมายถึงกลุ่ม
  • oหมายถึงคนอื่น ๆ
  • ย่อมาทั้งหมด

วิธีการที่chmod u+x somefileจะให้เฉพาะเจ้าของสิทธิ์ดำเนินการไฟล์ในขณะที่เป็นเช่นเดียวกับchmod +x somefilechmod a+x somefile

หน้าคน chmod พูดว่า:

[ugoa...][[+-=][rwxXstugo...]...][,...]รูปแบบของโหมดสัญลักษณ์เป็น การดำเนินการหลายสัญลักษณ์สามารถกำหนดได้โดยคั่นด้วยเครื่องหมายจุลภาค

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


ฉันมีคำถามเล็กน้อยความแตกต่างระหว่าง + x กับ 111 คืออะไรมันทำให้ทั้งสองทำงานได้
TheBro21

นั่นเป็นเพราะ 1 คือสัญกรณ์ฐานแปดซึ่งหมายถึงการอนุญาตให้ดำเนินการ 111 หมายถึงเรียกใช้งานได้สำหรับผู้ใช้กลุ่มและอื่น ๆ
Octavian Damiean

คำตอบที่สะอาดดี
m4heshd

เอฟเฟกต์ umask เป็นสิ่งสำคัญซึ่งทำให้chmod +x fileแตกต่างจากchmod a+x file- ดูคำตอบของ Ravexina สำหรับรายละเอียด
Cinnam

19

เพียงแค่ทำ+xมันจะใช้กับธงทั้งหมด: [u] ser, [g] roup, [o] thers

พิมพ์man chmodเพื่อรับข้อมูลเพิ่มเติม


ฉันสัญญาว่าฉันจะตรวจสอบคู่มือก่อน แต่ไม่เห็นมันตั้งแต่ฉันข้ามคำอธิบายและกระโดดลงไปที่ตัวเลือก ฉันเห็นพวกเขาตอนนี้แม้ว่า :-)
Nathan Schwermann

14

ความต้องการ

ก่อนอื่นผมขอแนะนำให้คุณอ่านคำถามเหล่านี้และคำตอบที่ลิงก์ด้านล่าง

ช่วยให้คุณเข้าใจทุกส่วนที่จำเป็นที่คุณต้องรู้


เวอร์ชั่นสั้น

  • chmod +xเท่ากับchmod ugo+x(ขึ้นอยู่กับumaskมูลค่า)
  • chmod a+xเท่ากับchmod ugo+x(โดยไม่พิจารณาumaskมูลค่า)

คำอธิบาย

ผลลัพธ์ที่ได้chmod a+xคือการตั้งค่าบิตที่ใช้งานได้สำหรับทุกคน (เจ้าของกลุ่มอื่น ๆ ) ง่ายใช่ไหม?

อย่างไรก็ตามด้วยchmod +xความยุ่งยากเล็กน้อยมันบอกว่าใช้umaskมูลค่าและตามค่านั้นเพิ่มxให้กับทุกคนที่ได้รับอนุญาต

ดังนั้นหากumaskสภาพแวดล้อมของฉันคือ0002:

$ umask
0002
$ umask -S
u=rwx,g=rwx,o=rx

มันจะเพิ่มxให้กับผู้ใช้ (เจ้าของ) กลุ่มและอื่น ๆ ในสถานการณ์นี้ (ซึ่งเป็นสถานการณ์เริ่มต้นสำหรับระบบส่วนใหญ่) มันเป็นเหมือนchmod ugo+xหรือเหมือนกับchmod a+xหรือในรูปแบบ verbose:

chmod u+x,g+x,o+x

คุณสามารถมองเห็นการเชื่อมต่อระหว่างchmod u+x,g+x,o+xและเอาท์พุทของumask -S?

ตอนนี้ขอเปลี่ยนumaskเชลล์ปัจจุบันเป็น0003:

$ umask 0003
$ umask
0003
$ umask -S
u=rwx,g=rwx,o=r

อย่างที่คุณเห็นตอนนี้มีเพียงเจ้าของและกลุ่มเท่านั้นที่จะได้รับบิตเรียกใช้งานไม่ใช่ผู้อื่น มันหมายถึงการchmod +xอยู่ในขณะนี้เท่ากับหรือchmod u+x,g+xchmod ug+x


เวลาคำถาม!

จะเกิดอะไรขึ้นถ้าฉันเรียกใช้chmod +wไฟล์หลังจากตั้งค่าumaskเป็น0003?

เช่นเดียวกับก่อนมันจะมีผลต่อuserและgroupของไฟล์เพราะ 3 ยังเอาสิทธิ์ในการเขียน (2)


โบนัส

มันมีผลเช่นเดียวกันเมื่อคุณลบบิตเช่นchmod -w:

$ mkdir test
$ stat -c %A test
drwxrwxr-x
$ umask
0002
$ chmod +w test
$ stat -c %A test
drwxrwxr-x
$ chmod a+w test
$ stat -c %A test
drwxrwxrwx
$ chmod -w test
chmod: test/: new permissions are r-xr-xrwx, not r-xr-xr-x
$ stat -c %A test
dr-xr-xrwx

7

chmod u+x จะทำให้ไฟล์นั้นสามารถเรียกใช้งานได้สำหรับผู้ใช้ของคุณ (มันจะเพิ่มเฉพาะไฟล์สำหรับผู้ใช้ของคุณแม้ว่าเจ้าของไฟล์นั้นจะสามารถเรียกใช้งานได้หรือ "อื่น ๆ ")

chmod +xหรือchmod a+x('บิตทั้งหมดที่เรียกใช้งานได้บวก') ทำให้ทุกคนสามารถเรียกใช้ไฟล์ได้

ถ้าคุณทำสิ่งนี้กับไดเรกทอรีมันทำให้ไดเรกทอรีนั้นค้นหาได้ นั่นคือคุณสามารถแสดงรายการเนื้อหาของไดเรกทอรีที่คุณได้รับอนุญาต + x


ขอโทษด้วย แต่สิ่งนี้ก็ไม่ได้ผลสำหรับฉันเช่นกัน ฉันได้ลองกับ sudo แล้ว แต่ไม่ได้ใช้กับคอมพิวเตอร์ askubuntu.com/questions/178231/how-to-set-permission-in-ubuntu
Anirudha Gupta

@AnkitGupta ฉันไม่แน่ใจว่าสิ่งที่คุณพูด ความคิดเห็นของฉันไม่ได้มีไว้เพื่อแก้ไขปัญหาในคำถาม & คำตอบอื่น ๆ ลองถามเพื่อขอความกระจ่างในคำตอบที่นั่นแทน แก้ไขคำถามของคุณเพื่อพูดในสิ่งที่คุณได้ลอง แสดงผลลัพธ์
belacqua

1
  • chmod u+x fileหมายถึงการเพิ่มบิตที่ปฏิบัติการให้กับเจ้าของไฟล์ในขณะที่ไม่สนใจumask(mod ของคุณจะถูกตั้งค่าไม่มีคำถาม)

  • chmod +x fileหมายถึงการเพิ่มบิตที่ใช้งานได้ให้กับเจ้าของกลุ่มและอื่น ๆ ในขณะที่พิจารณาumask(การตรวจสอบครั้งแรกด้วยumaskแล้วใช้ mods มันอาจมีผลกระทบที่แตกต่างกันขึ้นอยู่กับค่าของ umask)


มาสร้างสองไฟล์กันเถอะ:

$ touch file1 file2
$ ls -l file1 file2
-rw-rw-rw- 1 ravexina ravexina 0 Aug  5 01:45 file1
-rw-rw-rw- 1 ravexina ravexina 0 Aug  5 01:45 file2

ตอนนี้ผมตั้งumaskที่ "111" umask 111เพื่อลบบิตปฏิบัติการ:

$ chmod u+x file1
$ chmod  +x file2
$ ls -l file1 file2
-rwxrw-rw- 1 ravexina ravexina 0 Aug  5 01:47 file1
-rw-rw-rw- 1 ravexina ravexina 0 Aug  5 01:47 file2

ตามที่คุณเห็นการchmodละเว้นumaskและ file1 มีบิตที่สามารถเรียกใช้งานได้สำหรับเจ้าของ แต่อันที่สองไม่ได้ทำอะไรเพราะมันกำลังพิจารณาคุณค่าของ umask

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