ไดเรกทอรีที่ไม่สามารถลบได้หายไป + พบ


10

ฉันจะลบไดเรกทอรีนี้ได้อย่างไร ฉันทำfsckแล้วมันพบว่ามีขยะฉันมองผ่านไฟล์เหล่านี้และไม่มีอะไรสำคัญ ดังนั้นฉันจึงพยายามลบเนื้อหาของ/lost+foundและทุกอย่างได้หายไปยกเว้นไดเรกทอรีแปลก ๆ นี้ ผมคิดว่าวาง/tmp(ผมสามารถย้าย dir ที่ข้ามปริมาณ) จะลบมันในการรีบูตต่อไป fsckแต่ก็ยังคงมีการรีบูตหลังจากที่ทั้งสองและอื่น ๆ

ดูเหมือนว่าปัญหาจะอยู่ในระดับต่ำและการเล่นกับความเป็นเจ้าของและการอนุญาตไม่เพียงพอฉันทำให้คุณสามารถสร้างปัญหาขึ้นใหม่ได้ด้วยตัวเอง สนุก!

  • นี้มีความปลอดภัยคุณจะสามารถที่จะภาพ umount เพื่อกำจัดไดเรกทอรีเหล่านี้บนเครื่องของคุณ ;
  • นี่ไม่ใช่ภาพ iso นี่คือผลลัพธ์ของdd if=/dev/sda1 of=/files/broken.iso ;

ฉันสร้างไฟล์เก็บถาวร 15MB ด้วยภาพซึ่งเป็น ~ 1.2GB คุณสามารถดาวน์โหลดและใช้ร่วมกับคำสั่งต่อไปนี้:

cd /tmp
wget https://dl.dropboxusercontent.com/u/22701362/broken.tar.xz
tar xvf broken.tar.xz
mkdir test
sudo mount broken.iso test
cd test

จะมีสองไดเรกทอรี (ในระหว่างการสร้างภาพนั้นปรากฏว่ามีสองไดเรกทอรีดังกล่าวในดิสก์ของฉัน):

/tmp/test> tree
.
├── 1
│   └── plexus-component-annotations-1.5.5.jar.sha1 [error opening dir]
└── 2
    └── #1589030 [error opening dir]

4 directories, 0 files

ขอให้โชคดีเมื่อลบไดเรกทอรีทั้งสองนี้:

/tmp/test> sudo rm -rf *
rm: cannot remove '1/plexus-component-annotations-1.5.5.jar.sha1': Operation not permitted
rm: cannot remove '2/#1589030': Operation not permitted

/tmp/test> sudo chown -R root:root *
chown: changing ownership of '1/plexus-component-annotations-1.5.5.jar.sha1': Operation not permitted
chown: cannot read directory '2/#1589030': Permission denied

/tmp/test> sudo chmod -R 777 *
chmod: changing permissions of '1/plexus-component-annotations-1.5.5.jar.sha1': Operation not permitted
chmod: changing permissions of '2/#1589030': Operation not permitted
chmod: cannot read directory '2/#1589030': Permission denied

อยู่/tmpในปริมาณเท่าไหร่? คุณสามารถโพสต์การส่งออกของdf? นอกจากนี้โปรดโพสต์ผลลัพธ์sudo perl -MFile::Path -e 'rmtree("/tmp/foo") || die "$!"'ในกรณีที่เราได้รับข้อความแสดงข้อผิดพลาดเพิ่มเติม
terdon

@terdon ฉันได้เพิ่มผลลัพธ์ไปยังคำถาม คุณคิดว่าผลลัพธ์เป็นประโยชน์หรือไม่?
ความเศร้าโศก

