Fast Byte - Thuê VPS Giá Rẻ
Hướng dẫn chung

6+ Cách Liệt Kê Người Dùng Trong Linux Nhanh, Chuẩn Kỹ Thuật

Liệt kê người dùng trong Linux là kỹ năng quản trị cơ bản nhưng thiếu sót thường khiến bạn không phân biệt được tài khoản hệ thống, user thường và người đang đăng nhập, dẫn tới rủi ro bỏ lọt tài khoản lạ hoặc truy cập trái phép. Bài viết này tổng hợp đầy đủ […]

Ảnh đại diện Thanh Lam NguyễnThanh Lam Nguyễn17 phút đọc

Liệt kê người dùng trong Linux là kỹ năng quản trị cơ bản nhưng thiếu sót thường khiến bạn không phân biệt được tài khoản hệ thống, user thường và người đang đăng nhập, dẫn tới rủi ro bỏ lọt tài khoản lạ hoặc truy cập trái phép. Bài viết này tổng hợp đầy đủ các phương pháp từ lệnh who, cat /etc/passwd, getent, compgen, awk/cut cho đến tự động hóa bằng Bash script, giúp bạn kiểm soát toàn bộ tài khoản trên máy chủ một cách chính xác. Nếu đang quản trị ThueVPSGiaRe.vn, đây là nền tảng kiến thức bạn không nên bỏ qua.

1. Điều kiện tiên quyết trước khi kiểm tra tài khoản Linux

Trước khi bắt đầu thực thi các thao tác dòng lệnh để tra cứu tài khoản, bạn cần có quyền truy cập vào giao diện dòng lệnh (CLI) của hệ thống. Nếu bạn đang quản lý máy chủ từ xa, hãy chuẩn bị một phiên làm việc ổn định để thực hiện các bước chuẩn đoán an ninh.

  • Kết nối terminal: Bạn cần đăng nhập vào hệ thống thông qua một phiên dòng lệnh nội bộ hoặc thực hiện kết nối SSH an toàn tới máy chủ Linux bằng cú pháp tiêu chuẩn ssh username@your_server_ip.
  • Phân quyền truy cập: Mọi tài khoản thông thường đều có thể đọc nội dung tệp tin /etc/passwd và thực hiện các lệnh xem cơ bản. Tuy nhiên, nếu bạn muốn thực hiện các tác vụ can thiệp quản trị như tạo, sửa đổi hoặc xóa người dùng, bạn sẽ cần hiểu rõ về vai trò và đặc quyền tối cao của user root hoặc có tài khoản cấp quyền sudo.
Liệt kê người dùng trong Linux
Liệt kê người dùng trong Linux

Thuê VPS giá rẻ

CPU Intel Gold, SSD NVMe U.2, giá từ 50K/tháng

Quản trị user hiệu quả trên VPS Linux cấu hình mạnh

Khi cần chạy các lệnh liệt kê người dùng, giám sát phiên đăng nhập và cấu hình bảo mật cho máy chủ, một VPS Linux có cấu hình ổn định giúp thao tác CLI mượt mà, SSH nhanh và log rõ ràng. VPS giá rẻ của Fast Byte phù hợp cho lab, production nhỏ và môi trường quản trị riêng. Không cam kết uptime/SLA. Không bịa thông số ngoài dữ liệu đã cung cấp.

Tham khảo VPS giá rẻ

2. Liệt kê toàn bộ người dùng Linux bằng tệp /etc/passwd

Phương pháp phổ biến và trực tiếp nhất để xem tất cả người dùng hiện diện trên hệ thống là đọc tệp /etc/passwd. Tệp này đóng vai trò như một cơ sở dữ liệu văn bản lưu trữ các thuộc tính cơ bản của từng tài khoản, bao gồm cả tài khoản do người dùng tạo lẫn các tài khoản dịch vụ của hệ thống.

Liệt kê toàn bộ người dùng Linux bằng tệp /etc/passwd
Liệt kê toàn bộ người dùng Linux bằng tệp /etc/passwd

Bạn sử dụng lệnh cat trong danh mục các câu lệnh Linux thiết yếu thường dùng để hiển thị toàn bộ nội dung tệp:

cat /etc/passwd

Mỗi dòng đầu ra tương ứng với một tài khoản, tuân thủ theo cấu trúc 7 trường ngăn cách bởi dấu hai chấm (:):

