Linux - ไม่สามารถลบไฟล์ที่เป็นเจ้าของด้วยสิทธิ์ 777


29

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

ls -al
total 12
dr-xr-xr-x 3 rayell pg1083760 4096 2010-10-10 10:00 .
drwxr-xr-x 3 rayell pg1083760 4096 2011-09-02 04:33 ..
-rwxrwxrwx 1 rayell pg1083760    0 2011-09-02 06:38 default.settings.php
drwxrwxrwx 2 rayell pg1083760 4096 2011-09-02 04:33 files
-rwxrwxrwx 1 rayell pg1083760    0 2011-09-02 06:38 settings.php


rm -Rf *
rm: cannot remove `default.settings.php': Permission denied
rm: cannot remove directory `files': Permission denied
rm: cannot remove `settings.php': Permission denied

ใครสามารถบอกฉันว่าเกิดอะไรขึ้น


5
โดยทั่วไปให้พิจารณาใช้ rm -rf DIRECTORY_NAME ไม่ใช่ "*" มันจะช่วยให้คุณประหยัดจากครั้งหนึ่งเมื่อคุณจะคิดว่าตัวเองอยู่ในไดเรกทอรี / บาง / ที่ไหน / ปลอดภัย แต่อยู่ใน / home แทน
Sardathrion - Reinstate Monica

ที่จริงฉันลองแล้วมันเป็นแค่ 3 ไฟล์ที่ฉันไม่สามารถลบได้ดังนั้นฉันได้ทำการประมวลผลเล็กน้อยเพื่อจุดประสงค์ของโพสต์นี้
RaYell

อย่าลืมคำสั่ง lsattr และ chattr ...

คำตอบ:


61

ในการลบไฟล์หนึ่งไฟล์คุณต้องมีสิทธิ์ในการเขียนในไดเรกทอรีที่มี . ไฟล์นี้

นี่คือการอนุญาตdr-xr-xr-x 3 rayell pg1083760 4096 2010-10-10 10:00 .ดังนั้นไม่มีใคร (นอกเหนือจากroot) สามารถลบไฟล์ในไดเรกทอรีนี้ เจ้าของจะต้องใช้chmodก่อน

-
1. มีเหตุผลที่ดีสำหรับเรื่องนี้ ด้วยการ 'ลบ' ไฟล์ด้วยrmคุณกำลังพยายามยกเลิกการเชื่อมโยงไฟล์จากไดเรกทอรี (สำเนาฮาร์ดลิงก์จะไม่ถูกลบ)


1

ฉันมีปัญหาเดียวกันและchmodคนเดียวไม่ได้ทำเคล็ดลับ ก่อนอื่นฉันต้องเปลี่ยนเจ้าของ (ผู้ใช้และกลุ่ม) ของไฟล์ที่ฉันต้องการลบ

sudo chown -hR root:admin dir_to_delete

คำอธิบาย:

  • sudo: ตรวจสอบให้แน่ใจว่าคุณมีสิทธิ์ที่เหมาะสม
  • chown: คำสั่ง Linux เพื่อเปลี่ยนเจ้าของไฟล์
  • -hR: เปลี่ยนเจ้าของไดเรกทอรีและไดเรกทอรีย่อยทั้งหมด ผมพบว่ามันนี่
  • root: ชื่อผู้ใช้ใหม่
  • admin: ชื่อของกลุ่มใหม่

ฉันเปลี่ยนโมดิฟายเออร์เป็น 777 แล้ว ฉันไม่รู้ว่ามันจำเป็นหรือไม่


สิทธิ์ของไฟล์ในไดเรกทอรีนั้นไม่เกี่ยวข้องจำเป็นต้องมีสิทธิ์ในการเขียนในไดเรกทอรีเท่านั้น อาจก่อนที่chownคุณจะไม่เคยเป็นเจ้าของไดเรกทอรีหรือสมาชิกของกลุ่มที่เป็นเจ้าของไดเรกทอรี
sgnsajgon

1

อีกคำถามที่เป็นไปได้คือคุณลักษณะ

lsattr file

คำสั่งนี้จะแสดงแอททริบิวต์ของไฟล์และไฟล์ที่มีแอททริบิว 'i' ไม่สามารถแก้ไขได้ (และถูกลบ)

ดังนั้นตรวจสอบแอตทริบิวต์ของไฟล์และลบแอตทริบิวต์ 'i' หากตั้งค่าคุณสมบัติไว้

chattr -i file

2
คำถามแสดงให้เห็นว่ามันเป็นสิทธิ์ของไดเรกทอรีที่ไม่อนุญาตให้เขียน ไม่จำเป็นต้องดูเพิ่มเติม
Toby Speight

0

เหตุผลก็คือไดเรกทอรีหลักมีchmod 705หรืออะไรทำนองนั้น คุณสามารถchmodไดเรกทอรีหลักโดยคำสั่งต่อไปนี้:

chmod -R 777 directory_name

หลังจากนี้คุณสามารถลบไดเรกทอรีนั้นและไฟล์ที่มีอยู่


4
กรุณาอย่าเอาผิดทำไดเรกทอรีเขียนได้โดยทุกคน นั่นไม่ใช่คำแนะนำที่ดี
Toby Speight

+1 - เห็นด้วยอย่าปฏิบัติตามคำแนะนำนี้มันน่าทึ่งวิธีนี้ถูกฉาบไปทั่วอินเทอร์เน็ต ... จำนวนของความไม่มั่นคงที่เกิดจากคนที่สนับสนุนเรื่องนี้เป็นเรื่องเหลือเชื่อ ...
André Figueira
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.