그래서 책에 나오는 연습문제를 숙제로 해야 했어요. 먼저 다음과 같이 사용자를 생성해야 합니다.
useradd -c "Steven Baxter" -s "/bin/sh" sbaxter
/home/sbaxter
그런 다음 해당 디렉터리에 일부 파일을 추가 해야 합니다 .
touch /home/sbaxter/ some.txt new.txt files.txt
그런 다음 해당 사용자를 삭제 sbaxter
하고 이름이 새 사용자를 만들어야 합니다 mjane
. 놀랍게도 를 실행하면 find /home/ -user mjane
새 사용자가 mjane
이제 sbaxter에 대한 모든 이전 파일을 갖게 됩니다. 무슨 일이 일어났습니까?
답변1
악마는 세부사항과 useradd
매뉴얼 페이지에 있습니다(를 실행하여 이를 볼 수 있습니다 man 8 useradd
):
-u, --uid UID
The numerical value of the user's ID. This value must be unique,
unless the -o option is used. The value must be non-negative. The
default is to use the smallest ID value greater than or equal to
UID_MIN and greater than every other user.
따라서 기본값은 비밀번호 파일에서 사용되지 않은 가장 작은 uid, 즉 다른 사용자의 uid보다 큰 값입니다. sbaxter를 제거하면 passwd 파일에서 제거되므로 그의 uid는 "무료"이며 mjane에 할당됩니다( useradd
이 명령을 사용할 때 두 사용자가 선택한 uid가 동일하기 때문입니다).useradd
디스크의 파일은 사용자 이름 변환이 아닌 uid만 저장합니다(이 변환은 비밀번호 파일에 정의되어 있기 때문입니다). ls -ln
uid 소유권 파일의 내용을 보는 명령을 실행하여 이를 확인할 수 있습니다 .
나는 실제로 당신을 추천하고 싶습니다장애를 입히다계정을 삭제하는 대신 대부분의 Linux 배포판에서 계정을 잠그는 방법은 비밀번호를 잠그고 계정이 오늘 만료되도록 설정하는 방법을 통해 수행할 수 있습니다 (다음 을 사용하여 usermod -L -e today <username>
계정의 만료 날짜를 볼 수 있습니다).chage -l
답변2
삭제된 사용자의 UID는 새 사용자에 의해 재사용되며, 파일 시스템은 UID를 사용하여 사용자 이름이 아닌 소유권을 나타냅니다.