username:x:UID:GID:GECOS:home_directory:shell
  • username: Tên tài khoản dùng để định danh và đăng nhập vào máy chủ.
  • x: Ký hiệu đại diện thể hiện mật khẩu đã được mã hóa an toàn và lưu trữ trong tệp riêng /etc/shadow.
  • UID: Mã định danh duy nhất của người dùng dưới dạng số (User ID).
  • GID: Mã định danh nhóm chính của người dùng (Group ID).
  • GECOS: Trường chứa thông tin mô tả mở rộng như tên đầy đủ, phòng ban hoặc số điện thoại liên lạc.
  • home_directory: Đường dẫn tuyệt đối dẫn đến thư mục cá nhân của tài khoản.
  • shell: Đường dẫn đến trình thông dịch lệnh mặc định khởi chạy khi người dùng đăng nhập (ví dụ: /bin/bash hoặc /usr/sbin/nologin).

Đối với máy chủ vận hành nhiều dịch vụ, danh sách xuất ra có thể rất dài. Bạn nên sử dụng kỹ thuật phân trang qua lệnh less hoặc kết hợp bộ lọc grep để tìm kiếm đúng tài khoản cần quan tâm:

cat /etc/passwd | less
cat /etc/passwd | grep username

Lưu ý bảo mật: Tệp /etc/passwd được cấu hình quyền cho phép mọi người dùng đều đọc được nhằm phục vụ việc phân giải tên tài khoản. Tuy nhiên, thông tin mật khẩu thực tế không hề bị lộ vì chuỗi băm bảo mật đã được đưa vào tệp /etc/shadow, nơi chỉ tài khoản root mới có thẩm quyền truy cập.

3. Truy vấn danh sách người dùng hệ thống bằng lệnh getent

Lệnh getent thu thập các mục dữ liệu từ các thư viện NSS (Name Service Switch) được chỉ định trong tệp cấu hình /etc/nsswitch.conf. Đây là công cụ hữu dụng vượt trội hơn so với cat khi bạn quản lý các hệ thống tích hợp thư mục người dùng tập trung như LDAP hoặc Active Directory.

Truy vấn danh sách người dùng hệ thống Linux bằng lệnh getent
Truy vấn danh sách người dùng hệ thống Linux bằng lệnh getent

Trong khi lệnh cat bị giới hạn chỉ đọc tệp cục bộ /etc/passwd, getent sẽ truy vấn toàn diện mọi cơ sở dữ liệu người dùng được cấu hình trên hệ thống. Để xem toàn bộ người dùng từ nguồn cục bộ lẫn mạng, bạn sử dụng lệnh:

getent passwd

Nếu bạn chỉ cần kiểm tra nhanh xem một người dùng cụ thể có tồn tại và thuộc cơ sở dữ liệu nào, chỉ cần bổ sung tên tài khoản ở phía sau:

getent passwd username

Định dạng kết quả trả về của getent tương đồng hoàn toàn với cấu trúc của /etc/passwd, giúp việc xử lý dữ liệu tiếp nối diễn ra vô cùng thuận tiện.

Thuê VPS giá rẻ

CPU Intel Gold, SSD NVMe U.2, giá từ 50K/tháng

Làm chủ quyền quản trị máy chủ với chi phí tối ưu

Tự do phân quyền tài khoản, triển khai script quản trị định kỳ và kiểm soát toàn bộ tiến trình hệ thống mà không lo bị hạn chế tài nguyên. Dịch vụ VPS tại Fast Byte mang lại môi trường độc lập, cấu hình linh hoạt cho mọi nhu cầu học tập và vận hành thực tế.

Tham khảo VPS giá rẻ

4. Lọc nhanh danh sách Username với lệnh compgen

compgen là một lệnh tích hợp sẵn (built-in command) của Bash shell, chủ yếu được tạo ra để phục vụ cơ chế tự động hoàn thành lệnh. Khi được kết hợp với tùy chọn -u, công cụ này sẽ trích xuất ra toàn bộ danh xưng tài khoản được hệ điều hành ghi nhận mà không hiển thị thêm các thông số kỹ thuật khác.

compgen -u

Do compgen truy vấn cùng một cơ sở dữ liệu NSS như getent nhưng chỉ trả về danh sách thuần tên người dùng, nó là lựa chọn lý tưởng cho các đoạn mã kịch bản shell hoặc thiết lập tính năng tự động gợi ý.

Lọc nhanh danh sách Username trên Linux với lệnh compgen
Lọc nhanh danh sách Username trên Linux với lệnh compgen

Theo mặc định, lệnh sẽ in ra danh sách theo chiều dọc khá dài; để dễ quan sát trực quan hơn, bạn có thể đẩy kết quả qua lệnh column:

compgen -u | column

Chú ý: Vì compgen là câu lệnh nội tại riêng của Bash, nó sẽ không khả dụng nếu bạn chuyển sang các hệ vỏ lệnh khác như sh thuần túy hoặc zsh.

