UID trong Linux là gì? Cách tìm và thay đổi UID

Nếu từng tương tác với các hệ thống Linux, có khả năng bạn đã bắt gặp hai từ này, UID và GID. Nếu bạn chưa nắm rõ về chúng, thì hãy cùng tìm hiểu sâu hơn qua bài viết sau đây.

UID trong Linux là gì?

UID là tên viết tắt của User Identifier, trong khi GID là tên viết tắt của Group Identifier. Trong bài viết cụ thể này, Quantrimang.com sẽ tập trung vào User Identifier (UID).

UID là số nhận dạng duy nhất được gán cho mọi người dùng có trong hệ thống Linux. Vai trò chính của UID là xác định người dùng với Linux kernel.

Nó được sử dụng để quản lý tài nguyên mà người dùng có quyền truy cập trong hệ thống. Đó là một trong những lý do để sử dụng UID duy nhất cho mọi người dùng có sẵn. Mặt khác, nếu có hai người dùng được liệt kê với cùng một UID, thì cả hai đều có thể có quyền truy cập vào tài nguyên dành cho người kia.

Tìm UID được lưu trữ ở đâu?

Bạn có thể tìm thấy UID trong file /etc/passwd, đây cũng là file lưu trữ tất cả người dùng đã đăng ký trong hệ thống. Để xem nội dung file /etc/passwd, hãy chạy lệnh cat trên file, như hiển thị bên dưới trên Terminal.

Xem nội dung file /etc/passwd
Xem nội dung file /etc/passwd

File /etc/passwd chứa tất cả các thuộc tính cần thiết hoặc thông tin cơ bản về mọi người dùng trong hệ thống. Dữ liệu được hiển thị trong 7 cột, như được liệt kê dưới đây. Các trường này được phân tách bằng dấu hai chấm (:). File này cũng chứa các tài khoản và nhóm do hệ thống xác định cần thiết để cài đặt, chạy và cập nhật hệ thống thích hợp.

  • Cột 1 - Tên
  • Cột 2 - Mật khẩu - Nếu người dùng đã đặt mật khẩu trên trường này, thì nó được chỉ định bằng chữ cái (x).
  • Cột 3 - UID (User ID)
  • Cột 4 - GID (Group ID)
  • Cột 5 - Gecos - Chứa thông tin chung về người dùng và có thể để trống.
  • Cột 6 - Thư mục Home
  • Cột 7 - Shell - Đường dẫn đến shell mặc định cho người dùng.

Xác định UID

Từ hình ảnh trên, người dùng đầu tiên được liệt kê trên file là root. Root có toàn quyền kiểm soát mọi khía cạnh của hệ thống. Người dùng root được gán UID Zero (O) và GID (0). Theo sau là các tài khoản và nhóm do hệ thống xác định.

Root có toàn quyền kiểm soát mọi khía cạnh của hệ thống
Root có toàn quyền kiểm soát mọi khía cạnh của hệ thống

Một điều nữa cần lưu ý là UID = 0 và GID = 0 là những gì cung cấp cho người dùng root tất cả các quyền hạn trong hệ thống. Nếu muốn chứng minh điều đó, hãy đổi tên root thành một thứ gì đó khác như example_User và tạo người dùng root mới với UID và GID mới.

Ngoài ra, các tài khoản và nhóm do hệ thống xác định theo người dùng root có UID 1,2,3,4, v.v... Đó là bởi vì hầu hết các hệ thống Linux dành 500 UID đầu tiên cho người dùng hệ thống. Những người dùng khác thêm bằng lệnh useradd được gán UID từ 500 trở đi. Trong các hệ thống Ubuntu và Fedora, một người dùng mới, hay thậm chí một người dùng được tạo trong quá trình cài đặt, được cấp UID từ 1000 trở lên.

Bạn có thể thấy điều này trong hình ảnh bên dưới, nơi có 2 người dùng Fosslinux_adminTuts.

Có 2 người dùng Fosslinux_admin và Tuts
Có 2 người dùng Fosslinux_admin và Tuts

Người dùng tuts đã được tạo trong quá trình cài đặt và gán UID 1000. Người dùng còn lại, fosslinux, đã được thêm vào sau đó và cấp UID 1001.

Cách tìm UID của người dùng, nhóm hoặc tài khoản

Bài viết đã thảo luận về cách có thể tìm thấy một UID thông qua việc hiển thị nội dung của file /etc/passwd. Có một cách nhanh chóng và dễ dàng hơn bằng cách sử dụng lệnh id.

Ví dụ, để tìm UID của người dùng Fosslinux_admin và Tuts, hãy thực thi lệnh bên dưới. Bạn có thể được yêu cầu nhập mật khẩu root.

id fosslinux_admin
 id tuts

Bạn cũng có thể chạy lệnh id trên các nhóm khác. Bằng cách thực thi một mình lệnh id trong Terminal, nó sẽ hiển thị UID của người dùng đã đăng nhập hiện tại.

Bạn cũng có thể chạy lệnh id trên các nhóm khác
Bạn cũng có thể chạy lệnh id trên các nhóm khác

Cách thay đổi UID

Giả sử bạn đang quản lý một hệ thống có nhiều người dùng. Nếu một người dùng rời khỏi công ty, có lẽ bạn sẽ cần gán cho người dùng mới UID của nhân viên đã nghỉ việc.

Trước tiên, hãy tạo một người dùng tạm thời cho ví dụ này. Bài viết sẽ sử dụng lệnh useradd. Bạn sẽ cần phải có quyền root. 

useradd example_user

Bằng cách chạy lệnh id trên user example_user, bạn có thể thấy rằng người dùng mới này có UID 1003.

Người dùng mới này có UID 1003
Người dùng mới này có UID 1003

Bây giờ, hãy xóa người dùng Fosslinux_admin có UID = 1001 và gán nó cho người dùng mới. Bài viết sẽ sử dụng lệnh userdel để loại bỏ người dùng.

sudo userdel -r fosslinux_admin

Sau khi thực hiện điều đó, UID sẽ được chỉ định người dùng mới - example_user - UID thuộc về Fosslinux_admin. Đó là UID = 1001. Bài viết sẽ thực hiện việc này bằng lệnh usermod.

usermod -u 1001 exmple_user

Bằng cách chạy lệnh id trên người dùng, ví dụ, _user, ta thấy rằng người dùng hiện có UID = 1001.

Người dùng hiện có UID = 1001
Người dùng hiện có UID = 1001

Bây giờ, khi gán UID của người dùng cũ cho người dùng mới, bạn sẽ cần đồng bộ những file này với tất cả các file khác thuộc về người dùng cũ. Bạn có thể làm điều này bằng cách thực thi lệnh dưới đây.

find / -user [UID_of_old_user] -exec chown -h [new_user] {} \;
 e.g
 sudo find / -user 1001 -exec chown -h user_2 {} \;

Tạo người dùng mới với UID cụ thể

Ngoài ra, bạn có thể tạo người dùng mới bằng lệnh useradd và gán cho người dùng một UID cụ thể. Xem cú pháp dưới đây.

sudo useradd -u 1111 user_2
Tạo người dùng mới với UID cụ thể
Tạo người dùng mới với UID cụ thể

Bằng cách chạy lệnh id trên user_2, ta thấy rằng UID của người dùng = 1111.

Chủ Nhật, 14/06/2020 07:49
51 👨 281
0 Bình luận
Sắp xếp theo