얼마 전에 우분투를 설치했을 때 더 이상 사용하고 싶지 않은 계정의 어리석은 사용자 이름을 선택했습니다.
응용 프로그램의 설정을 잃어 버리지 않고 어떻게 내 홈 디렉토리의 이름과 터미널의 이름을 포함하여이를 변경합니까?
다양한 인증 (예 : 이메일, SSH, GPG 등)에 대한 권한 및 키를 유지하려면 어떻게합니까?
사용자 이름을 변경하면 어떤 설정이 손실 될 수 있습니까?
얼마 전에 우분투를 설치했을 때 더 이상 사용하고 싶지 않은 계정의 어리석은 사용자 이름을 선택했습니다.
응용 프로그램의 설정을 잃어 버리지 않고 어떻게 내 홈 디렉토리의 이름과 터미널의 이름을 포함하여이를 변경합니까?
다양한 인증 (예 : 이메일, SSH, GPG 등)에 대한 권한 및 키를 유지하려면 어떻게합니까?
사용자 이름을 변경하면 어떤 설정이 손실 될 수 있습니까?
답변:
유닉스 계열 운영 체제는 사용자 이름과 사용자 ID를 분리하므로 ID에 영향을주지 않고 이름을 안전하게 변경할 수 있습니다. 모든 권한, 파일 등은 사용자 이름이 아닌 신원 (uid)과 연결되어 있습니다.
사용자 데이터베이스의 모든 측면을 관리하려면 usermod
도구 를 사용하십시오 .
사용자 이름을 변경하려면 (로그인하지 않고이 작업을 수행하는 것이 가장 좋습니다) :
sudo usermod -l newUsername oldUsername
그러나 홈 폴더 이름은 바뀌지 않습니다.
홈 폴더를 변경하려면
sudo usermod -d /home/newHomeDir -m newUsername
사용자 이름을 변경 한 후
예를 들어, 로그 아웃하고 콘솔 ( Ctrl+ Alt+ F1)로 드롭하고 sudo su -
실제 루트가 될 수 있습니다 ( sudo -s
여기서 $ HOME은 여전히 / home / yourname입니다).이 사용자로부터 여전히 실행중인 일부 프로세스를 종료해야 할 수도 있습니다. 먼저. 그렇게하려면을 입력 ps -u username
하고 일치하는 PID를 찾은 다음로 종료하십시오 kill PID-number
.
업데이트 : 언급 한대로 일부 파일은 이전 홈 디렉토리를 참조 할 수 있습니다. 이전 버전과의 호환성을 위해 심볼릭 링크를 유지 ln -s /home/newname /home/oldname
하거나 파일 내용을 변경할 수 있습니다. 파일 sed -i.bak 's/*oldname*/*newname*/g' *list of files*
확장자는 .bak 인 각 파일에 대한 백업을 만듭니다.
나 같은 경험이없는 사용자를위한 몇 가지 추가 정보 :
하나의 사용자 계정 (관리자) 만 있으므로 사용자 이름을 변경할 수 없습니다 ( "이미 로그인되어 있습니다"는 TTY1 ( Ctrl+ Alt+ F1) 의 응답이었습니다 ). 이 주위에 :
기존 자격 증명으로 로그인하고 TTY1의 "임시"와 같은 새 사용자를 추가하십시오.
sudo adduser temporary
비밀번호를 설정하십시오.
sudo 그룹에 사용자를 추가하여 임시 사용자가 sudo를 실행하도록 허용하십시오.
sudo adduser temporary sudo
exit
.exit
(로그인 프롬프트가 표시 될 때까지)임시 사용자 및 폴더를 삭제하십시오.
sudo deluser temporary
sudo rm -r /home/temporary
grep -IRFl /home/username ~
하면 홈 디렉토리에 대한 참조가 얼마나 많은지 볼 수 있습니다.
/home/.ecryptfs/oldusername/.ecryptfs/Private.mnt
새 홈 폴더를 가리 키도록 편집 해야합니다. 그렇지 않으면 Unity를 통해 로그인 할 수 없습니다.
sudo usermod -d /home/edge -m edge
수율 : usermod: Directory /home/empedokles could not be renamed in /home/edge
즉 4 단계가 작동하지 않습니다.
sudoers
nano
visudo
모두 합치려면 :
"루트"계정의 비밀번호를 설정하십시오.
sudo passwd root
로그 아웃.
exit
"루트"계정과 이전에 설정 한 비밀번호를 사용하여 로그인하십시오.
사용자 이름과 홈 폴더를 원하는 새 이름으로 변경하십시오.
usermod -l <newname> -d /home/<newname> -m <oldname>
그룹 이름을 원하는 새 이름으로 변경하십시오.
groupmod -n <newgroup> <oldgroup>
"루트"계정을 잠그십시오.
passwd -l root
ecryptfs (암호화 된 홈 디렉토리)를 사용중인 경우 새 홈 디렉토리를 반영하도록 암호화 된 디렉토리를 마운트 ecryptfs-recover-private
하고 편집 <mountpoint>/.ecryptfs/Private.mnt
하십시오.
로그 아웃.
exit
Ctrl+ Alt+를 누릅니다 F7.
이제 새 사용자 이름을 사용하여 로그인 할 수 있습니다.
usermod -l
를 얻은 후에는 을 사용하여 user <oldname> is currently used by process <processno>
해당 프로세스 (아마도 데몬 또는 tmux / screen)를 찾을 수 있습니다 ps aux | grep <processno>
. 해당 프로세스를 정상적으로 중지하고 싶을 수도 있습니다 kill <processno>
.
복구 모드에서 다시 시작하고 루트 프롬프트 쉘 ( "Drop to root shell prompt")로 이동하십시오.
먼저 루트를 다시 마운트하십시오
mount -o remount,rw /
사용자 이름과 홈 폴더 이름을 변경하려면
usermod -l <newname> -d /home/<newname> -m <oldname>
그룹 이름의 경우
groupmod -n <newgroup> <oldgroup>
usermod -l <newname> -d /home/<newname> -m <oldname>
오류가 발생 usermod: user oldusername is currently used by process 3170
하고 프로세스를 죽이면 여전히 같은 오류가 발생합니다. 사용 우분투 13.10
우분투 13.10, 14.04, 16.04에서 :
수신 usermod: can't change /etc/password
하면 다음 명령을 실행하십시오.
루트 복구 콘솔에서 다음을 실행하십시오.
mount -o remount,rw /
그런 다음 다시 실행하십시오.
usermod -l <newname> -d /home/<newname> -m <oldname>
@ karthick87에 의해 여기에 나열된 대답은 완벽하게 작동하지만 여기에 안전하고 모든 결함을 피하기 위해해야 할 일이 있습니다.
당신이 usermod -l <newname> -d /home/<newname> -m <oldname>
할
때 useradd: can't change /etc/passwd
이것을 피하기 위해 오류 메시지 sudo --
가 나타납니다. 위의 명령에 추가하십시오.
sudo -- usermod -l <newname> -d /home/<newname> -m <oldname>
과
sudo -- groupmod -n <newgroup> <oldgroup>
모든 PC에 usermod
앱 이있는 것은 아니므로 수동으로 수행 할 수 있습니다. 루트는 현재 /etc/passwd
편집 가능합니다 :
sudo vim /etc/passwd
줄의 시작 부분에서 사용자 이름을 변경하십시오.
user:x:500:501:username:home/user:/bin/bash
에:
newuser:x:500:501:username:home/user:/bin/bash
그런 다음 루트 작업을 한 경우 로그인 user
하고 로그인, 로그 오프 및 다시 로그인 한 경우
usermod
명령을 발견하기 전에이 방법을 시도했지만 사용자의 비밀번호가 더 이상 허용되지 않습니다.
usermod
설치 되어 있지 않은 경우 passwd
패키지의 일부이므로 설치가 중단됩니다 ( 필수) .