Có thể đổi tên tài khoản người dùng Unix không?


48

Tôi đã cài đặt Ubuntu trên một máy tính hiện đang được người khác sử dụng. Tôi đã đổi tên tài khoản với tên của cô ấy, nhưng nó chỉ thay đổi tên đầy đủ, không phải tên người dùng, vẫn được hiển thị ở trên cùng bên phải (ở phần fast-user-switch-applet). Có một lệnh để đổi tên một tài khoản người dùng Unix?

Tôi đã nghĩ đến việc tạo một tài khoản người dùng mới với tên mới và sau đó sao chép mọi thứ trong ngôi nhà "cũ" vào nhà của tài khoản mới. Nó sẽ là đủ? Nhưng sau đó tôi nghĩ các tệp sẽ có chủ sở hữu quyền của tài khoản cũ? Vậy tôi nên làm gì chown -R newuser ~?

Có một cách đơn giản / đề nghị để làm điều này?

Câu trả lời:


52

Thử

usermod --move-home --login <new-login-name> --home <new-home-dir> <old-login-name>

Các --move-hometùy chọn di chuyển nội dung thư mục home của cũ sang cái mới được đưa ra bởi --hometùy chọn mà được tạo ra nếu nó không tồn tại.

Nếu bạn muốn nhóm người dùng chính khớp với new-login-name, hãy thêm --gid <new-login-name>vào lệnh trên, nhưng nhóm phải tồn tại trước.

Xem trang người đàn ông để biết thêm:

man usermod

Cảm ơn! Tôi không biết về lệnh này. :) Tuy nhiên, đó là tài khoản duy nhất trên máy tính này và người đàn ông nói điều này: «Bạn phải chắc chắn rằng người dùng được đặt tên sẽ không thực hiện bất kỳ quy trình nào khi lệnh này được thực thi nếu ID người dùng số, tên người dùng hoặc thư mục nhà của người dùng đang được thay đổi. usermod kiểm tra điều này trên Linux, nhưng chỉ kiểm tra xem người dùng có đăng nhập theo utmp trên các kiến ​​trúc khác không. »Bạn có đề nghị sử dụng một đĩa CD trực tiếp để làm điều này hoặc tạo một tài khoản tạm thời mà tôi sẽ xóa sau khi hoàn thành?
Yann Dìnendal

2
Vì bạn đang sử dụng Ubuntu và không thể đăng nhập bằng root, tôi sẽ tạo một tài khoản khác có tên là admin, bạn sử dụng cho loại nhiệm vụ này. Một tài khoản tạm thời cũng sẽ hoạt động tốt nhưng bạn cũng có thể giữ nó vì bạn có thể làm những việc tương tự trong tương lai.
gvkv

3
Xin lưu ý rằng usermod --homephải chứa đường dẫn đầy đủ, ví dụ /home/user.name- nếu không thư mục chính mới sẽ được tạo bên trong thư mục làm việc hiện tại.
feeela

Điều đó sẽ không thay đổi nhóm!
Heanz

22

Mặc dù có thể đổi tên người dùng và usermodsẽ thực hiện một số công việc , nhưng điều này hoàn toàn có thể gây rắc rối. Đây là danh sách các địa điểm mà tên người dùng có thể xuất hiện; Tôi không tuyên bố rằng danh sách này là đầy đủ.

  • Mục người dùng trong /etc/passwdvà các tập tin liên quan (ví dụ /etc/shadow, /etc/master.passwd).
  • Mục nhập nhóm trong /etc/group(và /etc/gshadow).
  • Có thể các mục trong /etc/sudoers.
  • Hộp thư hệ thống, thường /var/mail/$USERhoặc /var/spool/mail/$USER.
  • Crontab, điển hình là /var/spool/cron/crontabs/$USER
  • Trong atcông việc ( /var/spool/cron/atjobs/*)

Thư mục nhà có khả năng xuất hiện ở nhiều nơi hơn nữa. Nhiều ứng dụng viết đường dẫn tuyệt đối trong các tập tin dấu chấm khác nhau. Nếu bạn quyết định đổi tên thư mục chính cũng như (trong khi không có yêu cầu mà người dùng alicecủa thư mục chủ được /home/alice, có nó được /home/bobsẽ gây nhầm lẫn), bạn sẽ cần phải chăm sóc của những người. Một sự thay thế toàn cầu sẽ hoạt động cho hầu hết các ứng dụng, nhưng tôi không hứa hẹn. Nếu có thể, hãy giữ tên thư mục nhà cũ dưới dạng liên kết tượng trưng đến thư mục được đổi tên.


4

Dưới đây là tóm tắt về các lệnh tôi đã sử dụng trên hệ thống Debian:

groupadd NEW
usermod -l NEW -m -d /home/NEW -g NEW OLD
chfn -f "New Fullname" NEW
cd /home
ln -s NEW OLD

Hai lệnh cuối cùng tạo một liên kết tượng trưng từ tên của thư mục nhà cũ ( / home / OLD ) đến tên của thư mục mới ( / home / NEW ).


Để làm gì groupadd?
Yann Dìnendal

2
Thay vì groupadd, tôi đoán có lẽ tốt hơn groupmod -n NEW OLDlà tránh thay đổi gid. Ít nhất trên Ubuntu, một nhóm có cùng tên với người dùng được thiết lập theo mặc định, vì vậy người ta cũng muốn thay đổi tên đó.
jamadagni

1

tất cả ở trên là các phương thức thanh lịch, nhưng tại sao không chỉ tạo một người dùng mới, sao chép tất cả nội dung chính của nó từ cái đầu tiên, và đó là nó? tất nhiên, nếu đó là về một tài khoản (ứng dụng), có lẽ đó không phải là cách tốt nhất


3
Có vẻ như điều này có thể được đặt tốt hơn như là một bình luận thay vì một bài trả lời đầy đủ mà hầu như không có gì ngoài việc đề cập đến một giải pháp đã được đề cập trong OP. Bạn nên xem xét thêm một số thông tin về lý do tại sao bạn nghĩ giải pháp này tốt hơn, hoặc thậm chí có thể chấp nhận được.
HalosGhost
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.