Lệnh id trong Linux là công cụ dòng lệnh dùng để hiển thị thông tin định danh của user như UID, GID và các group mà user đó thuộc về. Thông qua lệnh này, bạn có thể nhanh chóng kiểm tra quyền truy cập và cấu hình phân quyền của tài khoản trong hệ thống. Trong bài viết này, mình sẽ hướng dẫn bạn cách dùng lệnh id để kiểm tra thông tin user và quyền truy cập một cách nhanh chóng và chính xác.
Những điểm chính
- Khái niệm: Hiểu rõ lệnh id trong Linux được sử dụng để hiển thị chi tiết các thông tin định danh quan trọng.
- Các tùy chọn phổ biến: Nắm vững bảng tham số hỗ trợ để chủ động lọc và hiển thị chính xác thông tin định danh người dùng theo nhu cầu quản trị.
- Ví dụ sử dụng thực tế: Thành thạo các kỹ năng kiểm tra thông tin tài khoản hiện hành hoặc bất kỳ người dùng nào khác qua các ví dụ thực tế.
- Xử lý lỗi thường gặp: Biết cách nhận diện và khắc phục nhanh các sự cố phổ biến như lỗi “no such user” hoặc tình trạng cập nhật thiếu thông tin nhóm phụ.
- Lưu ý khi sử dụng: Nắm được các nguyên tắc kỹ thuật quan trọng về phân biệt loại ID và cách cập nhật phiên làm việc sau khi thay đổi phân quyền.
- Câu hỏi thường gặp: Giải đáp các thắc mắc liên quan đến lệnh id trong Linux.
Lệnh id trong Linux là gì?
Lệnh id trong Linux được sử dụng để hiển thị chi tiết các thông tin định danh quan trọng như ID người dùng (UID), ID nhóm chính (GID) và danh sách các nhóm phụ mà tài khoản đó tham gia. Nhờ khả năng cung cấp thông tin rõ ràng về quyền hạn thực tế của user, lệnh id trở thành công cụ hữu ích trong việc kiểm soát bảo mật và gỡ lỗi các vấn đề liên quan đến quyền truy cập file hay thư mục. Cụ thể như:
- Kiểm tra quyền hạn cụ thể của một user.
- Xác định chính xác user đang thuộc những group nào.
- Debug các vấn đề về phân quyền hoặc truy cập file.
- Kiểm tra quyền
sudocủa tài khoản. - Hỗ trợ quản trị người dùng trên server Linux.

Cú pháp cơ bản của lệnh id như sau:
id [OPTIONS] [USERNAME]Trong đó:
- [OPTIONS]: Các tùy chọn để giới hạn hoặc thay đổi kiểu thông tin được hiển thị.
- [USERNAME]: Tên người dùng cần xem thông tin, nếu bỏ trống thì lệnh sẽ lấy thông tin của user hiện đang đăng nhập.
Các tùy chọn phổ biến của lệnh id trong Linux
Dưới đây là các tùy chọn thường được sử dụng của lệnh id. Ngoài ra, bạn có thể gõ lệnh man id để tham khảo thêm các tùy chọn khác của lệnh này:
| Tùy chọn | Chức năng |
|---|---|
| -u/–user | Chỉ hiển thị chỉ số UID. |
| -g/–group | Chỉ hiển thị chỉ số GID (nhóm chính). |
| -G/–groups | Hiển thị tất cả group ID (cả chính và phụ) của user. |
| -n/–name | Hiển thị tên thay vì số ID, thường được sử dụng khi kết hợp với -u, -g, -G. |
| -r/–real | Hiển thị ID thực thay vì ID hiệu lực. |
| -z/–zero | Phân tách các trường kết quả bằng ký tự NULL thay vì khoảng trắng hoặc xuống dòng |
| -Z/–context | Hiển thị security context gắn với tiến trình hoặc user |
Các ví dụ sử dụng thực tế của lệnh id trong Linux
1. Kiểm tra thông tin của user hiện tại
Để xem toàn bộ thông tin định danh của tài khoản bạn đang sử dụng, bạn hãy gõ lệnh sau:
id
Giải thích kết quả:
uid=1001: ID định danh của user.gid=1002: Group chính của user.groups: Các group phụ mà user này đang tham gia.
2. Kiểm tra thông tin của user khác
Nếu bạn muốn xem thông tin định danh của người dùng có tên là “tech”, hãy sử dụng lệnh sau:
Id tech
3. Chỉ hiển thị UID
Trong trường hợp bạn chỉ cần lấy chỉ số UID của user “vietnix” (thường dùng trong script), hãy dùng lệnh sau:
id -u vietnix
4. Chỉ hiển thị tên group chính
Để biết tên nhóm chính thay vì số ID của user “vietnix”, bạn cần kết hợp tùy chọn -g và -n:
id -gn vietnix
5. Hiển thị danh sách group phụ
Để liệt kê toàn bộ các ID nhóm mà user “vietnix” tham gia, bạn dùng lệnh dưới đây:
id -G vietnixNếu bạn muốn hiển thị dưới dạng tên nhóm để dễ đọc hơn, hãy thêm tùy chọn -n:
id -Gn vietnix6. Kiểm tra UID thực và UID hiệu lực
Để phân biệt và kiểm tra ID thực và ID hiệu lực của user hiện tại, bạn có thể chạy lần lượt các lệnh sau:
id -ur
id -uMột số lỗi thường gặp khi sử dụng lệnh id
1. Lỗi “no such user”
Đây là lỗi cơ bản khi hệ thống không tìm thấy tên người dùng trong cơ sở dữ liệu định danh:
- Nguyên nhân:
- Tên người dùng bị nhập sai (Linux phân biệt chữ hoa và chữ thường).
- Người dùng chưa được khởi tạo trên hệ thống hoặc đã bị xóa.
- Cách kiểm tra: Xác minh danh sách người dùng đang tồn tại bằng lệnh:
getent passwdhoặccut -d: -f1 /etc/passwd - Cách khắc phục: Đảm bảo nhập đúng tên người dùng. Nếu người dùng thực sự chưa tồn tại, hãy khởi tạo bằng lệnh useradd.
2. Lệnh trả về thiếu group phụ
Bạn vừa thêm một user vào một nhóm mới (ví dụ nhóm docker), nhưng khi chạy lệnh id, nhóm đó vẫn chưa xuất hiện trong danh sách:
- Nguyên nhân: Các thay đổi về quyền hạn nhóm thường chỉ có hiệu lực sau khi người dùng thiết lập một phiên làm việc mới. Phiên làm việc hiện tại vẫn đang giữ bộ nhớ đệm cũ.
- Cách xử lý:
- Cách 1 (Khuyên dùng): Đăng xuất và đăng nhập lại vào hệ thống để làm mới toàn bộ thông tin định danh.
- Cách 2 (Tạm thời): Sử dụng lệnh
newgrp <groupname>để áp dụng nhóm mới ngay trong phiên làm việc hiện tại mà không cần logout.
3. Lệnh id không hiển thị sudo dù đã thêm user vào nhóm này
Tình huống này thường xảy ra khi thao tác thêm người dùng vào nhóm quản trị chưa được thực hiện chính xác hoặc chưa được lưu lại:
- Xác minh: Kiểm tra trực tiếp tệp tin cấu hình nhóm của hệ thống để xem user đã có tên trong danh sách nhóm sudo hay chưa:
grep 'sudo' /etc/group(hoặc nhóm wheel tùy bản phân phối Linux). - Cách khắc phục: Nếu user chưa xuất hiện, bạn hãy thực hiện lại lệnh thêm nhóm một cách chuẩn xác bằng lệnh
sudo usermod -aG sudo <username>. Lưu ý là thamsố -aG cực kỳ quan trọng để thêm người dùng vào nhóm mới mà không xóa họ khỏi các nhóm cũ).

