NỘI DUNG

Hosting tốc độ cao Vietnix - tốc độ tải trang trung bình dưới 1 giây
VPS siêu tốc Vietnix - trải nghiệm mượt mà, ổn định
23/04/2024
Lượt xem

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

23/04/2024
6 phút đọc
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.

THEO DÕI VÀ CẬP NHẬT CHỦ ĐỀ BẠN QUAN TÂM

Đăng ký ngay để nhận những thông tin mới nhất từ blog của chúng tôi. Đừng bỏ lỡ cơ hội truy cập kiến thức và tin tức hàng ngày

Chọn 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

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

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

7 NGÀY DÙNG THỬ HOSTING

NẮM BẮT CƠ HỘI, THÀNH CÔNG DẪN LỐI

Cùng trải nghiệm dịch vụ hosting tốc độ cao được hơn 100,000 khách hàng sử dụng

ĐĂNG KÝ NHẬN TÀI LIỆU THÀNH CÔNG
Cảm ơn bạn đã đăng ký nhận tài liệu mới nhất từ Vietnix!
ĐÓNG

ĐĂNG KÝ DÙNG THỬ HOSTING

7 NGÀY MIỄN PHÍ

ĐĂNG KÝ DÙNG THỬ HOSTING

7 NGÀY MIỄN PHÍ

XÁC NHẬN ĐĂNG KÝ DÙNG THỬ THÀNH CÔNG
Cảm ơn bạn đã đăng ký thông tin thành công. Đội ngũ CSKH sẽ liên hệ trực tiếp để kích hoạt dịch vụ cho bạn nhanh nhất!
ĐÓNG