Недопустимий каталог у програному втраченому + знайденому


10

Як я можу видалити цей каталог? Я зробив, fsckі він знайшов сміття, я переглянув ці файли, і там не було нічого важливого. Тому я спробував видалити вміст /lost+foundі все пішло, крім цього дивного каталогу. Я думав, що розміщення його /tmp(я можу перемістити цей dir по томі) видалить його при наступному перезавантаженні, але воно все ще є після перезавантаження та іншого fsck.

Оскільки здається, що проблема на низькому рівні, і грати з власністю та дозволами недостатньо, я дав змогу відтворити проблему самостійно. Насолоджуйтесь!

  • Це безпечно, ви зможете виправити зображення, щоб позбутися цих каталогів на своїй машині ;
  • Це не ізо-зображення, це результатdd if=/dev/sda1 of=/files/broken.iso ;

Я зробив архів 15 Мб із зображенням, що становить ~ 1,2 Гб. Ви можете завантажувати та виконувати наступні команди:

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 Я додав висновок до питання. Як ви вважаєте, висновок навіть трохи корисний?
Горе

1
Ну, dfрезультат показує, що ваш / tmp` насправді є звичайним каталогом, /а не tmpfs, що є налаштуванням за замовчуванням. Це дивно, але пояснюється і те, чому ви могли скопіювати dir /tmpі чому він пережив перезавантаження. Результат perlнасправді не додає багато, ні, але це варто було зняти. Я чіпляюся тут за соломку.
тердон

offtopic: в Ubuntu /tmpстандартний каталог за замовчуванням. Це робиться для запобігання заповнення його до 100% та економії оперативної пам’яті. Прибирається під час запуску. Така поведінка існує давно.
Горе

Я б спробував завантажитися з livecd, а потім розім’яти файлову систему.
Подорож Гек

Відповіді:


8

Одна з можливостей - це незмінний прапор у випадку файлової системи ext. Дивіться вихід lsattrкоманди. Якщо він iприсутній, його можна видалити за допомогоюchattr -i filename

Файл з атрибутом 'i' неможливо змінити: його неможливо видалити чи перейменувати, жодне посилання не може бути створене до цього файлу, а також дані не можуть бути записані у файл. Лише суперпользователь або процес, що володіє функцією 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

Ні. Ви бачили, що я використовував sudo? Буду вдячний, якщо ви завантажите зображення, змонтуєте його та спробуйте самі.
Горе

Це не "ізо-образ", це результатdd if=/dev/sda1 of=broken.iso
горе

Так, ви, мабуть, праві, вибачте! Чи мали ви шанс відтворити проблему?
горе

1
Так, і це виглядає дійсно дивно.
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 не допомогло
горе
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.