사용자 및이 사용자가 소유 한 모든 파일을 삭제하십시오.


12

deluser매개 변수없이 사용했습니다 --remove-all-files.

$ deluser 'user'

rm -r /home/user사용자가 이미 소유 한 모든 파일을 제거 하는 것 외에 다른 방법이 있습니까?

답변:


19

파일을 수동으로 찾아야 deluser할 것입니다.

참고하시기 바랍니다 --remove-all-files있다 되지 같은 rm -r /home/user. 후자는 homedir 만 제거합니다 (일반적으로는 아니지만 해당 사용자가 소유하지 않은 파일을 포함 할 수 있음). 전자는 해당 사용자가 소유 한 모든 파일을 시스템에서 제거 합니다 . 최소한 맨 페이지를 신뢰할 수있는 경우 .

GNU find에는 -user테스트가 있으므로 find / -user xxxuser가 소유 한 모든 파일을 찾을 수 있습니다 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, 아무것도 유지하고 싶지 않은지 확인하고 나머지 명령을 작성하면서 실수를 저지르기 위해 먼저 실행하지 않는 것이 좋습니다. 재귀 삭제 작업을 수행 할 때의 실수 /는 희미하지 않습니다. 마음의.)


삭제 -exec옵션을 조금 더 제어하려면 find 옵션을 사용하여 사용자 정의 rm 명령을 실행할 수 있지만 YMMV에서는 시도하지 않았습니다.
agc93

사실, 또는 출력을 rm사용하여 전달 xargs하지만 (결과가 너무 많으면 인수 한계에 도달 할 수 있음) -depthinfo manual을 인용하여을 보십시오 . "`find '명령이 디렉토리를 제거하면 다음을 찾을 수 있습니다 `find '가 현재 제거 된 디렉토리로 재귀를 시도 할 때 잘못된 오류 메시지가 나타납니다.`-depth'옵션을 사용하면 일반적으로이 문제가 해결됩니다. " (그리고 나중에 같은 섹션에서 "(`-delete '는`-depth'를 암시합니다)")
njsg

@njsg 잘 얻는다 :find: 'user' is not the name of a known use
pl1nk 11:31에

1
@ pl1nk : 내가 말했듯이 이미 사용자를 삭제 했으므로 사용자의 숫자 ID를 사용해야합니다 /etc/passwd. 사용자와 그의 ID를 나열하는 매핑은 없습니다 . 숫자 ID를 찾아야합니다. 음주 stat -c %u /home/user/, 그것으로, 당신에게 사용을 숫자로 된 사용자 ID를 제공해야합니다 xxx위.
njsg 2016 년

@njsg 당신은 내가 당신의 질문의 마지막 부분을 읽지 않은 것이 맞습니다.
pl1nk

5

또 다른 옵션은을 사용하여 사용자를 다시 추가하고 adduser이전 UID를 지정한 다음 deluser이번에는 --remove-all-files플래그를 사용하여 다시 실행 하는 것 입니다.

예를 들어 사용자에게 사용자 이름 alice과 UID 가 있다고 가정합니다 1001.

sudo adduser --uid 1001 alice
sudo deluser --remove-all-files alice

3

gnu find에는 -nouser 및 -nogroup 옵션이 있습니다 man find. 이 옵션을 사용하면 파일 시스템에서 / etc / passwd에 해당 사용자가없는 모든 파일을 찾을 수 있습니다. 삭제 된 사용자의 이전 uid로 새 사용자를 작성하지 않은 경우 이러한 분리 된 파일을 찾을 수 있습니다.

그러나 삭제 된 파일에 속한 파일뿐만 아니라 더 많은 파일을 찾을 수 있습니다.


나는 당신이 가장 좋은 대답을 믿습니다! ... "$ find / \ (-nouser -o -nogroup \) -print0 | xargs -0 rm -rf"이 명령은 사용자 나 그룹이없는 모든 파일을 찾습니다. 자동으로 제거합니다.
DanglingPointer 2018 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.