사용자 이름은 어떻게 변경합니까?


325

얼마 전에 우분투를 설치했을 때 더 이상 사용하고 싶지 않은 계정의 어리석은 사용자 이름을 선택했습니다.

응용 프로그램의 설정을 잃어 버리지 않고 어떻게 내 홈 디렉토리의 이름과 터미널의 이름을 포함하여이를 변경합니까?
다양한 인증 (예 : 이메일, SSH, GPG 등)에 대한 권한 및 키를 유지하려면 어떻게합니까?
사용자 이름을 변경하면 어떤 설정이 손실 될 수 있습니까?


왜 /usr/share/applications/users.desktop으로 이동할 수 없습니까? >> 이름을 변경해야하는 사용자를 클릭하십시오. >> 사용자 이름 변경을 클릭하십시오 >> 이름 변경 >> 확인을 클릭하십시오. 나는 이것이 사용자 이름을 변경하는 가장 쉬운 방법이라고 생각하지 않습니까?
Anand

답변:


324

유닉스 계열 운영 체제는 사용자 이름과 사용자 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) 의 응답이었습니다 ). 이 주위에 :

  1. 기존 자격 증명으로 로그인하고 TTY1의 "임시"와 같은 새 사용자를 추가하십시오.

    sudo adduser temporary
    

    비밀번호를 설정하십시오.

  2. sudo 그룹에 사용자를 추가하여 임시 사용자가 sudo를 실행하도록 허용하십시오.

    sudo adduser temporary sudo
    
  3. 명령을 사용하여 로그 아웃하십시오 exit.
  4. tty1 (으)로 돌아 가기 : '임시'사용자 계정 및 비밀번호로 로그인하십시오. 위에서 언급 한대로 사용자 이름과 폴더를 변경하십시오. exit(로그인 프롬프트가 표시 될 때까지)
  5. GUI / 일반 데스크탑 화면에 로그인 하려면 TTY7 ( Ctrl+ Alt+ F7)로 돌아가서 이것이 작동하는지 확인하십시오.
  6. 임시 사용자 및 폴더를 삭제하십시오.

    sudo deluser temporary
    sudo rm -r /home/temporary
    

11
불행히도 $ HOME 아래의 다른 구성 파일에 대해서는 사실이 아니며, 비슷한 것을 실행 grep -IRFl /home/username ~하면 홈 디렉토리에 대한 참조가 얼마나 많은지 볼 수 있습니다.
주선

1
간단한 수정 사항-사용자 계정 편집기를 단일하게 사용하고 다시 시작해야했습니다.
Steve Koch

6
암호화 된 홈 폴더가있는 사용자는 /home/.ecryptfs/oldusername/.ecryptfs/Private.mnt새 홈 폴더를 가리 키도록 편집 해야합니다. 그렇지 않으면 Unity를 통해 로그인 할 수 없습니다.
raphael

2
sudo usermod -d /home/edge -m edge수율 : usermod: Directory /home/empedokles could not be renamed in /home/edge즉 4 단계가 작동하지 않습니다.
empedokles

2
@JTC 는 평범하게 편집 하지 않습니다 . 항상 사용하십시오 . sudoersnanovisudo
스티로폼은

107

모두 합치려면 :

  1. 시작 화면에서 Ctrl+ Alt+를 누릅니다 F1.
  2. 사용자 이름과 비밀번호를 사용하여 로그인하십시오.
  3. "루트"계정의 비밀번호를 설정하십시오.

    sudo passwd root
    
  4. 로그 아웃.

    exit
    
  5. "루트"계정과 이전에 설정 한 비밀번호를 사용하여 로그인하십시오.

  6. 사용자 이름과 홈 폴더를 원하는 새 이름으로 변경하십시오.

    usermod -l <newname> -d /home/<newname> -m <oldname>
    
  7. 그룹 이름을 원하는 새 이름으로 변경하십시오.

    groupmod -n <newgroup> <oldgroup>
    
  8. "루트"계정을 잠그십시오.

    passwd -l root
    
  9. ecryptfs (암호화 된 홈 디렉토리)를 사용중인 경우 새 홈 디렉토리를 반영하도록 암호화 된 디렉토리를 마운트 ecryptfs-recover-private하고 편집 <mountpoint>/.ecryptfs/Private.mnt하십시오.

  10. 로그 아웃.

    exit
    
  11. Ctrl+ Alt+를 누릅니다 F7.

이제 새 사용자 이름을 사용하여 로그인 할 수 있습니다.


6
usermod -l 를 얻은 후에는 을 사용하여 user <oldname> is currently used by process <processno>해당 프로세스 (아마도 데몬 또는 tmux / screen)를 찾을 수 있습니다 ps aux | grep <processno>. 해당 프로세스를 정상적으로 중지하고 싶을 수도 있습니다 kill <processno>.
RedPixel

1
이 의견을 작성해 주셔서 감사합니다. 매우 유용했습니다. 그래도 두 가지 언급 할 수 있습니다. 4 단계 후 재부팅하여 6 단계에서 오류 메시지가 표시되지 않습니다. 또한이 프로세스가 완료되면 / etc / passwd 파일에 이전 사용자 이름과 일치하는 ID 주석이 있습니다. 로그인 화면에 이전 로그인 이름이 표시됩니다. 명령 줄에서 문제를 해결하는 적절한 방법을 찾지 못했지만 사용자 계정에 로그인하여 계정 설정으로 이동하여 "로그인 이름"을 사용자 이름으로 변경하여 문제를 해결했습니다. 이것은 / etc / passwd 파일을 업데이트하고 문제를 해결했습니다.
Jibbers