5. Trích xuất thông tin người dùng tùy biến bằng awk và cut

Khi bạn chỉ cần lấy cột tên tài khoản hoặc các thuộc tính xác định từ tệp /etc/passwd nhằm loại bỏ các thông tin rườm rà như UID hay đường dẫn thư mục, các tiện ích xử lý chuỗi văn bản như awk hoặc cut sẽ là giải pháp lọc dữ liệu hiệu quả nhất.

Cả hai tiện ích này đóng vai trò như những bộ lọc dòng dữ liệu, phân tách các trường dựa trên ký tự ngăn cách dấu hai chấm:

Tiêu chí so sánh Công cụ awk Công cụ cut
Cú pháp thực thi awk -F: ‘{ print $1 }’ /etc/passwd cut -d: -f1 /etc/passwd
Ký tự phân cách Tham số -F: định nghĩa dấu hai chấm làm mốc Tham số -d: thiết lập dấu hai chấm làm điểm cắt
Cơ chế xử lý cột In ra trường dữ liệu số một ($1) Chọn riêng trường dữ liệu thứ nhất (-f1)
Trường hợp phù hợp nhất Định dạng phức tạp, lọc có điều kiện (như lọc dải UID) Trích xuất trường dữ liệu đơn giản, nhanh và nhẹ

6. Kiểm tra người dùng đang trực tiếp đăng nhập (who, users, w)

Cần phân biệt rõ ràng giữa việc liệt kê mọi tài khoản đã được thiết lập trên hệ điều hành với việc giám sát những ai đang thực sự duy trì phiên kết nối hoạt động tại thời điểm hiện tại. Việc kiểm tra các phiên truy cập tức thời là then chốt để phát hiện các dấu hiệu bất thường trên môi trường dùng chung.

  • Lệnh users: Cung cấp danh sách tên người dùng đang online dưới dạng một chuỗi đơn giản nằm trên cùng một dòng lệnh:
    users
  • Lệnh who: Cung cấp thông tin tường minh hơn về từng phiên, hiển thị rõ tên tài khoản, giao diện dòng lệnh (terminal), thời điểm bắt đầu phiên kết nối và địa chỉ IP hoặc máy chủ nguồn.
    who
  • Lệnh w: Đây là công cụ giám sát phiên làm việc chi tiết nhất, không chỉ liệt kê các thông số kết nối mà còn cung cấp thời gian chờ (idle time), tải trung bình của hệ thống và câu lệnh cụ thể mà mỗi người dùng đang thực thi:
    w

Lệnh who là công cụ giám sát phiên cốt lõi, có nhiệm vụ xuất ra danh sách mọi tài khoản đang có kết nối trực tiếp vào máy chủ ngay tại thời điểm tra cứu. Công cụ này đóng vai trò quan trọng trong việc hỗ trợ quản trị viên phát hiện sớm các phiên truy cập trái phép.

Cú pháp và bảng tùy chọn mở rộng của lệnh who

Cú pháp tổng quát của câu lệnh được biểu diễn như sau:

who [OPTION]… [FILE]

Trong đó, [OPTION] đại diện cho các tham số điều chỉnh dữ liệu hiển thị, còn [FILE] là tùy chọn chỉ định tệp log đăng nhập cụ thể nếu muốn trích xuất dữ liệu lưu trữ thay vì mặc định.

Tùy chọn Chức năng tương ứng
-b, –boot Hiển thị mốc thời gian gần nhất mà hệ thống khởi động lại (boot).
-d, –dead Liệt kê các tiến trình đã kết thúc hoặc không còn hoạt động.
-H, –heading In thêm dòng tiêu đề phía trên các cột dữ liệu giúp dễ theo dõi.
-l, –login Hiển thị các tiến trình đang chờ đăng nhập vào hệ thống.
-q, –count Hiển thị tên người dùng và tính tổng số lượng phiên đang hoạt động.
-r, –runlevel Hiển thị trạng thái cấp độ vận hành (runlevel) hiện tại của hệ thống.
-s, –short Chế độ rút gọn: chỉ hiển thị tài khoản, cổng terminal và thời gian.
-t, –time Hiển thị thời điểm đồng hồ hệ thống được cập nhật hoặc chỉnh sửa lần cuối.
-T, -w, –mesg Xem trạng thái tiếp nhận tin nhắn gửi tới thiết bị đầu cuối của user:
+ (cho phép), - (chặn/bận), ? (chưa xác định).
-u, –users In chi tiết thông tin kèm theo định danh tiến trình (PID) của từng phiên làm việc.
–help / –version Xem tài liệu hướng dẫn hoặc số hiệu phiên bản phần mềm.

