ทำไมอักขระเครื่องหมายคำถามปรากฏขึ้นเมื่อเปลี่ยนการอนุญาตของไดเรกทอรี


33

ฉันพยายามเปลี่ยนการอนุญาตของโฟลเดอร์ชั่วคราวที่มีการอนุญาตเริ่มต้น

user@ubuntu:/var/log$ ls -l squid*
squid3:
total 4
-rw-r----- 1 proxy proxy    0 Jan 16 14:43 access.log
-rw-r----- 1 proxy proxy 1359 Jan 16 14:43 cache.log
ls: cannot open directory squid-deb-proxy: Permission denied

เพื่อสิ่งต่อไปนี้

user@ubuntu:/var/log$ sudo chmod -R 644 squid*
user@ubuntu:/var/log$ ls -l squid*
squid3:
ls: cannot access squid3/cache.log: Permission denied
ls: cannot access squid3/access.log: Permission denied
total 0
-????????? ? ? ? ?            ? access.log
-????????? ? ? ? ?            ? cache.log

squid-deb-proxy:
ls: cannot access squid-deb-proxy/store.log: Permission denied
ls: cannot access squid-deb-proxy/cache.log: Permission denied
ls: cannot access squid-deb-proxy/access.log: Permission denied
total 0
-????????? ? ? ? ?            ? access.log
-????????? ? ? ? ?            ? cache.log
-????????? ? ? ? ?            ? store.log

คุณจะสังเกตเห็นหลังจากการเปลี่ยนแปลงการอนุญาตมีเครื่องหมายคำถามทุกที่ ทำไมสิ่งนี้จึงเกิดขึ้น ฉันต้องการอ่านบันทึกการเข้าถึงเพื่อดูว่าเซิร์ฟเวอร์ squid-deb-proxy ได้รับคำขอจากลูกค้าหรือไม่

คำตอบ:


38

ในการดูการอนุญาตของไดเรกทอรีคุณจะต้องส่ง-dแฟล็กไปที่lsดังนี้:

ls -ld squid3

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

ในการตั้งค่าการอนุญาตการอ่านไฟล์และการอ่านและเรียกใช้การอนุญาตในไดเรกทอรีซ้ำให้ใช้คำสั่งนี้:

chmod -R a+rX directoryname

นี่คือคำอธิบายของคำสั่งนั้น:

  • chmod เป็นชื่อของคำสั่งที่ใช้สำหรับการเปลี่ยนการอนุญาตของไฟล์
  • -Rเป็นธงแบบเรียกซ้ำ มันหมายถึงใช้คำสั่งนี้กับไดเรกทอรีและลูกทั้งหมดของมันและลูก ๆ ของมันและอื่น ๆ
  • a ย่อมาจากทั้งหมด: ใช้สิทธิ์เหล่านี้เจ้าของไฟล์เจ้าของกลุ่มของไฟล์และผู้ใช้อื่น ๆ
  • + หมายถึงเพิ่มสิทธิ์ต่อไปนี้หากยังไม่ได้ตั้งค่า
  • r หมายถึงสิทธิ์การอ่าน
  • Xหมายถึงสิทธิ์ดำเนินการ แต่เฉพาะในไดเรกทอรี ตัวพิมพ์เล็กxหมายถึงการอนุญาตให้เรียกใช้งานสำหรับทั้งไฟล์และไดเรกทอรี

ข้อมูลเพิ่มเติมที่พบในmanpage สำหรับchmodไอคอน Manpageคำสั่ง


1
มีสิ่งใดผิดปกติในการใช้งานchmod -R 644 squid*
ผู้ใช้ที่ลงทะเบียน

4
@ ลงทะเบียนผู้ใช้: ใช่ 644 คือrw-r--r--ซึ่งเหมาะสำหรับไฟล์ แต่ไม่ใช่สำหรับไดเร็กทอรี ไดเรคทอรีจำเป็นต้องมีชุดสิทธิในการเรียกใช้งานเช่นเดียวกัน: rwxr-xr-xหรือ 755 คำสั่งที่คุณกล่าวถึงจะยกเลิกการอนุญาตให้ใช้งานไฟล์และไดเรกทอรีทั้งหมดซ้ำซึ่งทำให้เกิดข้อผิดพลาดเหล่านี้
Flimm

3

ฉันมีปัญหานี้เช่นกัน ฉันไม่สามารถทำ chmod หรือ chown บนไฟล์ ฉันพยายามลบมัน ปรากฎว่าพยายามลบมัน (คำสั่ง rm) ทำให้เกิดปัญหา ไพ่คือว่าไฟล์จะถูกใช้ร่วมกันระหว่างสองระบบที่แตกต่างกัน เมื่อฉันปิดไฟล์ในระบบอื่นไฟล์จะหายไป นี่คือรายละเอียดเพิ่มเติมของการกำหนดค่าของฉัน ระบบ 1: Ubuntu guest VM นี่คือที่ฉันทำคำสั่ง rm ระบบ 2: โฮสต์ Windows 7 นี่คือที่ฉันได้เปิดไฟล์โดยใช้คำสั่งน้อย (ใน cygwin ไม่ใช่ว่ามันจำเป็นต้องเกี่ยวข้อง)


2

ตามที่คุณระบุว่าเป้าหมายของคุณคือการอ่าน/var/log/squid/access.logทางออกที่ดีที่สุดของคุณคือการพิมพ์sudo less /var/log/squid/access.logซึ่งอะไหล่ปัญหาของการ chmodding ซ้ำ ๆ

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