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


49

Chỉ có một người dùng trên hệ thống của tôi. Làm cách nào để thay đổi ID người dùng từ mặc định 1000?

Nếu có các bước bổ sung sẽ được yêu cầu để tránh phá vỡ quy trình đăng nhập trên bản cài đặt máy tính để bàn thông thường, thì chúng nên được đưa vào như một phần của câu trả lời.


5
Vì tò mò, lý do để thay đổi ID người dùng là gì?
Olivier Lalonde

14
Nếu bạn thường trao đổi dữ liệu với các hệ thống khác thông qua NFS hoặc chỉ một số phương thức sao chép bảo tồn UID, sẽ hữu ích nếu bạn sử dụng cùng một UID cho cùng tên người dùng trên các hệ thống.
João Pinto

João đã hiểu đúng. Cụ thể, tôi hy vọng sẽ kết hợp UID với người dùng trong Mac OS X để hệ thống tệp được chia sẻ mang các quyền dự định trên các hệ điều hành.
ændrük

1
Phiên bản hiện tại của Nethack (3.6.0) lưu các trò chơi bao gồm cả uid hiện tại trong tên tệp. Nếu bạn muốn đồng bộ hóa trò chơi lưu giữa các máy, bạn cần phải khớp với các uids. (sử dụng symlink không thực tế)
Jonathan Hartley

Câu trả lời:


27

Vấn đề là, như bạn đã đề cập, bạn không thể thay đổi UID của người dùng khi nó được đăng nhập trong một phiên. Bạn phải sử dụng một tài khoản người dùng khác để tiến hành.

Nhưng bạn không phải tạo tài khoản người dùng mới, quảng cáo nó cho quản trị viên, đăng xuất, đăng nhập vào tài khoản quản trị viên mới, thay đổi UID của tài khoản chính của bạn, đăng xuất, đăng nhập vào tài khoản chính của bạn sau đó xóa người dùng quản trị viên mới chỉ cần thay đổi UID của bạn. ;)

Bạn có thể khởi động vào chế độ khôi phục (đó là một tùy chọn xuất hiện khi bạn khởi động máy tính hoặc giữ shift ngay sau khi hoàn thành các thông báo BIOS; Sử dụng ESCtrên các máy Dell chạy OEM-Ubuntu). Điều này sẽ đăng nhập bạn trong một phiên root. Được đăng nhập root và không phải tài khoản người dùng thông thường của bạn , bạn sẽ có thể sửa đổi UID của mình.

Vì chế độ khôi phục chỉ hoạt động trong giao diện dòng lệnh, nên sau khi đăng nhập vào phiên gốc, bạn sẽ phải:

  1. Sử dụng hướng dẫn của BubbaJ để kết nối lại hệ thống tệp gốc ở chế độ đọc-ghi : mount -o remount,rw /.

  2. Sử dụng lệnh của Luis Alvarado : usermod -u NEW_UID your_username.

  3. Làm theo hướng dẫn của ddeimeke để cập nhật quyền truy cập tệp.
  4. Sau đó, khởi động lại máy tính của bạn ( reboot), để bạn có thể khởi động ở chế độ bình thường.

1
Không hoạt động cho Ubuntu 14.04. Sau khi thực hiện usermod -u NEW_UID your_usernamefind / -uid 1000 -exec chown -h 5000 '{}' \+, khởi động lại dẫn đến đăng nhập GUI chỉ có phiên đoán.
Kay

Có lẽ, các tập tin ẩn trong nhà không được thay đổi đúng cách? Bạn có sử dụng mã hóa cho nhà của bạn?
toán

Bạn có thể muốn kiểm tra tệp /etc/login.defs/etc/adduser.conftệp của mình nếu bạn đã thay đổi uid của mình bên ngoài các chính sách được cung cấp trong các tệp cấu hình đó. Người dùng ngoài giới hạn chính sách không được hiển thị trong vòng đăng nhập, nhưng bạn có thể thay đổi chính sách. Xem câu trả lời
K Markey

usermod: user user_name is currently used by process 1118
@Alexandre

54

