삭제할 수없는 디렉토리


5

내가 시도한 모든 것 (항상 수퍼 유저 권한으로)이 실패했습니다.

# rm -rf /path/to/undeletable
rm: cannot remove ‘/path/to/undeletable’: Is a directory
# rmdir /path/to/undeletable
rmdir: failed to remove ‘/path/to/undeletable’: Device or resource busy
# lsof +D /path/to/undeletable
lsof: WARNING: can't stat(/path/to/undeletable): Permission denied
lsof 4.86
 latest revision: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/
 latest FAQ: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/FAQ
 latest man page: ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/lsof_man
 usage: [-?abhKlnNoOPRtUvVX] [+|-c c] [+|-d s] [+D D] [+|-f[gG]] [+|-e s]
 [-F [f]] [-g [s]] [-i [i]] [+|-L [l]] [+m [m]] [+|-M] [-o [o]] [-p s]
[+|-r [t]] [-s [p:s]] [-S [t]] [-T [t]] [-u s] [+|-w] [-x [fl]] [--] [names]
Use the ``-h'' option to get more help information.

수퍼 유저 권한없이 위의 방법을 시도하면 결과는 기본적으로 동일합니다. 유일한 차이점은 lsof명령 의 초기 WARNING 메시지 가 Input/output error대신한다는 것입니다 Permission denied. (이 사소한 차이는 그 자체로 이미 수수께끼가 있지만, 무엇이든간에 ...)

이 디렉토리를 어떻게 제거 할 수 있습니까?


로그인은 수퍼 유저입니다
Ed Heal

@EdHeal : 감사합니다,하지만 난 슈퍼 유저로 로그인하면 내가 얻을 정확히 내가 위에서 보여 같은 결과를.
kjo

시도 su -하지su
에드 치유

디렉토리 (ACL 포함)의 권한은 무엇입니까? 파일 시스템이 마운트되어 있습니까?
mjturner

@ EdHeal : 나는 su두 번째 사용하지 않았다 . 로그 아웃했다가 루트로 다시 로그인했습니다.
kjo

답변:


8
# rm -rf /path/to/undeletable
rm: cannot remove ‘/path/to/undeletable’: Is a directory

rm호출 stat(2)하여 /path/to/undeletable디렉토리 (에 의해 삭제됨 rmdir(2)) 또는 파일 (에 의해 삭제됨)을 확인 unlink(2)합니다. stat호출이 실패 하기 때문에 (1 분 후에 이유를 알 수 있음) 오류 메시지를 설명하는를 rm사용하기로 결정 unlink합니다.

# rmdir /path/to/undeletable
rmdir: failed to remove ‘/path/to/undeletable’: Device or resource busy

"디렉토리가 비어 있지 않음"이 아닌 "장치 또는 리소스 사용 중" 따라서 문제는 디렉토리가 파일을 포함하지 않고 무언가에 의해 사용된다는 것입니다. “무언가 사용 된”가장 확실한 점은 그것이 마운트 포인트라는 것입니다.

# lsof +D /path/to/undeletable
lsof: WARNING: can't stat(/path/to/undeletable): Permission denied

이는 stat디렉토리에서 실패 했음을 확인합니다 . 왜 루트에 권한이 부족합니까? 이는 FUSE의 제한 사항입니다. allow_other옵션 과 함께 마운트하지 않으면 FUSE 파일 시스템은 FUSE 드라이버를 제공하는 프로세스와 동일한 사용자 ID를 가진 프로세스 만 액세스 할 수 있습니다. 루트조차도 이것에 맞습니다.

따라서 루트가 아닌 사용자가 FUSE 파일 시스템을 마운트했습니다. 뭐하고 싶어?

  • 아마도 그 디렉토리에 짜증이 나서 마운트 해제를 원할 것입니다. 루트는 그렇게 할 수 있습니다.

    umount /path/to/undeletable
    
  • 마운트 지점을 제거하고 마운트를 유지하려면로 이동하십시오 mount --move. (Linux 만 해당)

    mkdir /elsewhere/undeletable
    chown bob /elsewhere/undeletable
    mount --move /path/to/undeletable /elsewhere/undeletable
    mail bob -s 'I moved your mount point'
    
  • 해당 파일 시스템에서 파일을 삭제하려면 su또는 다른 방법을 사용 하여 해당 사용자로 전환 한 다음 파일을 삭제하십시오.

    su bob -c 'rm -rf /path/to/undeletable'
    
  • 마운트를 방해하지 않고 마운트 포인트에 의해 숨겨진 파일을 삭제하려면 마운트 포인트없이 다른보기를 작성하고 파일을 삭제하십시오. (Linux 만 해당)

    mount --bind /path/to /mnt
    rm -rf /mnt/undeletable/* /mnt/undeletable/.[!.]* /mnt/undeletable/..?*
    umount /mnt
    
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.