'chmod -644' จะตั้งค่าการอนุญาตไฟล์เป็น 000


12

ฉันมีไฟล์ที่มี 644 ( -rw-r--r--) และต้องการเปลี่ยนเป็น 664 ( -rw-rw-r--) หลังจากทำงาน:

sudo chmod -664 my_file

ตั้งค่าการอนุญาตไฟล์เป็น 000 ( ----------)

พยายามที่จะเปลี่ยนการอนุญาตเป็นอะไรที่แตกต่างจาก 000 ดูเหมือนว่าจะไม่ทำงาน ฉันหายไปนี่อะไร


11
ทำไมคุณถึงได้-หน้า 644 ลองsudo chmod 644 my_fileดู -644จะลบสิทธิ์
Soren

คำตอบ:


34

คุณกำลังใช้-664เพียงใช้664แทน และไม่เคยใช้sudoเมื่อคุณไม่ต้องการ หากเป็นไฟล์ของคุณคุณไม่จำเป็นต้องsudo:

chmod 644 my_file

เมื่อคุณรันchmodด้วย-โหมดก่อนโหมดคุณจะลบโหมดนั้น ดูman chmod(เน้นที่เหมือง):

ตัวดำเนินการ + ทำให้บิตโหมดไฟล์ที่เลือกถูกเพิ่มลงในบิตโหมดไฟล์ที่มีอยู่ของแต่ละไฟล์ - ทำให้พวกเขาถูกลบออก ; และ = ทำให้มีการเพิ่มและทำให้บิตที่ไม่ได้กล่าวถึงถูกลบยกเว้นว่าผู้ใช้ชุดและ ID กลุ่มที่ไม่ได้กล่าวถึงของไดเรกทอรีจะไม่ได้รับผลกระทบ

ตัวเลขคือ:

  • 1: ดำเนินการ
  • 2: เขียน
  • 4: อ่าน

ดังนั้นไฟล์ที่มี777สิทธิ์หมายความว่าทุกคนมีสิทธิ์ที่จะทำทั้งสามอย่างตั้งแต่ 1 + 2 + 4 = 7 ดังนั้นการตั้งค่าสิทธิ์เป็น 7 หมายถึงอนุญาตให้อ่านเขียนและดำเนินการ

หากคุณเริ่มต้นด้วยไฟล์ที่มีโหมดคือ777:

$ ls -l my_file 
-rwxrwxrwx 1 terdon terdon 0 May 28 13:45 my_file

และตอนนี้ทำงานchmod -644คุณจะลบบิต644และจบลงด้วยไฟล์ที่มีโหมด133:

$ chmod -644 my_file; ls -l my_file 
---x-wx-wx 1 terdon terdon 0 May 28 13:45 my_file

นั่นเป็นเพราะคุณลบ 6 (read (4) + write (2)) จากการอนุญาตของเจ้าของโดยเหลือเพียง 1 (execute) set และ 4 (read) จากกลุ่มและการอนุญาตอื่น ๆ ผลลัพธ์คือไฟล์ที่มีสิทธิ์ดำเนินการ (1) สำหรับเจ้าของเท่านั้นและเขียนและดำเนินการ (คุณยกเลิกการตั้งค่า 4 เหลือ 1 และ 3) สิทธิ์สำหรับส่วนที่เหลือ

เนื่องจากไฟล์ของคุณมีสิทธิ์เริ่มต้นสำหรับไฟล์ใหม่ดังนั้น644เมื่อคุณรันchmod -644 my_fileคุณจึงลบบิตการอนุญาตที่ตั้งค่าทั้งหมดและได้รับไฟล์ที่ไม่มีสิทธิ์สำหรับใคร

$ ls -l my_file 
-rw-r--r-- 1 terdon terdon 0 May 28 13:45 my_file
$ chmod -644 my_file
$ ls -l my_file 
---------- 1 terdon terdon 0 May 28 13:45 my_file
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.