Bạn có thể thay đổi nó trong /etc/passwd, /etc/group/etc/shadowhoặc bạn sử dụng một trong những possibilties ưa thích ở trên. Nhưng - quan trọng nhất - bạn phải thay đổi quyền sở hữu của tất cả các tệp thuộc về người dùng.

Chẳng hạn, nếu id người dùng cũ là 1000 và id mới là 5000:

find / -uid 1000 -exec chown -h 5000 {} +

Và tương tự cho id nhóm (nếu bạn cũng thay đổi nó).

find / -gid 1000 -exec chgrp -h 5000 {} +

8
Đây là một điểm thực sự quan trọng. Nhiều thứ sẽ vỡ nếu bạn làm theo các kỹ thuật được đưa ra trong các câu trả lời khác mà không làm điều này.
poolie

4
Tôi vừa học được một thứ nên sử dụng tốt hơn sudo find / -xdev -uid 1000 -exec chown 5000 '{}' \+, nếu không thì sẽ bao gồm dữ liệu được gắn (trong /mntđó, có thể là không mong muốn) và các tệp bạn tốt hơn không nên lộn xộn trong /proc/dev. Xem bài đăng này
Sebastian

2
Đây không phải là ý tưởng tốt. Với trường hợp / home nằm trên một hệ thống tệp khác, bạn thậm chí sẽ không thay đổi quyền sở hữu các tệp của riêng mình.
ddeimeke

Với câu trả lời này, bạn nên thay đổi quyền của nhóm và uid, trước khi chỉnh sửa các tệp trong / etc, phải không?
MrDaniel

Nó không quan trọng, bạn làm gì đầu tiên.
ddeimeke

25

Giải pháp hoàn chỉnh dựa trên @AlexandreP. và @ddeimeke + tài liệu chính thức. Không cần khởi động lại.

Chính sách Debian / Ubuntu là nếu có người dùng jimcó ID người dùng 1001, thì cũng có một nhóm jimcó ID nhóm 1001. Giải pháp này cũng cập nhật những ID nhóm đó.

  1. Kích hoạt tài khoản root :

    sudo passwd root
    
  2. Nếu người dùng đã đăng nhập, thì hãy đăng xuất (cũng trên các thiết bị đầu cuối ảo)
  3. Chuyển đến VT1: Ctrl-Alt-F1
  4. Đăng nhập bằng root và chạy cái này với tên người dùng và UID cũ / mới được cung cấp:

    # put the information we need in variables
    username=...
    old_uid=`id -u $username`  # looks up current (old) uid
    new_uid=...
    
    # update the user ID and group ID for $username
    usermod -u $new_uid $username
    groupmod -g $new_uid $username
    
    # update the file ownerships
    # NB: you cannot combine the next two chowns, or files where 
    # only the uid xor the gid matches won't be updated  
    chown -Rhc --from=$old_uid $new_uid /    # change the user IDs
    chown -Rhc --from=:$old_uid :$new_uid /  # change the group IDs
    
  5. Đăng xuất
  6. Vào $username
  7. Vô hiệu hóa tài khoản root :

    sudo passwd -dl root
    

Kích hoạt tài khoản root không cần thiết; chỉ cần sử dụng Chế độ khôi phục .
ændrük

2
Điều này nên nhanh hơn khởi động lại, đó là lý do tại sao tôi đăng nó.
l0b0

3
Trong Ubuntu 14.04 và 14.10, bạn cũng cần sửa các quyền ACL mở rộng trong / phương tiện nếu không tự động hóa (trong Nautilus / Nemo) bị hỏng khi UID cũ vẫn còn. sudo setfacl -m "u:<NEWUID>:r-x" /media/<USERNAME> sudo setfacl -x "u:<OLDUID>" /media/<USERNAME>
richud.com 7/11 '

Điều này làm việc như một cơ duyên đối với tôi. Chỉ phải thay đổi uid, mặc dù.
chmike

cho phép tài khoản root nghe có vẻ dễ dàng hơn (và ít đáng sợ hơn) so với sử dụng Chế độ khôi phục.
Jonathan Hartley

