NỘI DUNG

23/04/2024
Lượt xem

Cách kiểm tra và xem danh sách user trong Linux

23/04/2024
[vnx_reading_time rule="220"]phút đọc[/vnx_reading_time]
Lượt xem
Ngày đăng:23/04/2024
Lượt xem

Đánh giá

5/5 - (112 bình chọn)

Đôi khi ta có thể cần xem danh sách các user trong Linux để kiểm tra thông tin hoặc xem số lượng user có trên hệ thống. Bài viết này sẽ hướng dẫn các cách để xem danh sách user trong Linux nhanh chóng nhất.

Xem danh sách user trong Linux bằng file /etc/passwd

Những user cục bộ được lưu trữ trong file /etc/passwd. Mỗi dòng trong file đều là thông tin đăng nhập cho một user tương ứng. Để mở file, ta có thể dùng lệnh cat hoặc less như sau:

less /etc/passwd
Xem danh sách user trong Linux bằng file /etc/passwd
Xem danh sách user trong Linux bằng file /etc/passwd

Mỗi dòng thường chứa những trường thông tin như dưới đây, ngăn cách bởi dấu hai chấm:

  • Usename
  • Mật khẩu được mã hóa (ký tự x cho biết mật khẩu được lưu trong file /etc/shadow)
  • User ID (UID)
  • Group ID của user (GID)
  • Tên đầy đủ của user
  • Home directory của user
  • Login shell (mặc định là /bin/bash)

Nếu muốn chỉ hiển thị username thì ta có thể dùng lệnh awk hoặc cut để in ra trường đầu tiên của username:

awk -F: '{ print $1}' /etc/passwd
cut -d: -f1 /etc/passwd

Output:

root
daemon
bin
sys
sync
...
...
sshd
vagrant
jack
anne

Xem danh sách user trong Linux bằng lệnh getent

Lệnh getent dùng để hiển thị các entry từ cơ sở dữ liệu (CSDL) được cấu hình trong file /etc/nsswitch.conf, trong đó bao gồm cả CSDL passwd dùng để truy vấn danh sách những người dùng có trên hệ thống.

Dùng lệnh sau để xem danh sách các user trên Linux:

getent passwd
Xem danh sách user trong Linux bằng lệnh getent
Xem danh sách user trong Linux bằng lệnh getent

Có thể thấy rằng output cũng tương tự như khi ta mở file /etc/passwd. Nếu đang sử dụng LDAP để xác thực người dùng thì lệnh getent cũng sẽ hiển thị mọi người dùng Linux có trên CSDL của LDAP.

Tương tự, ta cũng có thể dùng lệnh awk hoặc cut để xem username của những user có trên Linux:

getent passwd | awk -F: '{ print $1}'
getent passwd | cut -d: -f1

Cách kiểm tra xem user có tồn tại trong Linux không

Sau khi biết cách xem danh sách user trong Linux, ta hoàn toàn có thể kiểm tra xem một user có tồn tại trên Linux không bằng cách lọc danh sách qua lệnh grep.

Giả sử ta cần tìm xem user có tên jack có ở trên Linux hay không:

getent passwd | grep jack

Nếu người dùng này có tồn tại, câu lệnh trên sẽ in ra thông tin đăng nhập của người dùng đó.

Bên cạnh đó, ta cũng có thể kiểm tra mà không cần dùng lệnh grep:

getent passwd jack

Tương tự, nếu người dùng tồn tại thì lệnh sẽ hiển thị thông tin đăng nhập của user đó.

Tiếp theo, giả sử ta cần kiểm tra xem có tổng cộng bao nhiêu user trên hệ thống thì có thể pipe với lệnh wc như sau:

getent passwd | wc -l

Output sẽ cho biết số lượng tài khoản user có trên hệ thống.

Sự khác nhau giữa user thường và user hệ thống

