Nieusuwalny katalog w lost + found

10

Jak mogę usunąć ten katalog? Zrobiłem to fscki znalazłem śmieci, przejrzałem te pliki i nie było nic ważnego. Więc próbowałem usunąć zawartość /lost+foundi wszystko poszło oprócz tego dziwnego katalogu. Pomyślałem, że ustawienie go /tmp(mogę przenieść ten katalog na wolumin) spowoduje usunięcie go przy następnym restarcie, ale nadal będzie dostępne zarówno po ponownym uruchomieniu, jak i kolejnym fsck.

Ponieważ wydaje się, że problem jest niski, a gra z prawem własności i uprawnieniami nie wystarczy, sprawiłem, że możesz sam odtworzyć problem. Cieszyć się!

  • Jest to bezpieczne, będziesz mógł umountować obraz, aby pozbyć się tych katalogów na swoim komputerze ;
  • To nie jest izo-obraz, to wynikdd if=/dev/sda1 of=/files/broken.iso ;

Zrobiłem 15 MB archiwum z obrazem o wielkości ~ 1,2 GB. Możesz go pobierać i stosować za pomocą następujących poleceń:

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

Byłyby dwa katalogi (podczas tworzenia tego obrazu wydaje się, że na moim dysku są dwa takie katalogi):

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

4 directories, 0 files

Powodzenia w usuwaniu tych dwóch katalogów:

/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
Smutek
źródło
Jak /tmpna tym samym woluminie? Czy możesz opublikować wynik df? Ponadto, proszę opublikować wynik sudo perl -MFile::Path -e 'rmtree("/tmp/foo") || die "$!"'na wypadek, gdybyśmy otrzymali bardziej informacyjny komunikat o błędzie.
terdon
@terdon Dodałem wynik do pytania. Czy uważasz, że dane wyjściowe są nawet trochę pomocne?
Smutek
1
Cóż, dfwynik pokazuje, że twój / tmp` jest w rzeczywistości normalnym katalogiem, /a nie tmpfs, który jest domyślną konfiguracją. To zaskakujące, ale wyjaśnia zarówno, dlaczego można skopiować katalog /tmpi dlaczego przetrwa ponowne uruchomienie. perlWyjście naprawdę nie dodać dużo nie, ale warto było spróbować. Trzymam się tutaj słomek.
terdon
offtopic: w Ubuntu /tmpdomyślnie jest normalny katalog. Odbywa się to, aby zapobiec jego wypełnieniu do 100% i zaoszczędzić pamięć RAM. Jest czyszczony podczas uruchamiania. To zachowanie istnieje przez długi czas.
Smutek
Spróbowałbym uruchomić komputer na żywo, a następnie przeszukiwać system plików.
Journeyman Geek

Odpowiedzi:

8

Jedną z możliwości jest niezmienna flaga w przypadku systemu plików ext. Zobacz wyjście lsattrpolecenia. Jeśli jest iobecny, można go usunąć za pomocąchattr -i filename

Pliku z atrybutem „i” nie można modyfikować: nie można go usunąć ani zmienić jego nazwy, nie można utworzyć łącza do tego pliku i danych nie można zapisać do pliku. Tylko superużytkownik lub proces posiadający zdolność CAP_LINUX_IMMUTABLE może ustawić lub usunąć ten atrybut.

W tym przypadku dzieje się coś jeszcze

To wydaje się działać

> 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
JJ Hakala
źródło
Nie. Widziałeś, że użyłem sudo? Byłbym wdzięczny za pobranie obrazu, zamontowanie go i wypróbowanie.
Smutek
To nie jest „obraz ISO”, to wynikdd if=/dev/sda1 of=broken.iso
żalu
Tak, prawdopodobnie masz rację, przepraszam! Czy miałeś okazję odtworzyć problem?
Smutek
1
Tak, i wygląda naprawdę dziwnie.
JJ Hakala
Czuję się teraz tak głupio :( Ale jesteś moim bohaterem dnia, JJ Hakala
Smutek
1

spróbuj zostać użytkownikiem, który go posiada, aby go usunąć

sudo -u 6666 -g 19312 rm -rf ./#1589030
Amias
źródło
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
Smutek
Musisz stworzyć niż użytkownik, jeśli nie istnieje
Amias,
tworzenie użytkowników i grup z tymi UID i GID nie pomogło
Żal