우분투 또는 리눅스에서 사용자 이름을 변경하는 올바른 방법


26

Ubuntu 12.04를 사용하고 있으며 일부 사용자 정의를 수행했습니다. 또한 맞춤형 우분투 인 새로운 iso로 만들 것입니다.

묻고 싶은 것은 사용자 이름을 어떻게 바꿀 수 있는지입니다. 현재 홈 폴더에 많은 구성이 있습니다. 그래서 나는 사용자 이름 변경을 망쳐 놓고 싶지 않습니다.

그렇다면 모범 사례 나 워크 플로가 있습니까?


홈 디렉토리는 종종 사용자 이름으로 작성되지만 / etc / passwd 및 / etc / shadow에있는 항목의 첫 번째 요소를 변경하여 홈 디렉토리를 변경하지 않고 사용자 이름을 변경할 수 있습니다. 실수 한 경우를 대비하여 사용자 로그인에서 sudo가 아닌 root로 로그인 할 수 있는지 확인하십시오.
Anthon

홈 디렉토리의 이름을 변경하려면 어떻게합니까? 첫 번째 요소는 정확히 무엇을 의미합니까?
CorpusCallosum

답변:


28

정말 올바른 방법? 사용자 'peter'를 'paul'으로 변경한다고 가정하십시오.

groupadd paul
usermod -d /home/paul -m -g paul -l paul peter

그러면 모든 파일과 함께 해당 디렉토리의 이름, 그룹, 홈 디렉토리 및 소유권과 그룹이 새 디렉토리로 변경됩니다. 원래 'paul'으로 생성 된 것과 구별 할 수없는 사용자가됩니다.

또 다른 방법은 /etc/passwd/etc/shadow파일 에서 peter 항목의 첫 번째 필드를 편집하는 것 입니다. 그런 다음에서 'peter'의 모든 항목을 'paul'으로 변경하십시오 /etc/group. 그런 다음에서 홈 디렉토리 이름을 변경 /home/peter하는 /home/paul. 그런 다음 chown -R paul /home/peter디렉토리와 그 아래의 모든 파일과 디렉토리의 소유권과 그룹을 가져 와서 새로운 디렉토리를 갖습니다.


3
/ etc / {passwd, shadow, group}을 편집 한 경우 chown이 필요 없습니다. inode는 소유자 및 그룹을 수치로 저장합니다.
Graham Nicholls

5

사용자 이름을 변경하지 않는 것이 좋습니다. 이것은 일반적으로 사용자의 홈 디렉토리 형식으로 구성 파일에서 사용자 이름이 정적으로 참조 될 때 문제가 발생합니다 /home/<username>. 이것들은 거의 일반적인 방식으로 작성되지 않으므로 일반적으로 새 사용자 이름을 만든 다음 사용자의 파일과 데이터를 새 계정으로 마이그레이션하는 것이 가장 좋습니다.


1
의견 주셔서 감사합니다. 새 사용자를 만들고 이전 사용자에 대한 userid / 그룹 및 홈 디렉토리를 변경했습니다. 모든 것이 멋지게 작동하는 것 같습니다. 이 방법으로도 문제가 발생할 수 있다고 생각하십니까?
CorpusCallosum

3

usermod 명령을 시도하십시오 .

exec sudo su
usermod --login newname oldname

그냥 '무슨 일을하려고합니까?' sudo su를 수행하면 명령이 제대로 기록되지 않습니다.
Keith Twombley

3

변경할 수 있습니다. 사용자 이름어떻게 변경합니까?를 참조하십시오 . AskUbuntu에서. 그 지시 사항은 저에게 효과적이었습니다. 구성을 유지하려면 해당 질문에 대한 답변에 설명 된대로 기존 홈 디렉토리에 대한 심볼릭 링크를 만드십시오.


3

usermod를 사용하여 사용자 이름홈 디렉토리 를 변경하십시오 . 사용자 peter를 paul로 변경하십시오.

usermod -l paul peter
grep paul /etc/passwd /etc/shadow       # check

홈 디렉토리를 변경하고 모든 것을 이동하십시오 (필요한 경우 생성됨)

usermod -m -d /home/paul paul
grep paul /etc/passwd               # check

그룹 이름을 변경 하되, 먼저 다른 그룹 (예 : GID 1001)을 만들어야하므로 $ HOME 디렉토리 내의 모든 항목에 대해 GID를 업데이트하지만 usermod를 사용하지 마십시오. 이전 그룹 소유권이있는 다른 파일 및 디렉토리 대신 그룹 이름을 수동으로 변경하십시오.

nano /etc/group

그리고 변화

peter:x:1000:

paul:x:1000:

cron, at 및 UID 대신 사용자 이름을 사용하는 기타 서비스 에서 사용하는 파일 이름을 변경해야합니다 . 용도

find /var -name "*peter*"

이 파일들을 찾으십시오.

메일 처리 응용 프로그램과 같은 일부 서비스에서 사용 하는 구성 파일도 변경해야 합니다.

마지막으로 "/ home / peter /"를 사용하는 스크립트 를 편집해야합니다. "/ home / peter /"의 발생을 "$ HOME"으로 변경하십시오.

사용자 아이덴티티를 변경하는 것은 많은 일이 아니므로 철저히해야합니다.


이것이 내가 사용하는 것과 동일한 접근 방식이기 때문에 (GID 보존과 관련하여 동일한 이유로) 반대했습니다. BTW, 실제로 두 usermod명령을 하나로 결합 할 수 /etc/gshadow있으며 함께 편집해야합니다 /etc/group. : GNU 변경할 수 있습니다 그들 중 두 사람은 나오지도 sudo sed -i 's/oldname/newname/g' /etc/{group,gshadow}여전히 더 나은 또는 - sudo groupmod -n newname oldname. 사용자의 crontab 이름 (있는 경우)을 수동으로 변경해야하는 등의 다른 문제를 강조하기 위해 잘 수행했습니다.
Anthony G-

이것에 대한 빠른 부록 ...이 작업을 수행하는 동안 로그인 할 수 없습니다. sudoers 그룹의 일부인 새 임시 사용자를 작성하고, 로그인하여 변경하고, 새 임시 계정에서 로그 아웃하고 이름을 바꾼 사용자로 로그인 한 후 임시 계정을 삭제하십시오.
야누스
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.