Các tình huống vận dụng lệnh who trong thực tế

Tình huống 1: Phát hiện đăng nhập bất thường

Khi chạy lệnh who, định dạng kết quả thường thể hiện như sau:

thuevpsgiarepts/0 2026-11-11 10:00 (113.190.x.x)

Tại đây, bạn cần quan sát: thuevpsgiare là tên người dùng; pts/0 là giao diện dòng lệnh ảo truy cập từ xa; 2025-12-09 10:00 là thời điểm đăng nhập; và (113.190.x.x) đại diện cho địa chỉ IP mạng nguồn. Nếu phát hiện một tài khoản lạ hoặc kết nối từ dải IP bất thường, máy chủ có nguy cơ bị lộ mật khẩu và cần được áp dụng các biện pháp bảo mật VPS chặn đứng hacker kịp thời.

Tình huống 2: Kiểm tra tổng thể với tùy chọn -a

Để quan sát tất cả các thông số của hệ thống (thời gian khởi động, cấp độ vận hành, tiến trình đã đóng và danh sách phiên kết nối), bạn thực hiện:

who -a

Tình huống 3: Xem thời điểm hệ thống boot

Khi cần xác nhận máy chủ có bị khởi động lại đột ngột hay không, tùy chọn -b sẽ cung cấp chính xác mốc thời gian hệ thống khởi động lần gần nhất:

who -b

Tình huống 4: Xác định PID và đóng các phiên SSH bị treo

Khi một phiên làm việc bị đứt kết nối giữa chừng hoặc chiếm dụng tài nguyên, bạn cần lấy mã PID của phiên đó rồi chấm dứt tiến trình:

# Bước 1: Tra cứu định danh tiến trình PID của từng session
who -u
# Bước 2: Dừng dứt điểm phiên kết nối bằng lệnh kill
kill -9 <PID>

Tình huống 5: Đếm tổng số lượng người dùng đang hoạt động

Để nắm nhanh quy mô người dùng đang hiện diện trên máy chủ mà không cần đếm từng dòng:

who -q

5 lưu ý quan trọng khi dùng lệnh who

  • Mốc thời gian tra cứu: who chỉ phản ánh dữ liệu tức thời. Khi người dùng đã chủ động đăng xuất, họ sẽ không còn hiển thị. Để xem lịch sử phiên trong quá khứ, bạn cần sử dụng lệnh last.
  • Nhận diện loại kết nối: Ký hiệu tty thường đại diện cho thao tác nhập liệu trực tiếp tại thiết bị phần cứng, còn tiền tố pts phản ánh các phiên truy cập từ xa thông qua SSH hoặc giả lập terminal.
  • Giám sát chặt chẽ IP nguồn: Luôn rà soát cột IP kết nối xem có thuộc danh sách mạng tin cậy của doanh nghiệp bạn hay không nhằm ngăn chặn nguy cơ xâm nhập.
  • Cẩn trọng khi ngắt tiến trình: Khi kết hợp who -u và kill, hãy đối chiếu kỹ lưỡng mã PID để tránh ngắt nhầm các tiến trình hệ thống trọng yếu.
  • Phân quyền quản trị: Tài khoản thông thường có thể chạy lệnh, nhưng một số chi tiết sâu hơn về tiến trình của các tài khoản khác có thể yêu cầu quyền quản trị viên cao hơn để hiển thị đầy đủ.

7. Các nguyên tắc bảo mật khi quản lý tài khoản người dùng

Việc kiểm tra danh sách tài khoản định kỳ là thói quen vận hành an toàn cốt lõi. Để đảm bảo tính toàn vẹn của máy chủ, bạn nên tuân thủ các quy tắc kiểm tra sau:

  • Phát hiện tài khoản lạ và quyền hạn bất thường: Tuyệt đối không để tồn tại các tài khoản không rõ nguồn gốc. Đặc biệt, hãy kiểm tra các tài khoản có UID bằng 0, vì trong Linux chỉ duy nhất tài khoản root được phép mang UID 0; bất kỳ tài khoản nào khác có UID 0 đều đồng nghĩa với việc nắm giữ toàn bộ quyền năng tối cao của hệ thống.
  • Khóa shell đối với tài khoản dịch vụ: Đảm bảo các tài khoản hệ thống (như www-data, nobody, hay nginx) được chỉ định shell đăng nhập là /usr/sbin/nologin (trên Debian/Ubuntu), /sbin/nologin (trên RHEL/CentOS) hoặc /bin/false để ngăn chặn việc bị tin tặc lợi dụng để mở phiên shell tương tác.
  • Tận dụng giao diện đồ họa khi cần thiết: Nếu bạn không muốn ghi nhớ quá nhiều cú pháp dòng lệnh, có thể cài đặt Webmin quản lý VPS qua Web để theo dõi tài khoản trực quan qua bảng danh sách phân cấp nhóm, ID và shell được sắp xếp rõ ràng.
  • Kết hợp các lệnh với kỹ thuật sắp xếp: Bạn có thể gom chuỗi lệnh để xuất danh sách theo bảng chữ cái, giúp quá trình rà soát thủ công trở nên thuận tiện hơn:
    cut -d: -f1 /etc/passwd | sort
  • Cấp quyền chuẩn mực: Thay vì chia sẻ tài khoản root cho nhiều nhân sự, hãy tìm hiểu hướng dẫn tạo sudo user độc lập cho từng người dùng nhằm dễ dàng ghi vết và phân định trách nhiệm khi có sự cố.

