-o -u 1000 -m
명령 에 옵션을 전달하는 고유하지 않은 ID를 가진 사용자를 만들었습니다 useradd
. 이제 ID는 동일하지만 이름과 홈 디렉터리가 다른 두 명의 사용자가 있습니다.
나는 이것이 (테스트 목적으로) 새로운 깨끗한 환경을 만들고 일부 개발 디렉터리 및 파일에 대해 동일한 액세스 권한을 유지하는 솔루션이 될 수 있다고 생각했습니다.
자신의 데스크톱 환경에서 사용자 생성 및 로그인이 성공했지만 터미널에서 수동으로 시작한 한 응용 프로그램은 원래 사용자의 홈 디렉터리를 사용하고 있었습니다. 그래서 다음 idea.sh
과 같이 시작합니다.부족한_2여전히 사용자의 홈 디렉터리를 사용하고 있었습니다.눈에 띄지 않는.
이것이 어떻게 가능한지? 이 응용 프로그램을 두 번째 사용으로 시작한 경우에도 원래 사용자의 홈 디렉터리를 계속 사용하는 이유는 무엇입니까?
다음은 일부 환경 변수의 내용입니다.
$> echo $HOME
/home/scantlight_2
$> echo $USER
scantlight_2
$> cd ~
$> pwd
/home/scantlight_2
그리고 모든 테스트가 끝난 후,
명령을 사용하여 "scantlight_2" 사용자를 삭제하는 것이 안전합니까? 아니면 일부 충돌을 피하기 위해 파일 userdel
에서 수동으로 삭제해야 합니까 ?/etc/shadow
편집: idea.sh
"IntelliJ IDEA" IDE의 시작 스크립트입니다. bin 디렉토리 콘텐츠를 통해 빠른 재귀를 만들었고 grep
getent 명령을 사용하지 않았습니다. 아래는 내가 사용한 명령입니다.
grep -r -i "getent|passwd" ./idea_install/bin
감사합니다.
답변1
사용자 이름을 관리해야 하는 대부분의 프로그램은 getent()
UID를 찾기 위해 조회를 수행하고 그 이후부터 이를 사용합니다. 이는 사용자가 숫자인 uid로 식별되기 때문입니다. 이름은 예쁜 인쇄와 편리함 그 이상은 아닙니다.
예를 들어, id 1000
또는를 실행 getent passwd 1000
하면 해당 uid에 대한 첫 번째 항목만 표시됩니다.
두 번째 사용자를 삭제하기 위해 유사한 명령을 사용하는 userdel
것은 안전하지 않습니다 .deluser
그 이유는 해당 항목이 삭제될 가능성이 높기 때문입니다.첫 번째uid 1000을 가진 사용자가 찾았습니다.
대신, passwd 및 group 파일을 수동으로 편집해야 합니다.
vipw
그리고vipw -s
편집/etc/passwd
하고/etc/shadow
vigr
그리고vigr -s
편집/etc/group
하고/etc/gshadow