lost + found의 삭제 불가능한 디렉토리


10

이 디렉토리를 어떻게 삭제합니까? 나는 fsck쓰레기를 발견했고,이 파일들을 살펴 보았고 중요한 것이 없었습니다. 그래서 나는 내용을 삭제하려고 시도했지만 /lost+found이 이상한 디렉토리를 제외한 모든 것이 사라졌습니다. 나는 그것을 /tmp(볼륨을 가로 질러 그 디렉토리를 이동할 수 있음)에 넣으면 다음에 다시 부팅 할 때 지워지지 만 다시 부팅 한 후에도 여전히 있다고 생각했습니다 fsck.

문제가 저수준이고 소유권과 권한을 가지고 노는 것만으로는 충분하지 않은 것 같으므로 직접 문제를 재현 할 수있게되었습니다. 즐겨!

  • 이것은 안전합니다. 이미지를 마운트 해제하여 시스템에서 이러한 디렉토리를 제거 할 수 있습니다 .
  • 이것은 iso-image가 아닙니다dd if=/dev/sda1 of=/files/broken.iso .

~ 1.2GB의 이미지로 15MB 아카이브를 만들었습니다. 다음 명령으로 다운로드하여 사용할 수 있습니다.

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 : 우분투 /tmp에서는 기본적으로 일반 디렉토리입니다. 이는 최대 100 %까지 채우지 않고 RAM을 절약하기 위해 수행됩니다. 시작하는 동안 정리됩니다. 이 동작은 오랫동안 존재합니다.
슬픔

livecd로 부팅 한 다음 파일 시스템을 파고 들었습니다.
Journeyman Geek

답변:


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? 이미지를 다운로드하여 마운트하고 직접 시도해 주셔서 감사합니다.
슬픔

이것은 'iso 이미지'가 아닙니다.dd if=/dev/sda1 of=broken.iso
Grief

네, 아마 옳습니다, 죄송합니다! 문제를 재현 할 기회가 있었습니까?
슬픔

1
예, 정말 이상하게 보입니다.
JJ Hakala

지금은 sooo를 바보가 된 기분 :(하지만 당신은 오늘의 나의 영웅, 미스터입니다 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로 사용자 및 그룹을 만드는 것은 도움이되지 않았습니다.
Grief
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.