1
ดีdfเอาท์พุทแสดงให้เราเห็นว่าคุณ / tmp` เป็นจริงไดเรกทอรีปกติ/และไม่ tmpfs ที่มีการตั้งค่าเริ่มต้น เป็นเรื่องที่น่าแปลกใจ แต่ก็อธิบายได้ว่าทำไมคุณถึงสามารถคัดลอกไดรฟ์ไป/tmpได้ perlการส่งออกไม่ได้โดดเพิ่มมากไม่ได้ แต่มันก็คุ้มค่าการยิง ฉันกำลังจับฟางที่นี่
terdon

offtopic: ใน Ubuntu /tmpเป็นไดเรกทอรีปกติโดยค่าเริ่มต้น ทำเช่นนี้เพื่อป้องกันการกรอกข้อมูลสูงสุด 100% และเพื่อประหยัด RAM มีการล้างข้อมูลระหว่างการเริ่มต้น พฤติกรรมนี้มีอยู่เป็นเวลานาน
ความเศร้าโศก

ฉันลองบูทนอก livecd จากนั้นก็แหย่ระบบไฟล์
Journeyman Geek

คำตอบ:


8

สิ่งหนึ่งที่เป็นไปได้คือการตั้งค่าสถานะไม่เปลี่ยนรูปในกรณีของระบบไฟล์ ext ดูผลลัพธ์ของlsattrคำสั่ง หากมีiอยู่ก็สามารถลบออกได้ด้วยchattr -i filename

ไฟล์ที่มีแอตทริบิวต์ 'i' ไม่สามารถแก้ไขได้: ไม่สามารถลบหรือเปลี่ยนชื่อได้ไม่มีการสร้างลิงก์ในไฟล์นี้และไม่สามารถเขียนข้อมูลลงในไฟล์ได้ เฉพาะ superuser หรือกระบวนการที่มีความสามารถ CAP_LINUX_IMMUTABLE เท่านั้นที่สามารถตั้งค่าหรือล้างแอตทริบิวต์นี้

ในกรณีนี้มีสิ่งอื่นเกิดขึ้น

ดูเหมือนว่าจะทำงาน

> lsattr 1
-----a---------- 1/plexus-component-annotations-1.5.5.jar.sha1
> rmdir 1/plexus-component-annotations-1.5.5.jar.sha1
rmdir: failed to remove '1/plexus-component-annotations-1.5.5.jar.sha1': Operation not permitted
> chattr -a 1/plexus-component-annotations-1.5.5.jar.sha1
> rmdir 1/plexus-component-annotations-1.5.5.jar.sha1

> lsattr 2
---D-ad--j--T--- 2/#1589030 
> chattr -D -a -d -j -T 2/\#1589030
> rmdir 2/\#1589030

Nope คุณเห็นไหมว่าฉันใช้sudo? ฉันจะขอบคุณถ้าคุณดาวน์โหลดภาพติดมันและลองด้วยตัวคุณเอง
ความเศร้าโศก

นี่ไม่ใช่ 'ภาพ iso' ซึ่งเป็นผลมาจากdd if=/dev/sda1 of=broken.iso
Grief

ใช่คุณอาจจะถูกต้องขอโทษด้วย! คุณมีโอกาสทำซ้ำปัญหาหรือไม่
ความเศร้าโศก

1
ใช่แล้วมันดูแปลกจริงๆ
JJ Hakala

ฉันรู้สึกโง่มาก ๆ ตอนนี้ :( แต่คุณคือฮีโร่ของฉันในวันนี้นาย JJ Hakala
ความเศร้าโศก

1

ลองเป็นผู้ใช้ที่เป็นเจ้าของเพื่อลบ

sudo -u 6666 -g 19312 rm -rf ./#1589030

sudo -u '#6666' -g '#19311' rm -rf \#1589030 rm: cannot remove '#1589030': Permission denied sudo -u '#6666' -g '#19311' chmod 777 \#1589030 chmod: cannot access '#1589030': Permission denied
ความเศร้าโศก

คุณต้องทำมากกว่าผู้ใช้หากไม่มีอยู่จริง
Amias

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