'สิทธิ์ที่ถูกปฏิเสธ' เป็นไฟล์ที่ฉันเป็นเจ้าของหรือไม่


13

Bob ผู้ใช้ของฉันไม่สามารถเข้าถึงไฟล์ที่เขาเป็นเจ้าของ (ในทางทฤษฎี) ฉันใช้ Fedora Core 8 ฉันจะแสดงให้เห็นได้ง่ายกว่าบอก:

> ls -al .
total 32
drwxrwxr-x 7 bob bob 4096 May 18 14:33 .
drwxrwxr-x 4 bob bob 4096 May 12 15:44 ..
drwxr-xr-x 2 bob bob 4096 June 1 14:22 log

> cd ./log
-bash: cd: log/: Permission denied

> ls -al ./log
ls: cannot access log/..: Permission denied
ls: cannot access log/the.log: Permission denied
ls: cannot access log/.: Permission denied
total 0
d????????? ? ? ? ?            ? .
d????????? ? ? ? ?            ? ..
-????????? ? ? ? ?            ? the.log

> sudo ls -al ./log
drw-rw-r-- 3 bob bob      4096 Jun  2 04:11 .
drwxrwxr-x 7 bob bob      4096 May 18 14:33 ..
-rw-rw-r-- 1 bob bob         0 Jun  1 04:12 the.log

ls -alยืนออกเป็นแปลกมาก มันจะแสดงรายการไฟล์ที่ฉันไม่มีสิทธิ์ดู แต่ไม่แสดงสิทธิ์ให้ฉัน

ดังนั้นคำถามคืออะไรจะทำให้เกิดสิ่งนี้ และฉันจะทำอย่างไรเพื่อซ่อมแซม

คำตอบ:


18
> sudo ls -al ./log
...
drw-rw-r-- 3 bob bob      4096 Jun  2 04:11 .

มันดูไม่เหมือนบ๊อบมีผู้สิทธิ์สำหรับ ./log ดังนั้นเขาจึงไม่สามารถcdอยู่กับมัน

แต่

> ls -al .
...
drwxr-xr-x 2 bob bob 4096 June 1 14:22 log

แสดงให้เห็นว่าเขาทำ แต่ดูเหมือนว่าพวกเขากำลังชี้ไปที่ไฟล์เดียวกัน (สิทธิ์ที่แตกต่างกัน, modtime ที่แตกต่างกัน)

ลองsudo ls -ail ./logและls -ailดูว่าไอโหนดเดียวกัน


10

สิ่งต่าง ๆ ง่ายกว่าความเสียหายของระบบไฟล์หรือ selinux อย่างที่คุณเห็นว่าคุณไม่มีสิทธิ์ x (ปฏิบัติการ) ในไดเรกทอรีบันทึก จริง ๆ แล้วสำหรับไดเรกทอรี x หมายถึงใครบางคนสามารถเปลี่ยนเป็นไดเรกทอรีนั้นได้ เพียงแค่ทำ "chmod + x log" เพื่อแก้ไขระดับการอนุญาตนั้นและคุณควรจะสามารถเข้าถึงได้


> จริงๆแล้วสำหรับไดเรกทอรี x หมายถึงว่าใครบางคนสามารถเปลี่ยนเป็นไดเรกทอรีนั้นได้ว้าว ฉันลืมไปเรื่อย ๆ ขอบคุณ
yPhil

6

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


ฉันทำสิ่งนี้ประมาณหนึ่งชั่วโมงที่ผ่านมาในหนึ่งในเซิร์ฟเวอร์ไฟล์ของฉัน +1
โทมัสเดนตัน

2

ตรวจสอบการตั้งค่า SE / Linux ด้วย บางครั้งการอนุญาตในไฟล์ไม่มีส่วนเกี่ยวข้องกับคุณสามารถเข้าถึงได้หรือไม่


1
ฉันเห็นด้วยกับ @David Mackintosh หาก SELinux เปิดใช้งานและหากไฟล์ / ไดเร็กทอรีถูกสร้างโดยบุคคลอื่นและจากนั้นเปลี่ยนความเป็นเจ้าของให้เป็นบ็อบก็น่าจะเกิดขึ้น เนื่องจากบริบทของไฟล์ยังคงอยู่กับผู้แต่งดั้งเดิมและจะไม่สามารถเข้าถึงได้จนกว่าบริบทจะถูกเปลี่ยนเป็นผู้ใช้ Bob
Viky

2

ไฟล์อาจมีการเปลี่ยนไม่ได้หรือผนวกเฉพาะชุดคุณลักษณะเพิ่มเติม ฉันเคยเกิดเหตุการณ์เช่นนี้มาก่อนและไม่แม้แต่รูทสามารถลบไฟล์ได้

แอตทริบิวต์เพิ่มเติมสามารถดูได้ผ่าน "lsattr" และแก้ไขผ่าน "chattr"


1
> sudo ls -al ./log
drw-rw-r-- 3 bob bob 4096 Jun 2 04:11

ฉันไม่แน่ใจว่าทำไมนอกจาก "." รายการใน ./log/ ไม่มีสิทธิ์ดำเนินการ การอนุญาตควรเหมือนกันสำหรับ ./log

คุณลอง chmod 755 ./log และ chmod 755 ./log/ ได้ไหม และดูว่าคำสั่งใดแก้ไขการเข้าถึงหรือไม่

นอกเหนือจากนั้นฉันขอแนะนำให้คุณเรียกใช้ fsck บนระบบไฟล์เพราะดูเหมือนว่ามันจะไม่ซิงค์กัน


1

คุณลองเปลี่ยนความเป็นเจ้าของไดเรกทอรีเป็นคนอื่นแล้วกลับไปที่ Bob ไหม? คำแนะนำของ Zoredache นั้นดีกว่า - เพียงแค่ fsck!


2
ปัญหาประเภทนี้มักจะจบลงด้วยการให้สิทธิ์ไดเรกทอรี
doublejosh

1

คำตอบที่กระชับยิ่งขึ้น IMO

ไดเรกทอรีของคุณไม่มีสิทธิ์ในการปฏิบัติการที่cdต้องการ

การแก้ไข:

$ sudo chmod +x ./log

ซ้ำ:

$ sudo chmod -R +x ./log

+ xกำลังเพิ่มแอตทริบิวต์ที่ใช้งานได้ คุณสามารถลบแอตทริบิวต์ได้โดยทำ-x

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