특정 사용자가 시스템에서 제거되면 해당 사용자의 모든 파일이 삭제되는지 확인해야 합니다. 이 시스템에서는 사용자 생성/삭제가 자주 발생하므로 UID를 재사용하고 새 사용자가 이전 사용자의 파일에 액세스할 수 없도록 하고 싶습니다.
내 질문은 두 가지입니다.
- 특정 사용자가 소유한 모든 파일을 찾는 일반적이고 쉬운 방법이 있습니까? 아니면 시스템 전체가
search -uid n
유일한 옵션입니까? - 시스템 전체 검색이 유일한 옵션인 경우 일반 사용자가 일반적으로 쓸 수 있는 디렉터리는 무엇입니까(배포는 다음과 같다고 가정)FHS)?
- 그의 홈 디렉토리
- /tmp
- ??
사용자에게는 sudo
권한이 없으므로 표준 Unix 파일 시스템의 누구나 쓸 수 있는 위치에만 쓸 수 있습니다.
답변1
계정을 삭제하려는 경우 사용하세요 userdel -r
. 그러면 사용자의 home
디렉터리와 해당 내용이 삭제됩니다. 또한 이 사용자에게 속한 메일 스풀 파일이 삭제됩니다.
나는 어떤 디렉토리도 문제의 사용자에게 속한 객체를 보유할 수 없다고 생각합니다. 사용자에게 SUDO 권한이 있는 경우 특히 그렇습니다.
find
삭제하거나 방금 삭제하려는 계정의 UID를 찾는 데 사용합니다 .
find / -user <UID> -exec ls -ld {} +
여기서 UID는 관련 실제 UID 값으로 대체되거나, 계정을 삭제하지 않은 경우 사용자 이름으로 대체됩니다.
또는 일반적으로 더 이상 어떤 이름에도 매핑되지 않는 UID의 경우:
find / -nouser -exec ls -ld {} +
다양한 Unix 버전(HP-UX, AIX 등) 및 Linux 배포판에 이식 가능합니다. GNU find
에서는 .-exec ls -ld {} +
-ls
답변2
나는 스스로 몇 가지 조사를 해보았다. 주요 소스:http://www.tldp.org/LDP/Linux-Filesystem-Hierarchy/html/c23.html
간단히 말해서:사용자가 파일을 생성하는 것을 방해하는 것은 없습니다.. 그러나 표준 Linux FHS에서는 모든 사람이 특정 디렉터리에만 쓸 수 있습니다. 이 규칙을 따르는 배포판을 사용하는 한 다음 디렉터리만 확인해야 합니다(내 시스템에서 테스트한 결과 표시됨).
- /dev/shm (일부 배포판에는 기본적으로 설치됨)
- 사용자 홈 디렉터리
- /var/tmp
- /var/run/screen/S-루벤프
- /tmp
- /mnt/usb-disk (gid=users를 사용하여 마운트됨)
원천:
find -type d |
while read DIR; do
if touch $DIR/test_can_be_removed123 2>/dev/null; then
rm $DIR/test_can_be_removed123
echo $DIR >> writable_directories
fi
done