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


89

Tôi có một người dùng được đặt tên hedgehogvà tôi muốn anh ta được đặt tên squirrel, nhưng tôi không muốn thay đổi ID người dùng số của anh ta.
Làm thế nào tôi có thể thực hiện điều này?


2
Có lẽ bởi vì đổi tên người dùng không chính xác là một nhiệm vụ mà một SA chuyên nghiệp sẽ phải vật lộn với. (Đối với các câu hỏi downvote.)
HoplessN00b

2
@Jeznet Tôi không hài lòng vì đây không chỉ là một nhiệm vụ cực kỳ đơn giản có thể được giải quyết bằng cách nhập tiêu đề của bạn vào google, bạn cũng đã trả lời câu hỏi của riêng bạn ngay khi bạn hỏi nó. Có vẻ lãng phí thời gian.
boburob

10
@boburob "bạn cũng đã trả lời câu hỏi của chính mình ngay khi bạn hỏi nó. Có vẻ như lãng phí thời gian" vui lòng xem: blog.stackoverflow.com/2011/07/ Khăn
Szymon Jeż

10
@boburob Bạn có thấy hộp đánh dấu đó nói Answer your own question – share your knowledge, Q&A-stylekhi bạn đặt câu hỏi không? Đó là vì một lý do, và sẽ không ở đó nếu họ không muốn nó được sử dụng. (Lý tưởng nhất là những câu hỏi hay hơn, nhưng bất kể, hạ thấp ai đó để trả lời câu hỏi của họ là hình thức xấu.)
HoplessN00b

1
Vâng, tôi cũng đã trả lời câu hỏi của riêng mình trước đây nhưng với tôi, đặt câu hỏi và dán kết quả google trong cùng một phút là một sự lãng phí thời gian
boburob

Câu trả lời:


133

Trong Linux, usermodlệnh thay đổi tên người dùng. Nó sửa đổi các tệp tài khoản hệ thống để phản ánh các thay đổi được chỉ định trên dòng lệnh.

Để thay đổi chỉ tên người dùng:

usermod --login new_username old_username

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

usermod --login new_username --move-home --home path_to_the_new_home_dir old_username

Bạn cũng có thể muốn thay đổi tên của nhóm được liên kết với người dùng:

groupmod --new-name new_username old_username

12
Bạn có thể sử dụng usermod để thực hiện toàn bộ việc sử dụng -l tên người dùng mới -m -d / new / home / dir old-user-name
user9517

5
Cũng lưu ý rằng nhóm cũng không thay đổi. Nếu bạn cần đổi tên old-user-namenhóm là tốt, sử dụng # groupmod -n new-user-name old-user-name.
alxs

1
Đối với hệ thống sử dụng autofs, bạn cũng nên cập nhật /etc/auto.home. Tôi chỉ chạy vào đây.
Steven C. Howell

2
Có thể phải chạy lại visudo để đưa tên người dùng mới vào danh sách sudoers nếu có
Nagev

2
Bạn cũng cần đổi tên tệp crontab nằm trong /var/spool/cron/crontabs/(nếu bạn có bất kỳ công việc nào được cài đặt)
Daniel F

12

LƯU Ý: không thử điều này nếu thư mục của bạn được mã hóa! Nếu đây là trường hợp của bạn, bạn có thể muốn kiểm tra trước: https://askubfox.com/questions/107410/can-you-unencrypt-remove-encoding-from-a-user-home-folder

Cách thẳng ra để làm điều này là:

  1. Tạo một tài khoản tạm thời mới với quyền sudo:

    sudo adduser temp
    sudo adduser temp sudo
    
  2. Đăng xuất khỏi tài khoản hiện tại của bạn và đăng nhập lại bằng tài khoản tạm thời.

  3. Đổi tên tên người dùng và thư mục của bạn:

    sudo usermod -l new-username -m -d /home/new-username old-username
    
  4. Đổi tên nhóm mặc định tên người dùng của bạn:

    sudo groupmod -n new-username old-username
    
  5. Đăng xuất khỏi tài khoản tạm thời và đăng nhập lại vào tài khoản của bạn với tên người dùng mới.

  6. Xóa tài khoản tạm thời:

    sudo userdel -r temp
    

Mặt khác, bạn chỉ cần (1) tạo một người dùng mới và (2) rsyncthư mục nhà của người dùng cũ sang mới và sau đó (3) chown.


Trong CentOS tôi cũng cần phải 'passwd temp' và 'usermod -aG temp'.
Brian Z

4

Nói chung, bạn có thể đổi tên người dùng bằng cách thay đổi tên người dùng của họ trong các tệp /etc/passwd(và /etc/shadow, nếu có). Trên hầu hết các hệ thống unix, vipwlệnh được sử dụng để chỉnh sửa các tệp này (và trên nhiều hệ thống bao gồm một số biện pháp bảo vệ để đảm bảo rằng bạn không làm mọi thứ rối tung quá tệ).
Xem các trang người đàn ông cho passwd(5), shadow(5)vipw(8)cho biết thêm thông tin.

Lưu ý rằng phương pháp trên không đổi tên những thứ khác có thể mang tên người dùng ban đầu (thư mục chính là ví dụ chính, các nhóm cá nhân trên mỗi người dùng (trên các hệ thống sử dụng chúng) là một tên khác). Bạn có thể muốn dọn sạch chúng để đảm bảo tính nhất quán, bằng cách thay đổi các trường thích hợp trong tệp passwd và đổi tên các thư mục.


Một số hệ điều hành cung cấp một cách cụ thể để đổi tên người dùng. Ví dụ, nhiều hệ thống Linux bao gồm usermod(8)lệnh và trên AIX, bạn có thể thay đổi tên tài khoản bằng SMIT (hoặc smittytrong một thiết bị đầu cuối) .
Các lệnh này thường sẽ xử lý các mục dọn dẹp như đổi tên thư mục nhà, nếu bạn yêu cầu chúng.

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.