ไม่สามารถลบไฟล์ได้แม้จะทำงานเป็น root


48

ฉันอยู่ในขั้นตอนการโอนย้ายเครื่องจาก RHEL 4 ถึง 5 แทนที่จะทำการอัปเกรดจริง ๆ เราได้สร้าง VM ใหม่ (ทั้งสองเครื่องอยู่ในระบบคลาวด์) และฉันอยู่ในกระบวนการคัดลอกข้อมูลระหว่างสองเครื่อง

ฉันเจอไฟล์ต่อไปนี้ซึ่งฉันต้องลบออกจากเครื่องใหม่ แต่ไม่สามารถทำได้แม้ว่าจะทำงานในฐานะรูท:

-rw-------  1 2003 2003  219 jan 11 14:22 .bash_history

ไฟล์นี้อยู่ภายใน / home / USER / โดยที่ USER เป็นบัญชีของคนที่สร้างเครื่อง เขาไม่มีบัญชีในเครื่องเก่าดังนั้นฉันจึงพยายามลบโฟลเดอร์หลักของเขาเพื่อให้เครื่องใหม่มีบัญชีเก่า แต่ฉันได้รับข้อผิดพลาดต่อไปนี้:

rm: ne peut enlever `.bash_history': Opération non permise

(แปลจากภาษาฝรั่งเศส: ไม่สามารถลบ XXX ไม่อนุญาตให้ดำเนินการ)

ฉันได้ลองใช้คำสั่งต่อไปนี้ แต่มันก็ไม่ได้สร้างความแตกต่าง:

chattr -i .bash_history

เป็นทางเลือกเดียวในการสร้างผู้ใช้ที่มี ID 2003 หรือมีวิธีอื่นในการใช้หรือไม่


แก้ไข

ฉันได้ลองใช้rm -fและได้รับข้อผิดพลาดเดียวกัน ฉันได้รับข้อผิดพลาดชนิดเดียวกันโดยใช้chmod 777ครั้งแรก

ฉันสามารถไปchownยังโฟลเดอร์ที่มีไฟล์ที่ฉันพยายามจะลบได้ดังนั้นจึงเป็น:

drwx------ 2 root root 1024 jan 24 15:58 USER

Edit2

การรันlsattrคำสั่งตามที่ Angus แนะนำให้ใช้เอาต์พุตต่อไปนี้:

-----a------- USER/.bash_history
------------- USER/..
------------- USER/.

ไฟล์ถูกตั้งค่าสถานะเป็นแบบผนวกเท่านั้น - เมื่อเปลี่ยนแฟล็กนี้โดยใช้chattr -a .bash_historyฉันสามารถลบไฟล์ได้

คำตอบ:


54

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

chmod ugo+w .

และไม่เปลี่ยนรูปหรือต่อท้ายเท่านั้น:

chattr -i -a .

ตรวจสอบกับและls -lalsattr -a


ขอบคุณ .. ฉันต้องเรียกใช้งานไฟล์ที่มีชื่อว่า * ซึ่งไม่ได้ทำความสะอาดหลังจากที่ yum ลบ bind ใน Centos 7 ขั้นต่ำ
onxx

น่าเสียดายที่/vendor/laracasts/generators/.git/objects/pack/เมื่อฉันเรียกใช้chattr -i -a .ฉันได้รับchattr: Inappropriate ioctl for device while reading flags on .และฉันไม่สามารถไฟล์ที่rmน่ารำคาญ.idxที่นักแต่งเพลงทิ้งไว้ (เพราะ "ไม่อนุญาตการดำเนินการ")
Ryan

Ahhh วิธีแก้ปัญหาหนึ่งสำหรับฉันคือออกจาก Laravel Homestead Vagrant VirtualBox ของฉันกลับสู่ Windows 10 (ยังคงใช้ Git Bash) และrmไฟล์จากที่นั่น จากนั้นcomposer updateก็สามารถที่จะเสร็จสมบูรณ์
Ryan

chattr -i -aทำงาน
xji

9

ฉันมีปัญหาที่คล้ายกัน แต่ได้ลองทั้งสิทธิ์และ chattr ก่อนหน้านี้เพื่อประโยชน์ รูทในเทอร์มินัล ซีดีไปยังไดเรกทอรี

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

chmod ugo+w filename

สิ่งนี้ล้มเหลว - จากนั้น:

chattr -i -a filename 

ซึ่งเป็นที่ยอมรับ - หลังจากนั้น

chmod ugo+w 

ซึ่งเป็นที่ยอมรับ

rm filename

และมันก็หายไป

Fedora 25 บนเวิร์กสเตชันแรงม้า


'chmod ugo + w filename "ได้ทำการหลอกลวงให้ฉันทั้งหมด
Alfishe

1

'sudo' สามารถเรียกใช้คำสั่ง 'rm' โดยใช้ user.group เดียวกัน

หมายเหตุ : ไม่แน่ใจว่าสิ่งนี้จะใช้ได้สำหรับรหัสเช่นเดียวกับคุณ

ตัวอย่าง:

ls /path/to/dir_being_deleted
  drwxrwxrwx 2 nfsnobody nfsnobody   4096 Mar  8 06:55 .
  drwxrwxrwx 7 nfsnobody nfsnobody   4096 Mar  8 06:57 ..
  -rwxrwxrwx 1 nfsnobody nfsnobody      0 Mar  8 06:55 filename.txt

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