Khi cố gắng thay đổi tên người dùng, thiết bị đầu cuối cho tôi biết người dùng hiện đang được sử dụng theo quy trình


16

Tôi đang cố gắng thay đổi tên người dùng của mình, theo lời khuyên ở đây tuy nhiên sau khi chạy lệnh sau:

CurrentName@HostName ~ $ sudo usermod -l TheNameIWantToChange -d /home/TheNameIWantToChange -m CurrentName

Terminal trả lời:

CurrentName@HostName ~ $ usermod: user CurrentName is currently used by process 2491

Và tên người dùng vẫn giữ nguyên. Có ai biết làm thế nào tôi có thể sửa lỗi này và thay đổi tên người dùng của tôi không?

Câu trả lời:


8

Để trích dẫn man usermod:

CAVEATS
   You must make certain that the named user is not executing any 
   processes when this command is being executed
   if the user's numerical user ID, the user's name, or the user's home 
   directory is being changed.  usermod
   checks this on Linux, but only check if the user is logged in 
   according to utmp on other architectures.

Vì vậy, bạn cần đảm bảo rằng người dùng mà bạn đổi tên không đăng nhập.

Ngoài ra, tôi lưu ý rằng bạn không chạy nó dưới dạng root. Hoặc chạy nó dưới quyền root hoặc chạy với "sudo usermod".


3
nếu bạn không thể giết tiến trình mà không khởi động lại, hãy kết hợp lệnh, ví dụ:kill -9 23162 && sudo usermod -l TheNameIWantToChange -d /home/TheNameIWantToChange -m CurrentName
Richard Frank

2
Chương trình usermoddường như bị phá vỡ bởi thiết kế. Nếu việc quản lý người dùng được thực hiện trong máy chủ LDAP, việc thay đổi thuộc tính người dùng luôn luôn có thể và không phụ thuộc vào hệ thống đang chạy. Tôi đang sử dụng Ansible sử dụng usermodvà hệ thống lỗ không đáng tin cậy, vì các thay đổi bị chặn bởi người dùng đã đăng nhập.
ceving

1

Tôi nghĩ rằng bạn nên chạy lệnh với người dùng khác. Đăng nhập bằng root hoặc người dùng khác và thử lại. Nếu bạn đang ở trong cửa sổ x với người dùng mà bạn muốn thay đổi, âm thanh hợp lý là các lệnh thất bại.


1

Đây chủ yếu là một vấn đề với Ubutu khi bạn không có tài khoản root để đăng nhập từ nơi đầu tiên. Vì vậy, điều này tạo ra một mâu thuẫn: Tôi là một người dùng trong nhóm sudoer. Tôi không thể thay đổi uid của riêng tôi.

Không chắc đây là giải pháp tốt nhất. Trước tiên tôi tạo một tài khoản giả mạo, thêm nó vào danh sách sudo. Sau đó, tôi đăng nhập vào tài khoản foo và thực hiện usermod -g MYOWNGID mylogin


0

Tôi có cùng một vấn đề khi sử dụng usermod, nó đã sửa bằng tham số -m, di chuyển nội dung của thư mục chính sang một bản địa hóa mới. Sử dụng tùy chọn này kết hợp với -d (sửa đổi thư mục chính của người dùng, nơi có người dùng).

Tôi đề nghị để xem lệnh người đàn ông usermod


0

Hãy thử các bước sau:

  1. Đặt mật khẩu cho người dùng root:

sudo passwd root

  1. khởi động lại Ubuntu
  2. Đăng nhập dưới dạng "root" sau khi khởi động -> Điều này sẽ cho phép ubfox không tạo bất kỳ quy trình nào cho người dùng hiện tại.
  3. Thay đổi tên người dùng

    usermod -l newuser -d / home / newuser -m olduser

  4. Xác minh tên người dùng đã thay đổi bằng cách kiểm tra tên thư mục với tên người dùng mới trong thư mục / home

-1

Bạn không nên thay đổi tên người dùng của người dùng đã đăng nhập. Thay vào đó, bạn nên kết thúc tất cả các quy trình của người dùng, ngắt kết nối, đăng nhập với tư cách người dùng khác và sau đó đổi tên.

Nếu có vẻ như quá nhiều công việc, bạn có thể tăng cường thay đổi: https://medium.com/@deltazero/linux-howto-rename-c Hiệnly-operating-user-f8fae62db110

Nó hoạt động như thế này:

# your new username
newuser=dave

# root-run these all at once
sudo su -c "\
  sed -i s/$USER/$newuser/g /etc/group \
  && sed -i s/$USER/$newuser/g /etc/shadow \
  && sed -i s/$USER/$newuser/g /etc/passwd \
  && mv /home/$USER/ /home/$newuser"

# exit & reconnect under new username
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.