Những lưu ý khi sử dụng lệnh id
Dưới đây là các lưu ý quan trọng khi sử dụng lệnh id:
- Cập nhật phiên làm việc sau khi phân quyền: Nếu bạn vừa thêm user vào một group mới, lệnh
idcó thể chưa hiển thị group đó ngay lập tức. Do đó bạn cần đăng xuất và đăng nhập lại hoặc dùng lệnhnewgrpđể thông tin được cập nhật. - Phân biệt loại ID: Bạn cần chú ý sự khác biệt giữa ID thực (Real ID) và ID hiệu lực (Effective ID) khi sử dụng tùy chọn
-rđể xác định đúng quyền hạn thực tế của user. - Kiểm tra sự tồn tại của user: Nếu lệnh trả về thông báo “no such user”, điều này xác nhận user đó không tồn tại trên hệ thống và bạn nên kiểm tra lại bằng lệnh
getent passwd. - Xác minh quyền Sudo: Trong trường hợp lệnh
idkhông hiển thị nhómsudodù bạn đã thao tác thêm quyền, hãy kiểm tra kỹ lại file cấu hình/etc/grouphoặc thực hiện lại lệnhusermod.

Câu hỏi thường gặp
Lệnh id và lệnh whoami khác nhau như thế nào?
Lệnh whoami chỉ hiển thị duy nhất tên của user đang đăng nhập hiện tại. Trong khi đó, lệnh id cung cấp thông tin chi tiết và đầy đủ hơn nhiều, bao gồm mã định danh UID, GID và danh sách tất cả các nhóm mà user đó tham gia.
UID=0 trong kết quả lệnh id có ý nghĩa gì?
Nếu bạn kiểm tra và thấy uid=0(root), điều này có nghĩa là tài khoản đó có quyền cao nhất trong hệ thống là Superuser hoặc Root. Bất kỳ user nào có UID bằng 0 đều có toàn quyền kiểm soát hệ điều hành.
Có thể dùng lệnh id để thay đổi UID hoặc GID của user không?
Không. Lệnh id chỉ là công cụ để xem và kiểm tra thông tin. Nếu bạn muốn thay đổi các thông số này, bạn cần sử dụng lệnh usermod.
Tại sao lệnh id hiển thị các con số như UID, GID thay vì tên?
Mặc định, hệ thống Linux quản lý user và group thông qua các con số ID để xử lý nhanh hơn. Nếu bạn muốn lệnh id hiển thị kết quả dưới dạng tên cho dễ đọc, hãy thêm tùy chọn -n kết hợp với các tùy chọn khác, ví dụ như id -un hoặc id -Gn.
Vì sao user của tôi thuộc nhiều group, nhưng lệnh id chỉ hiện một group chính?
Lệnh id mặc định sẽ hiển thị group chính ở phần gid=… và liệt kê tất cả các group bao gồm cả chính và phụ ở phần groups=…. Nếu bạn thấy thiếu các group phụ, hãy đảm bảo rằng bạn đã cập nhật phiên làm việc sau khi thêm user vào nhóm mới.
Lệnh id trong Linux là công cụ quan trọng giúp bạn xem nhanh UID, GID, group chính và các group phụ của một tài khoản, từ đó hỗ trợ kiểm tra và xử lý các vấn đề về phân quyền trên hệ thống Linux. Việc hiểu rõ output của id sẽ giúp bạn phát hiện nhanh sai sót trong cấu hình group, sudo hoặc quyền file để khắc phục kịp thời. Chúc bạn có được những thông tin hữu ích và cảm ơn bạn đã theo dõi bài viết!




