Làm cách nào để thay đổi tên người dùng?


325

Cách đây một thời gian, khi tôi cài đặt Ubuntu, tôi đã chọn một tên người dùng khá ngu ngốc cho tài khoản của mình mà tôi không muốn sử dụng nữa.

Làm cách nào để thay đổi điều này (bao gồm tên của thư mục chính của tôi và tên trong thiết bị đầu cuối) mà không mất cài đặt cho các ứng dụng?
Làm cách nào để giữ quyền và khóa của tôi để xác thực khác nhau (ví dụ: email, SSH, GPG và hơn thế nữa)?
Những cài đặt nào có thể bị mất nếu tôi thay đổi tên người dùng?


Tại sao chúng ta không thể điều hướng đến /usr/share/appluggest/users.desktop >> Nhấp vào người dùng mà tên phải được thay đổi. >> Nhấp vào Thay đổi tên người dùng >> Thay đổi tên >> Nhấp vào Ok. Tôi nghĩ, đây sẽ là cách dễ nhất để thay đổi tên người dùng, phải không?
Anand

Câu trả lời:


324

Các hệ điều hành giống như Unix tách tên người dùng khỏi danh tính người dùng, do đó bạn có thể thay đổi tên một cách an toàn mà không ảnh hưởng đến ID. Tất cả các quyền, tệp, v.v. được gắn với danh tính của bạn (uid), không phải tên người dùng của bạn.

Để quản lý mọi khía cạnh của cơ sở dữ liệu người dùng, bạn sử dụng usermodcông cụ.

Để thay đổi tên người dùng (có lẽ tốt nhất là làm điều này mà không cần đăng nhập):

sudo usermod -l newUsername oldUsername

Điều này tuy nhiên, không đổi tên thư mục nhà.

Để thay đổi thư mục nhà, hãy sử dụng

sudo usermod -d /home/newHomeDir -m newUsername

sau khi bạn thay đổi tên người dùng.

Chẳng hạn, bạn có thể đăng xuất, thả vào bảng điều khiển ( Ctrl+ Alt+ F1) và sudo su -để trở thành root thực sự (trái ngược với sudo -s, $ HOME vẫn là / home / yourname.) Có lẽ bạn cũng phải giết một số tiến trình vẫn đang chạy từ người dùng này Đầu tiên. Để làm như vậy, hãy nhập ps -u username, tìm kiếm PID phù hợp và tiêu diệt chúng bằng cách kill PID-number.

Cập nhật: như sắp xếp đã đề cập, một số tệp có thể tham chiếu thư mục nhà cũ của bạn. Bạn có thể giữ một liên kết tượng trưng để tương thích ngược, ví dụ: ln -s /home/newname /home/oldnamehoặc bạn có thể thay đổi nội dung tệp bằng sed -i.bak 's/*oldname*/*newname*/g' *list of files*Nó tạo bản sao lưu cho mỗi tệp có đuôi .bak.