1
가장 쉽고 확실한 방법입니다. @Jibbers가 제안한 것처럼 4 단계 후에 재부팅하는 것이 좋습니다.
Yerke

"파일 브라우저 창의 북마크"가 이제 이전 폴더를 가리키고 있으므로 해당 북마크를 삭제해야합니다.
ollydbg23

작동하지 않습니다. 처음에 Ctrl + Alt + F1을 누르면 허용되지 않는 새로 만든 사용자에 로그인하려고합니다.
empedokles

27

복구 모드에서 다시 시작하고 루트 프롬프트 쉘 ( "Drop to root shell prompt")로 이동하십시오.

먼저 루트를 다시 마운트하십시오

mount -o remount,rw /

사용자 이름과 홈 폴더 이름을 변경하려면

usermod -l <newname> -d /home/<newname> -m <oldname>

그룹 이름의 경우

groupmod -n <newgroup> <oldgroup>

1
내가 이것을 사용할 때 usermod -l <newname> -d /home/<newname> -m <oldname>오류가 발생 usermod: user oldusername is currently used by process 3170하고 프로세스를 죽이면 여전히 같은 오류가 발생합니다. 사용 우분투 13.10
Waqas

4
귀하의 홈 디렉토리가 암호화되어 있으면 이것을하지 마십시오 !!!! 이 절차를 따랐는데 2 시간이 걸렸습니다. 복구 할 수있는 유일한 방법은이 절차를 다시 수행하고 원래 (싫은) 이름을 다시 넣는 것입니다. "chdir을 마운트 할 수 없습니다. point "
Mike

왜 /usr/share/applications/users.desktop으로 이동할 수 없습니까? >> 이름을 변경해야하는 사용자를 클릭하십시오. >> 사용자 이름 변경을 클릭하십시오 >> 이름 변경 >> 확인을 클릭하십시오. 나는 이것이 사용자 이름을 변경하는 가장 쉬운 방법이라고 생각하지 않습니까?
Anand

9

우분투 13.10, 14.04, 16.04에서 :

  1. "시스템 설정"아이콘을 클릭하십시오.
  2. "사용자 계정"을 클릭하십시오.
  3. 관리자 계정이 표시되어야합니다.
  4. "잠금 해제"버튼을 클릭하십시오.
  5. 계정을 변경할 수 있도록 요청 된대로 사용자 비밀번호를 입력하십시오.
  6. 잠금 해제되면 변경하려는 이전 사용자 이름을 클릭하고 새 사용자 이름을 입력하여 바꿀 수 있습니다.
  7. 새로운 이름을 입력했으면 "잠금"버튼을 클릭하여 변경 사항을 영구적으로 적용하십시오.
  8. 우분투를 다시 시작하십시오.

3
이것은 나를 위해 사용자 이름을 변경하지 않았으며 이름 만 변경했습니다. 이전 사용자 이름은 터미널에 여전히 홈 디렉토리 및 그룹으로 나타납니다 (재부팅 한 후에도).
DougC

3

수신 usermod: can't change /etc/password하면 다음 명령을 실행하십시오.

루트 복구 콘솔에서 다음을 실행하십시오.

mount -o remount,rw /

그런 다음 다시 실행하십시오.

usermod -l <newname> -d /home/<newname> -m <oldname>

왜 /usr/share/applications/users.desktop으로 이동할 수 없습니까? >> 이름을 변경해야하는 사용자를 클릭하십시오. >> 사용자 이름 변경을 클릭하십시오 >> 이름 변경 >> 확인을 클릭하십시오. 나는 이것이 사용자 이름을 변경하는 가장 쉬운 방법이라고 생각하지 않습니까?
Anand

1

@ karthick87에 의해 여기에 나열된 대답은 완벽하게 작동하지만 여기에 안전하고 모든 결함을 피하기 위해해야 ​​할 일이 있습니다.

  1. 별도의 계정 / 사용자를 만들고이 계정 / 사용자 루트 기능을 확인하거나 루트 가능한 사용자로 로그인하십시오.
  2. 현재 계정으로 로그 아웃 한 다음 1 단계에서 언급 한 계정으로 로그인하십시오.
  3. 이전 사용자의 모든 프로세스를 종료하십시오.
  4. 이제 @ karthick87에서 언급 한 단계를 수행하고 username과 홈 디렉토리 소유자를 변경하십시오.
  5. 그런 다음 @Sriraj Hebbar의 답변에 따라 그룹 이름을 변경하십시오.
  6. 예비 사용자로 로그 아웃하고 사용자로 로그인하십시오. 추가 사용자를 만든 경우 삭제하십시오.

0

당신이 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>

-3

모든 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명령을 발견하기 전에이 방법을 시도했지만 사용자의 비밀번호가 더 이상 허용되지 않습니다.
Ben Voigt

@BenVoigt 모든 PC에 사용자 모드가있는 것은 아닙니다
Малъ Скрылевъ

3
우분투입니다! usermod설치 되어 있지 않은 경우 passwd패키지의 일부이므로 설치가 중단됩니다 ( 필수) .
Auspex
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.