Về mặt kỹ thuật thì không có sự khác biệt nào đáng kể giữa user hệ thống và user thường (normal user). Thường thì user hệ thống được tạo khi cài đặt hệ điều hành và những package mới. Mặt khác, normal user sẽ được tạo bởi root hoặc một user khác có quyền sudo. Những normal user này sẽ có login shell và home directory riêng.

Mỗi user đều có một ID (UID) riêng. Nếu không chỉ định ID khi tạo user bằng lệnh useradd thì UID sẽ được tự động chọn trong file /etc/login.defs tùy vào các giá trị UID_MINUID_MAX. Để kiểm tra các giá trị này, ta có thể sử dụng lệnh dưới đây:

grep -E '^UID_MIN|^UID_MAX' /etc/login.defs

Output:

UID_MIN          1000
UID_MAX         60000

Dựa vào output ở trên, có thể thấy rằng các normal user có giá trị UID nằm trong khoảng 1000 đến 60000. Việc xác định được các giá trị min và max cho phép cho truy vấn danh sách những normal user có trên hệ thống.

Lệnh dưới đây cho phép liệt kê những normal user có trên hệ thống Linux:

getent passwd {1000..60000}

Output:

vagrant:x:1000:1000:vagrant,,,:/home/vagrant:/bin/bash
jack:x:1001:1001:,,,:/home/jack:/bin/bash
anne:x:1002:1002:Anne Stone,,,:/home/anne:/bin/bash
patrick:x:1003:1003:Patrick Star,,,:/home/patrick:/usr/sbin/nologin

Các giá trị UID_MINUID_MAX có thể sẽ khác nhau, do đó ta có thể sử dụng lệnh sau để có tính khái quát tốt hơn:

eval getent passwd {$(awk '/^UID_MIN/ {print $2}' /etc/login.defs)..$(awk '/^UID_MAX/ {print $2}' /etc/login.defs)}

Tương tự ta cũng có thể pipe kết quả qua lệnh cut để hiển thị username:

eval getent passwd {$(awk '/^UID_MIN/ {print $2}' /etc/login.defs)..$(awk '/^UID_MAX/ {print $2}' /etc/login.defs)} | cut -d: -f1

Lời kết

Qua bài viết này, bạn đọc đã biết được cách liệt kê và lọc danh sách user trên Linux. Các lệnh được sử dụng trong bài này có thể áp dụng cho mọi bản phân phối Linux: Ubuntu, CentOS, RHEL, Debian hay Linux Mint.

Đánh giá mức độ hữu ích của bài viết

Thất vọng

Chưa hữu ích

Bình thường

Hữu ích

Rất hữu ích

Hưng Nguyễn

Co-Founder
tại

Kết nối với mình qua

Kết nối với mình qua

0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận
khuyến mãi tháng 4
Khi mua Hosting/VPS
16/04/2025 - 16/05/2025

MAXSPEED HOSTING

TĂNG TỐC WEBSITE TOÀN DIỆN

CÔNG NGHỆ ĐỘC QUYỀN

PHẦN CỨNG MẠNH MẼ

HỖ TRỢ 24/7

ĐĂNG KÝ NGAY

Tăng tốc độ website - Nâng tầm giá trị thương hiệu

Tăng tốc tải trang

95 điểm

Nâng cao trải nghiệm người dùng

Tăng 8% tỷ lệ chuyển đổi

Thúc đẩy SEO, Google Ads hiệu quả

Tăng tốc ngay

SẢN PHẨM NỔI BẬT

Black Friday Hosting & VPS

Chương trình bắt đầu sau

Giảm giá 40% hosting VPS

50 coupon mỗi ngày

Gia hạn giá không đổi

NHẬN DEAL NGAY

CẢM ƠN BẠN ĐÃ ĐÁNH GIÁ BÀI VIẾT

Vietnix sẽ luôn cố gắng cải thiện chất lượng dịch vụ mỗi ngày

ĐÓNG

Đánh giá mức độ hữu ích của bài viết

Thất vọng

Chưa hữu ích

Bình thường

Hữu ích

Rất hữu ích