7

Nếu bạn vào giao diện điều khiển và gõ: usermod --helpbạn sẽ nhận được một trong các tham số cho biết:

-u, --uid UID UID mới cho tài khoản người dùng

Vì vậy, nếu bạn muốn thay đổi UID cho người dùng cyrex thì hãy làm:

usermod -u 1000 cyrex

điều đó sẽ thay đổi uid cho cyrex từ bất kỳ giá trị nào trước đó thành 1000

Nếu bạn muốn làm điều đó một cách trực quan thì hãy làm điều này:

Đi đến

HỆ THỐNG -> HÀNH CHÍNH -> NGƯỜI DÙNG VÀ NHÓM

Chọn chính bạn từ danh sách và nhấp vào CÀI ĐẶT NÂNG CAO

UID ở cuối cửa sổ đó.


1
Tôi đã thử phương pháp đồ họa mà bạn đề xuất, nhưng có một thông báo "Bạn không thể thay đổi ID người dùng trong khi người dùng đăng nhập." Bạn đã thử nghiệm phương pháp này?
ændrük

2
Hehe tốt đó là sự thật. Tôi đã thử với một tài khoản khác. Bạn cần đăng nhập qua root hoặc bất kỳ tài khoản quản trị nào khác. Sau đó làm cách đồ họa. Xin lỗi vì điều đó.
Luis Alvarado

2
  • Hệ thống Goto >> Quản trị >> Người dùng và Nhóm

văn bản thay thế

  • Nhấp vào Cài đặt nâng cao và goto Tab nâng cao ở phía dưới, bạn sẽ thấy id người dùng của mình.
  • Thay đổi nó và nhấp vào ok.
    văn bản thay thế

1
Tôi có nên bỏ qua cảnh báo trong ảnh chụp màn hình của bạn, "Bạn không thể thay đổi ID người dùng trong khi người dùng đã đăng nhập."?
ændrük

Bạn phải thay đổi nó từ một tài khoản người dùng khác để thoát khỏi cảnh báo này.
karthick87

7
Câu hỏi của tôi là "Làm cách nào tôi có thể thay đổi ID người dùng của riêng mình ?". Nếu bạn dự định câu trả lời của mình là tôi nên tạo một người dùng mới chỉ để chỉnh sửa giá trị này, bạn nên chỉnh sửa câu trả lời của mình để cho biết như vậy.
ændrük

0

Với KDE: Trong menu Thay đổi cài đặt người dùng nâng cao:

Thay đổi từ người dùng khác không hoạt động cho 1000 người dùng mặc định.

bạn phải làm điều đó bằng tay - kinh nghiệm của tôi


0

Trước tiên, bạn cần phải đăng nhập với quyền root, ít nhất là trong một thời gian, vì vậy hãy để chúng tôi thực hiện điều này có thể:

sudo passwd root

Khởi động lại, ctrl + alt + f1 để chuyển sang bảng điều khiển, đăng nhập với quyền root, thực hiện các thao tác sau (quyền sở hữu trong thư mục nhà sẽ được xử lý tự động):

groupmod --gid NEWGID username
usermod  --uid NEWUID username 

Đối với các tệp của bạn ở những nơi khác ngoài thư mục nhà của bạn, để:

sudo chown -R username:username /path/to/files

Xóa và khóa mật khẩu của root, nếu bạn muốn. (Tôi có xu hướng giữ nó):

passwd -dl root

0

Tôi đã làm theo hướng dẫn của ddeimeke với các thay đổi sau:

  1. Tôi đã không đăng xuất và thay vào đó đã làm sudo su
  2. Tôi đã không chạm vào /etc/shadow

Tôi đã thấy nó được đề cập trong các câu trả lời khác rằng bạn nên khởi động để phục hồi hoặc đăng nhập như root. Của tôi là một bản cài đặt Ubuntu 14 mới, vì vậy tôi sẵn sàng kiểm tra xem nó có hoạt động mà không cần đăng nhập không root. Ngoài ra, tôi đã làm điều này trên một ví dụ EC2 qua SSH.

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.