Một số thông tin bổ sung cho những người dùng không có kinh nghiệm như tôi:
Vì tôi chỉ có MỘT tài khoản người dùng (quản trị viên), nó sẽ không cho phép tôi thay đổi tên người dùng ("bạn đã đăng nhập" là phản hồi trong TTY1 ( Ctrl+ Alt+ F1). xung quanh đây:

  1. Đăng nhập bằng thông tin đăng nhập cũ của bạn và thêm người dùng mới, ví dụ: "tạm thời" trong TTY1:

    sudo adduser temporary
    

    đặt mật khẩu.

  2. Cho phép người dùng tạm thời chạy sudo bằng cách thêm người dùng vào nhóm sudo:

    sudo adduser temporary sudo
    
  3. Đăng xuất bằng lệnh exit.
  4. Quay trở lại tty1: Đăng nhập bằng tài khoản và mật khẩu người dùng 'tạm thời'. Thay đổi tên người dùng và thư mục của bạn như đã đề cập ở trên. exit(cho đến khi bạn nhận được lời nhắc đăng nhập)
  5. Quay trở lại TTY7 ( Ctrl+ Alt+ F7) để đăng nhập trên GUI / màn hình máy tính bình thường và xem điều này có hoạt động không.
  6. Xóa người dùng và thư mục tạm thời:

    sudo deluser temporary
    sudo rm -r /home/temporary
    

11
Thật không may, điều này không đúng với các tệp cấu hình khác nhau trong $ HOME, hãy thử chạy một cái gì đó như grep -IRFl /home/username ~và bạn sẽ thấy có bao nhiêu tài liệu tham khảo đến thư mục chính của bạn được lưu trữ ở đó.
sắp xếp

1
Là một sửa chữa đơn giản - Chỉ cần sử dụng trình chỉnh sửa Tài khoản người dùng để thống nhất, sau đó khởi động lại.
Steve Koch

6
Đối với những người có thư mục nhà được mã hóa, bạn sẽ phải chỉnh sửa /home/.ecryptfs/oldusername/.ecryptfs/Private.mntđể trỏ đến thư mục nhà mới của mình, nếu không bạn sẽ không thể đăng nhập qua Unity.
raphael

2
sudo usermod -d /home/edge -m edgenăng suất: usermod: Directory /home/empedokles could not be renamed in /home/edgetức là bước 4 sẽ không hoạt động.
empedokles

2
@JTC không bao giờ chỉnh sửa sudoersvới đồng bằng nano. Luôn luôn sử dụng visudo.
xốp bay

108

Để kết hợp tất cả lại với nhau:

  1. Tại màn hình bắt đầu nhấn Ctrl+ Alt+ F1.
  2. Đăng nhập bằng tên người dùng và mật khẩu của bạn.
  3. Đặt mật khẩu cho tài khoản "root".

    sudo passwd root
    
  4. Đăng xuất.

    exit
    
  5. Đăng nhập bằng tài khoản "root" và mật khẩu bạn đã đặt trước đó.

  6. Thay đổi tên người dùng và thư mục nhà thành tên mới mà bạn muốn.

    usermod -l <newname> -d /home/<newname> -m <oldname>
    
  7. Thay đổi tên nhóm thành tên mới mà bạn muốn.

    groupmod -n <newgroup> <oldgroup>
    
  8. Khóa tài khoản "root".

    passwd -l root
    
  9. Nếu bạn đang sử dụng ecryptfs (thư mục nhà được mã hóa). Gắn thư mục được mã hóa của bạn bằng cách sử dụng ecryptfs-recover-privatevà chỉnh sửa <mountpoint>/.ecryptfs/Private.mntđể phản ánh thư mục nhà mới của bạn.

  10. Đăng xuất.

    exit
    
  11. Nhấn Ctrl+ Alt+ F7.

Và bây giờ bạn có thể đăng nhập bằng tên người dùng mới của bạn.


6
Nếu sau khi usermod -l bạn nhận được a user <oldname> is currently used by process <processno>, bạn có thể tìm thấy quá trình đó (có thể là daemon hoặc tmux / screen) bằng cách sử dụng ps aux | grep <processno>. Bạn có thể muốn dừng quá trình đó một cách duyên dáng, nếu không bạn có thể kill <processno>.
RedPixel

1
Cảm ơn bạn đã đặt bình luận này cùng nhau. Nó rất hữu ích. Hai điều có thể được đề cập mặc dù. Sau bước 4, tôi đã khởi động lại để không nhận được thông báo lỗi ở bước 6. Ngoài ra, sau khi quá trình này hoàn tất, tệp / etc / passwd sẽ có và nhận xét ID khớp với tên người dùng cũ. Điều này sẽ khiến màn hình đăng nhập hiển thị tên đăng nhập cũ. Tôi không thể tìm thấy một cách hay để sửa nó từ dòng lệnh, nhưng tôi đã sửa nó bằng cách đăng nhập vào tài khoản người dùng, vào cài đặt tài khoản và thay đổi "Tên đăng nhập" thành tên người dùng. Điều này đã cập nhật tệp / etc / passwd và khắc phục sự cố.
Jibbers 28/03/2016

1
Đây là cách dễ dàng và dễ dàng nhất để làm điều đó. Khởi động lại tốt hơn sau bước 4 như @Jibbers đề xuất.
Yerke

Tôi muốn đề cập rằng "dấu trang trong cửa sổ trình duyệt tệp" hiện đang trỏ đến các thư mục cũ, vì vậy tôi phải xóa các dấu trang đó.
ollydbg23

Sẽ không làm việc. Nếu bạn nhấn Ctrl + Alt + F1 lúc đầu, nó sẽ cố đăng nhập vào người dùng mới được tạo mà nó sẽ không cho phép.
empedokles

27

Khởi động lại trong chế độ phục hồi và đi đến trình bao nhắc gốc ("Thả xuống dấu nhắc trình bao gốc")

Đầu tiên kể lại gốc

mount -o remount,rw /

Để thay đổi tên người dùng và tên thư mục nhà,

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

Đối với tên nhóm,

groupmod -n <newgroup> <oldgroup>

1
Khi tôi sử dụng, usermod -l <newname> -d /home/<newname> -m <oldname>điều này mang lại cho tôi lỗi usermod: user oldusername is currently used by process 3170và nếu tôi giết quá trình thì nó vẫn báo lỗi tương tự. sử dụng Ubuntu 13.10
Waqas

4
ĐỪNG LÀM ĐIỀU NÀY NẾU TRỰC TIẾP TẠI NHÀ CỦA BẠN ĐƯỢC YÊU CẦU !!!! Tôi đã làm theo quy trình này và nó đã gửi cho tôi một chuyến đi hoang dã kéo dài 2 giờ ... Cách duy nhất để phục hồi là thực hiện lại quy trình này và đặt lại tên gốc (không thích). Vấn đề bạn sẽ gặp phải là "Không thể chdir vào mount điểm "
Mike

Tại sao chúng ta không thể điều hướng đến /usr/share/appluggest/users.desktop >> Nhấp vào người dùng mà tên phải được thay đổi. >> Nhấp vào Thay đổi tên người dùng >> Thay đổi tên >> Nhấp vào Ok. Tôi nghĩ, đây sẽ là cách dễ nhất để thay đổi tên người dùng, phải không?
Anand

9

Trên Ubuntu 13.10, 14.04, 16.04:

  1. Nhấp vào biểu tượng "Cài đặt hệ thống".
  2. Nhấp vào "Tài khoản người dùng".
  3. Tài khoản quản trị viên của bạn sẽ được hiển thị.
  4. Nhấp vào nút "Mở khóa".
  5. Nhập mật khẩu người dùng của bạn theo yêu cầu để cho phép thay đổi tài khoản của bạn.
  6. Sau khi mở khóa, bạn có thể nhấp vào tên người dùng cũ mà bạn muốn thay đổi và nhập tên người dùng mới để thay thế.
  7. Khi bạn đã nhập tên mới, nhấp vào nút "Khóa" để thay đổi vĩnh viễn.
  8. Khởi động lại Ubuntu.

3
Điều này đã không thay đổi tên người dùng cho tôi, chỉ tên. Tên người dùng cũ vẫn xuất hiện trong thiết bị đầu cuối và dưới dạng thư mục chính và nhóm (ngay cả sau khi khởi động lại).
DougC

3

Khi nhận usermod: can't change /etc/passwordchỉ cần chạy các lệnh sau:

Trong bảng điều khiển phục hồi gốc chạy:

mount -o remount,rw /

Sau đó chạy lại:

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

Tại sao chúng ta không thể điều hướng đến /usr/share/appluggest/users.desktop >> Nhấp vào người dùng mà tên phải được thay đổi. >> Nhấp vào Thay đổi tên người dùng >> Thay đổi tên >> Nhấp vào Ok. Tôi nghĩ, đây sẽ là cách dễ nhất để thay đổi tên người dùng, phải không?
Anand

1

Câu trả lời được liệt kê ở đây bởi @ karthick87 hoạt động hoàn toàn tốt nhưng đây là những gì tôi sẽ làm chỉ để an toàn và tránh mọi trục trặc:

  1. Tạo một tài khoản / người dùng riêng và đảm bảo khả năng root tài khoản / người dùng này hoặc đăng nhập như bất kỳ người dùng có khả năng root nào.
  2. Đăng xuất bằng tài khoản hiện tại và sau đó đăng nhập bằng tài khoản được đề cập ở bước 1.
  3. Giết tất cả các quá trình của người dùng trước.
  4. Bây giờ hãy làm theo các bước được đề cập bởi @ karthick87 và thay đổi tên người dùng và chủ sở hữu thư mục chính.
  5. Sau đó làm theo câu trả lời của @Sriraj Hebbar để thay đổi tên nhóm.
  6. đăng xuất với người dùng dự phòng và đăng nhập với người dùng của bạn. Nếu bạn tạo thêm một người dùng xóa nó.

0

Khi bạn làm, usermod -l <newname> -d /home/<newname> -m <oldname>bạn sẽ nhận được useradd: can't change /etc/passwdthông báo lỗi để tránh điều này chỉ cần thêm sudo --vào lệnh trên như

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

sudo --  groupmod -n <newgroup> <oldgroup>

-3

Vì không phải tất cả các PC đều có usermodứng dụng nên bạn có thể thực hiện thủ công. Khi root mở /etc/passwdđể chỉnh sửa:

sudo vim /etc/passwd

và thay đổi tên người dùng ở đầu dòng:

user:x:500:501:username:home/user:/bin/bash

đến:

newuser:x:500:501:username:home/user:/bin/bash

sau đó nếu bạn đã làm việc với root chỉ cần đăng nhập và nếu bạn đã đăng nhập, đăng xuất và đăng nhập lại user.


Tôi đã thử cách này (trước khi tôi phát hiện ra usermodlệnh) và mật khẩu của người dùng không còn được chấp nhận.
Ben Voigt

@BenVoigt không phải tất cả các chiếc có usermod
Малъ Скрылевъ

3
Đó là Ubuntu! Nếu nó không có usermodcài đặt của bạn bị hỏng vì nó là một phần của passwdgói, điều này là bắt buộc .
Auspex
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.