8. Tự động hóa kiểm tra tài khoản bằng Bash Script và Cron Job

Việc chạy thủ công các lệnh như cat, getent hay who rất thuận tiện khi cần kiểm tra tức thì, nhưng phương pháp này trở nên kém hiệu quả trên các hệ thống lớn đòi hỏi việc giám sát thường trực. Giải pháp tối ưu là viết kịch bản Bash tự động xuất báo cáo danh sách người dùng và đối chiếu định kỳ.

Kịch bản dưới đây giúp bạn tự động trích xuất toàn bộ danh sách tài khoản đã được sắp xếp, lưu kèm mốc thời gian vào một thư mục kiểm tra riêng biệt:

#!/bin/bash
# Thiết lập thư mục lưu trữ báo cáo kiểm tra tài khoản
OUTPUT_DIR=”$HOME/user_audits”
OUTPUT_FILE=”$OUTPUT_DIR/user_audit_$(date +%F).txt”# Create output directory if it doesn’t exist
mkdir -p “$OUTPUT_DIR”# Generate user list
cut -d: -f1 /etc/passwd | sort > “$OUTPUT_FILE”
echo “User audit saved to $OUTPUT_FILE”

Sau khi lưu đoạn mã vào tệp (ví dụ ~/user_audit.sh), bạn tiến hành cấp quyền thực thi và đưa vào lập lịch tự động với cấu hình Cron Job tự động trên máy chủ để script chạy đều đặn mỗi đêm lúc 02:00:

chmod +x ~/user_audit.sh
crontab -e
# Thêm dòng lệnh sau vào cuối tệp crontab:
0 2 * * * ~/user_audit.sh

Bằng cách này, bạn luôn có tệp lưu trữ nhật ký qua từng ngày. Khi phát hiện các thay đổi bất thường về số lượng tài khoản, việc kết hợp với quy trình sao lưu dữ liệu định kỳ trên VPS sẽ giúp bạn dễ dàng khôi phục cấu hình sạch nếu có sự cố xảy ra.

Nắm vững cách liệt kê người dùng trong Linux không chỉ giúp bạn hiểu rõ cấu trúc tổ chức tài khoản của hệ điều hành mà còn là tấm lá chắn đầu tiên bảo vệ máy chủ trước các nguy cơ xâm nhập trái phép. Ba điểm quan trọng bạn cần ghi nhớ là: sử dụng cat hoặc getent khi cần xem tổng thể danh sách đã đăng ký, dùng who hoặc w để kiểm tra phiên kết nối trực tiếp, và luôn kiểm tra kỹ các tài khoản mang UID 0 hoặc có quyền hạn shell bất thường.

Cần một VPS giá rẻ để bắt đầu?

Chọn cấu hình vừa đủ nhu cầu, ưu tiên chi phí dễ tiếp cận và khả năng toàn quyền quản trị riêng biệt.

Xem bảng giá VPS

Lưu ý kỹ thuật: Toàn bộ nội dung trong bài viết được biên soạn nhằm mục đích chia sẻ kiến thức tham khảo. Cú pháp lệnh, biến môi trường và tệp tin hệ thống có thể có sự khác biệt nhất định tùy thuộc vào bản phân phối Linux (Ubuntu, Debian, CentOS, AlmaLinux), phiên bản nhân hệ điều hành và quyền hạn cụ thể của tài khoản. Bạn nên thực hiện kiểm thử trên môi trường nội bộ và sao lưu cấu hình trước khi tiến hành thay đổi trên máy chủ production.

Chia sẻ: Facebook LinkedIn
Quay lại trang blog

Bài viết liên quan