Liên hệProfile
Danh mục

Mục Lục

    UID Linux là gì? Cách tìm username từ User ID (UID) trong Linux

    Nguyễn Hưng

    Ngày đăng:

    06/02/2026

    Cập nhật lần cuối:

    06/02/2026

    Lượt xem:
    Chia sẻ
    Đánh giá
    5/5 - (1 bình chọn)

    Nguyễn Hưng

    Lượt xem:
    Ngày đăng:

    06/02/2026

    Cập nhật lần cuối:

    06/02/2026

    Mục lục

    UID trong Linux là mã số định danh giúp hệ điều hành nhận biết và phân biệt từng tài khoản người dùng, từ đó áp dụng quyền truy cập và quản lý tài nguyên một cách chính xác. Trong bài viết này, bạn sẽ tìm hiểu chi tiết khái niệm, cách lưu trữ, tra cứu UID để quản trị hệ thống hiệu quả và an toàn hơn.

    Những điểm chính

    • Khái niệm và tầm quan trọng: Biết được UID trong Linux là một giá trị số nguyên duy nhất được hệ thống dùng để nhận dạng, phân biệt người dùng và quản lý quyền truy cập file/tài nguyên.
    • Lưu trữ và xác định UID: Biết được thông tin UID được lưu trữ ở đâu (/etc/passwd) và cách đọc, xác định UID của một người dùng bất kỳ.
    • Các phương pháp tra cứu: Nắm vững các cách để lấy tên người dùng từ một UID cụ thể bằng các lệnh như id, getent, awk hoặc thông qua Bash script.
    • So sánh các phương pháp: Hiểu rõ ưu và nhược điểm của từng phương pháp tra cứu để lựa chọn công cụ phù hợp nhất cho từng tình huống quản trị.
    • Cách thay đổi UID: Biết được quy trình thay đổi UID cho người dùng hiện có, giúp bạn quản lý và phân bổ lại UID khi cần thiết.
    • Tạo người dùng mới với UID chỉ định: Nắm được cú pháp lệnh để tạo người dùng mới với một UID cụ thể, giúp bạn chủ động thiết lập tài khoản theo đúng yêu cầu hệ thống.
    • Giải đáp thắc mắc (FAQ): Tìm câu trả lời cho các câu hỏi phổ biến như cách thay đổi UID, ý nghĩa của UID 0, sự khác biệt giữa UID và GID.

    UID trong Linux là gì?

    UID trong Linux là một số nguyên đóng vai trò định danh duy nhất cho từng tài khoản người dùng trong hệ thống, dùng để hệ điều hành nhận diện và phân biệt các người dùng với nhau. UID được Linux sử dụng làm cơ sở để quản lý quyền sở hữu file, quyền truy cập tài nguyên và một số hoạt động liên quan đến bảo mật cho từng người dùng, trong đó UID 0 luôn được gán cho tài khoản root có toàn quyền trên hệ thống.​

    UID trong Linux là một số nguyên đóng vai trò định danh duy nhất cho từng tài khoản người dùng trong hệ thống
    UID trong Linux là một số nguyên đóng vai trò định danh duy nhất cho từng tài khoản người dùng trong hệ thống

    Thông tin ánh xạ giữa tên người dùng và UID được lưu trong file /etc/passwd, trong đó mỗi dòng có cấu trúc: username:x:UID:GID:comment:home:shell, lần lượt thể hiện tên đăng nhập, trường mật khẩu (thường là x), UID, GID, phần mô tả, thư mục home và shell đăng nhập mặc định của người dùng.

    Bạn có thể tìm username trong file passwd
    Bạn có thể tìm username trong file passwd

    Tầm quan trọng của UID trong Linux

    UID giữ vai trò then chốt trong mô hình bảo mật của Linux vì quyết định quyền truy cập tài nguyên, quyền sở hữu file và phạm vi thực thi lệnh của từng người dùng trên hệ thống. Nhờ cơ chế gắn tài nguyên với UID cụ thể, hệ điều hành dễ dàng phân tách dữ liệu giữa các tài khoản và hạn chế truy cập trái phép vào file không thuộc quyền sở hữu.

    Mỗi file hoặc thư mục được tạo ra đều gắn với UID của người dùng tạo ra nó, nên chỉ UID đó hoặc các đối tượng được cấp thêm quyền mới có thể chỉnh sửa hay xóa. Root với UID 0 là tài khoản có mức đặc quyền cao nhất và được phép thao tác trên tài nguyên nhạy cảm và thực hiện các lệnh quản trị, trong khi người dùng thông thường chỉ được hoạt động trong phạm vi mà UID của họ được cấp, giúp việc phân quyền và bảo mật trên hệ thống rõ ràng và kiểm soát tốt hơn.​

    UID giữ vai trò then chốt trong mô hình bảo mật của Linux vì quyết định quyền truy cập tài nguyên, quyền sở hữu file và phạm vi thực thi lệnh
    UID giữ vai trò then chốt trong mô hình bảo mật của Linux vì quyết định quyền truy cập tài nguyên, quyền sở hữu file

    Nơi lưu trữ và cách xác định UID

    Trong Linux, UID của từng tài khoản được lưu trong file hệ thống /etc/passwd, đây là nơi chứa danh sách toàn bộ người dùng cùng các thông tin cơ bản như tên đăng nhập, UID, GID, thư mục home và shell đăng nhập mặc định. Mỗi dòng trong file này gồm 7 trường được phân tách bằng dấu hai chấm, lần lượt là tên người dùng, trường mật khẩu (thường hiển thị là ký tự x), UID, GID, thông tin mô tả, đường dẫn thư mục home và đường dẫn đến shell mặc định.

    Để xem và xác định UID, bạn có thể dùng lệnh cat (hoặc sudo cat /etc/passwd) rồi đọc giá trị ở cột thứ 3 trong từng dòng tương ứng với tài khoản cần kiểm tra, trong đó dòng dành cho root sẽ có UID = 0 và GID = 0. Ngoài UID cơ bản, hệ thống còn sử dụng các dạng UID như RUID, EUID và UID đã lưu (suid) để liên kết tiến trình với tài khoản thực, xác định quyền truy cập hiệu lực và cho phép thay đổi, rồi khôi phục lại đặc quyền khi thực thi các tác vụ yêu cầu quyền cao hơn.​

    Sử dụng lệnh id

    Khi bạn chỉ biết UID và muốn xác định username tương ứng, thay vì tìm thủ công trong file /etc/passwd, bạn có thể dùng lệnh:

    id -nu <uid>

    Lệnh bên trên sẽ trả về username tương ứng với UID bạn đã nhập một cách nhanh chóng và thường được sử dụng trong quản trị hệ thống Linux.

    Sử dụng lệnh getent

    Cách đơn giản và chính xác để bạn tra cứu thông tin người dùng theo UID trên các hệ thống sử dụng NSS (Name Service Switch) là dùng lệnh:

    getent passwd 1000
    Bạn có thể tìm username bằng cách dùng lệnh getent
    Bạn có thể tìm username bằng cách dùng lệnh getent

    Lệnh trên sẽ hiển thị toàn bộ thông tin người dùng có UID là 1000.

    Trong trường hợp mà bạn chỉ muốn lấy tên người dùng, bạn có thể kết hợp thêm cut như sau:

    getent passwd 1001 | cut -d: -f1

    Giải thích:

    • getent: Truy vấn thông tin từ các cơ sở dữ liệu hệ thống như /etc/passwd, /etc/group, LDAP.​
    • passwd: Chỉ định cơ sở dữ liệu cần tra cứu, ở đây là danh sách người dùng.​
    • 1001: UID (User ID) của tài khoản cần lấy thông tin.​
    • cut: Lệnh dùng để cắt, tách các trường (field) trong một dòng văn bản.​
    • -d:: Thiết lập dấu phân cách trường là dấu hai chấm :.​
    • -f1: Chọn trường thứ nhất sau khi tách, tương ứng với tên người dùng (username).​

    Dùng awk đọc trực tiếp từ /etc/passwd

    Trong trường hợp hệ thống không hỗ trợ getent hoặc không dùng NSS, bạn có thể tra cứu trực tiếp từ file /etc/passwd:

    awk -F: '$3==1000 {print $1}' /etc/passwd
    Bạn có thể sử dụng lệnh awk để tìm username
    Bạn có thể sử dụng lệnh awk để tìm username

    Giải thích:

    • awk: Công cụ xử lý văn bản, rất hữu ích khi làm việc với các file dạng dòng như /etc/passpasswd.
    • -F:: Thiết lập dấu hai chấm làm ký tự phân tách trường trong mỗi dòng.
    • $3==1000: Chỉ chọn những dòng có trường thứ ba (UID) bằng 1000.
    • {print $1}: In ra trường thứ nhất, tức là tên người dùng tương ứng với UID đó.

    Câu lệnh trên sẽ quét file /etc/passwd và chỉ chọn những dòng có trường UID bằng 1000. Sau đó, awk in ra trường thứ nhất của dòng đó, chính là tên người dùng tương ứng với UID 1000.

    Viết Bash Script tra cứu UID

    Bạn cũng có thể tạo một script Bash đơn giản để tự động hóa việc kiểm tra UID.

    Tạo file uid_to_user.sh:

    #!/bin/bash
    UID_INPUT=$1
    USERNAME=$(awk -F: -v uid="$UID_INPUT" '$3==uid {print $1}' /etc/passwd)
    
    if [ -n "$USERNAME" ]; then
        echo "Tên người dùng: $USERNAME"
    else
        echo "Không tìm thấy người dùng với UID $UID_INPUT"
    fi

    Sau khi lưu file, cấp quyền thực thi và chạy lệnh theo thứ tự:

    chmod +x uid_to_user.sh
    ./uid_to_user.sh 1000

    Script sẽ kiểm tra UID được nhập và trả về username tương ứng, giúp tiện lợi hơn khi thao tác nhiều lần.

    So sánh ưu và nhược điểm giữa các phương pháp

    Phương phápƯu điểmNhược điểm
    Sử dụng lệnh idCú pháp đơn giản, dễ nhớ, trả về nhanh username từ UID với id -nu . ​Chủ yếu phù hợp trên máy cục bộ, không linh hoạt bằng getent khi dùng nhiều nguồn backend.
    getent passwd UIDNhanh, chính xác, hoạt động tốt trên hệ thống dùng NSS và hỗ trợ nhiều nguồn như /etc/passwd, LDAP.Phụ thuộc vào việc hệ thống có hỗ trợ getent và cấu hình NSS đúng.
    awk trên /etc/passwdKhông phụ thuộc tiện ích ngoài, chỉ cần file /etc/passwd là có thể tra cứu.Có thể bỏ sót người dùng nếu hệ thống dùng LDAP hoặc nguồn khác ngoài /etc/passwd.
    Script BashTùy biến cao, dễ đóng gói logic tra cứu và tích hợp vào quy trình tự động hóa, tool nội bộ.Bạn cần thêm thao tác tạo, phân quyền, bảo trì script, nhất là khi triển khai trên nhiều máy.

    Cách thay đổi UID trong Linux

    Trong quản trị hệ thống Linux, việc thay đổi UID là thao tác cần thiết khi bạn muốn chuyển quyền sở hữu tài nguyên từ nhân viên cũ sang nhân viên mới hoặc đồng bộ hóa ID người dùng trên nhiều máy chủ khác nhau. Cách thực hiện như sau:

    Bước 1: Tạo người dùng mới (cần quyền root)

    useradd example_user

    Kiểm tra UID của người dùng vừa tạo:

    id example_user

    Giả sử UID hiện tại là 1003.

    Bước 2: Xóa người dùng cũ để giải phóng UID

    Ví dụ, người dùng fosslinux_admin có UID 1001:

    sudo userdel -r fosslinux_admin

    Bước 3: Gán UID cũ cho người dùng mới

    sudo usermod -u 1001 example_user

    Kiểm tra lại:

    id example_user

    Kết quả cho thấy example_user đã có UID 1001.

    Bước 4: Đồng bộ quyền sở hữu file

    Sau khi đổi UID, cần chuyển quyền sở hữu các file của UID cũ sang người dùng mới:

    sudo find / -user 1001 -exec chown -h example_user {} \;

    Bước này giúp đảm bảo toàn bộ file và thư mục trước đây thuộc về người dùng cũ được gán đúng cho người dùng mới.

    Tạo user mới với UID chỉ định sẵn

    Bạn cũng có thể tạo trực tiếp một tài khoản mới với UID xác định trước ngay từ bước khởi tạo user. Cú pháp cơ bản như sau:

    sudo useradd -u <UID_muon_dat> <ten_user>

    Ví dụ: Tạo user user_2 với UID 1111 với lệnh sudo useradd -u 1111 user_2. Sau đó, bạn cần dùng lệnh id user_2 để kiểm tra, kết quả sẽ hiển thị UID của user_2 là 1111.

    Câu hỏi thường gặp

    Làm sao để lấy UID của người dùng trong Linux?

    Bạn có thể dùng lệnh id -u để lấy UID của một tài khoản cụ thể hoặc chạy id không tham số để xem UID của người dùng hiện tại.

    Cách đổi UID cho một user trong Linux như thế nào?

    Quản trị viên thường dùng lệnh usermod -u và sau đó cập nhật lại quyền sở hữu file bằng chown hoặc find … -exec chown … để tránh lỗi phân quyền.

    UID=0 trong Linux có ý nghĩa gì?

    UID 0 luôn thuộc về tài khoản root, đây là tài khoản siêu quản trị có toàn quyền truy cập và chỉnh sửa hầu hết tài nguyên trên hệ thống.

    Tại sao nhiều user thường có UID 1000 trên Linux?

    Trên đa số distro hiện đại, UID từ 0 – 999 thường dành cho tài khoản hệ thống, còn người dùng thông thường được cấp UID bắt đầu từ 1000, nên user đầu tiên tạo ra thường mang UID 1000.

    Khác biệt giữa UID và GID trong Linux là gì?

    UID là mã định danh người dùng, còn GID là mã định danh nhóm, hệ thống dùng cả hai kết hợp với quyền file để quyết định ai được đọc, ghi hoặc thực thi tài nguyên.​

    Linux quy ước dải UID như thế nào?

    Thông thường, UID 0 dành cho root, một dải UID thấp cho user hệ thống, còn UID từ khoảng 1000 trở lên được dùng cho các tài khoản người dùng thông thường.

    Làm sao kiểm tra UID và GID hiện tại?

    Bạn chỉ cần chạy lệnh id là sẽ thấy cả UID, GID và các group bổ sung của user đang đăng nhập.

    Cách lấy đồng thời UID và GID của một user bất kỳ?

    Bạn có thể dùng id để hiện đầy đủ UID, GID chính và các nhóm phụ mà tài khoản đó thuộc về.

    UID Linux là nền tảng cho mọi cơ chế phân quyền và quản lý người dùng trên hệ điều hành này từ việc xác định ai sở hữu file cho tới việc kiểm soát ai được phép thực thi các lệnh nhạy cảm. Khi nắm vững cách UID được tạo, lưu trữ, tra cứu và thay đổi, bạn sẽ chủ động hơn trong việc cấu hình bảo mật, xử lý sự cố phân quyền cũng như xây dựng các script tự động hóa liên quan đến tài khoản người dùng.

    5/5 - (1 bình chọn)
    Nguyễn Hưng
    Tôi là Nguyễn Hưng hay còn được biết đến với nickname là Bo, chuyên gia về hệ thống, mạng và bảo mật. Tôi là Co-Founder của Vietnix và Co-Founder của dự án Chống Lừa Đảo.
    0 0 đánh giá
    Đánh giá bài viết
    Theo dõi
    Thông báo của
    guest
    0 Góp ý
    Cũ nhất
    Mới nhất Được bỏ phiếu nhiều nhất
    Phản hồi nội tuyến
    Xem tất cả bình luận

    BÀI VIẾT LIÊN QUAN

    Hướng chạy file Python trên Linux qua Terminal chi tiết, đơn giản
    Hướng chạy file Python trên Linux qua Terminal chi tiết, đơn giản

    Chạy file Python trên Linux là việc thực thi một chương trình được viết bằng Python thông qua Terminal hoặc trực tiếp như một file thực thi trên hệ điều hành Linux. Trong bài viết này, mình sẽ hướng dẫn bạn quy trình chuẩn để khởi tạo, biên tập và thực thi một chương trình…

    06/02/2026

    Hướng dẫn xóa thư mục khỏi Git trên Linux chi tiết
    Hướng dẫn xóa thư mục khỏi Git trên Linux chi tiết

    Trong quá trình làm việc với Git trên Linux, không ít trường hợp bạn cần loại bỏ một thư mục khỏi repository vì không còn sử dụng, chứa dữ liệu tạm thời hoặc không nên đưa lên source code. Tuy nhiên, Git không quản lý thư mục trống mà chỉ theo dõi từng file, nên…

    06/02/2026

    Phân biệt toán tử && vs semicolon bash trong Linux chi tiết
    Phân biệt toán tử && vs semicolon bash trong Linux chi tiết

    Trong Bash, && và semicolon (;) đều dùng để nối nhiều lệnh trên một dòng, nhưng có cách thực thi khác nhau. Cụ thể, dấu ; luôn thực thi lệnh tiếp theo dù lệnh trước thành công hay thất bại, còn && chỉ chạy lệnh sau khi lệnh trước thực thi thành công, giúp kiểm…

    06/02/2026

    7 cách để check local IP Linux chi tiết trên Debian/Ubuntu
    7 cách để check local IP Linux chi tiết trên Debian/Ubuntu

    Khi làm việc với server hoặc máy trạm, biết cách check local IP Linux giúp bạn chủ động trong việc cấu hình dịch vụ, phân tích lỗi mạng và tăng cường bảo mật cho hệ thống. Bài viết này sẽ hướng dẫn chi tiết nhiều cách kiểm tra IP cục bộ qua terminal trên Debian/Ubuntu,…

    06/02/2026

    linux

    system-linux

    text