답변:
파일을 수동으로 찾아야 deluser
할 것입니다.
참고하시기 바랍니다 --remove-all-files
있다 되지 같은 rm -r /home/user
. 후자는 homedir 만 제거합니다 (일반적으로는 아니지만 해당 사용자가 소유하지 않은 파일을 포함 할 수 있음). 전자는 해당 사용자가 소유 한 모든 파일을 시스템에서 제거 합니다 . 최소한 맨 페이지를 신뢰할 수있는 경우 .
GNU find
에는 -user
테스트가 있으므로 find / -user xxx
user가 소유 한 모든 파일을 찾을 수 있습니다 xxx
. xxx
사용자 이름이 될 것이며, (이 경우 수있는 것입니다 사용자의 숫자 ID를 사용자가 더 이상 존재에 없다)합니다. find
또한이 -delete
때문에, 옵션을
find / -user xxx -delete
모든 옵션을 사용하여 명령을 동시에 테스트하지는 않았지만 그렇게해야합니다.
편집 : 숫자 ID : 내가 숫자 ID를 사용해야한다고 말한 이유는 이미 사용자를 삭제했을 때 입력 한 항목 /etc/passwd
이 삭제 되었기 때문 입니다 (다른 물건과 함께 사용자 ID와 함께 사용자 이름과 함께) .
따라서 homedir을 제거하지 않은 경우 가장 쉬운 방법 중 하나는 해당 homedir 소유자의 ID를 쿼리하는 것입니다.
stat -c %u /home/user/
( stat
파일 시스템 데이터를 읽는 도구입니다. 출력을 작성하는 방법을 -c %u
알려줍니다 . stat
여기서는 단순히 사용자 ID를 출력하도록 요청합니다)
원 라이너를 좋아한다면 두 명령을 연결할 수도 있습니다.
find / -user $(stat -c %u /home/user/) -delete
(물론 -delete
, 아무것도 유지하고 싶지 않은지 확인하고 나머지 명령을 작성하면서 실수를 저지르기 위해 먼저 실행하지 않는 것이 좋습니다. 재귀 삭제 작업을 수행 할 때의 실수 /
는 희미하지 않습니다. 마음의.)
rm
사용하여 전달 xargs
하지만 (결과가 너무 많으면 인수 한계에 도달 할 수 있음) -depth
info manual을 인용하여을 보십시오 . "`find '명령이 디렉토리를 제거하면 다음을 찾을 수 있습니다 `find '가 현재 제거 된 디렉토리로 재귀를 시도 할 때 잘못된 오류 메시지가 나타납니다.`-depth'옵션을 사용하면 일반적으로이 문제가 해결됩니다. " (그리고 나중에 같은 섹션에서 "(`-delete '는`-depth'를 암시합니다)")
find: 'user' is not the name of a known use
/etc/passwd
. 사용자와 그의 ID를 나열하는 매핑은 없습니다 . 숫자 ID를 찾아야합니다. 음주 stat -c %u /home/user/
, 그것으로, 당신에게 사용을 숫자로 된 사용자 ID를 제공해야합니다 xxx
위.
gnu find에는 -nouser 및 -nogroup 옵션이 있습니다 man find
. 이 옵션을 사용하면 파일 시스템에서 / etc / passwd에 해당 사용자가없는 모든 파일을 찾을 수 있습니다. 삭제 된 사용자의 이전 uid로 새 사용자를 작성하지 않은 경우 이러한 분리 된 파일을 찾을 수 있습니다.
그러나 삭제 된 파일에 속한 파일뿐만 아니라 더 많은 파일을 찾을 수 있습니다.
-exec
옵션을 조금 더 제어하려면 find 옵션을 사용하여 사용자 정의 rm 명령을 실행할 수 있지만 YMMV에서는 시도하지 않았습니다.