Hệ điều hành Linux cung cấp các lệnh để tạo và xóa người dùng và kiểm tra xem người nào đã đăng nhập. Tuy nhiên, không có lệnh nào để liệt kê người dùng, đã đăng nhập hay chưa đăng nhập trên hệ thống.
Tuy nhiên, có một số cách để giải quyết vấn đề này. Nếu bạn muốn tìm hiểu cách liệt kê người dùng trong Linux, hãy làm theo các bước dưới đây của chúng tôi.
Tại sao bạn nên kiểm tra danh sách người dùng Linux của mình
Có một số lý do bạn có thể muốn liệt kê người dùng trong Linux. Đó là một phương pháp hay về cách tìm và xóa các tài khoản không sử dụng. Từ quan điểm bảo mật, đây cũng là một cách tốt để đảm bảo rằng bạn không có những kẻ xâm nhập tạo tài khoản người dùng.
Đây là một công việc hành chính mà có lẽ bạn nên làm ít nhất mỗi tháng một lần. Nếu bạn đang chạy một máy chủ Linux của công ty, bạn có thể muốn làm điều đó thường xuyên hơn.
Người dùng được liệt kê trong / etc / passwd
Tất cả các tài khoản người dùng của máy chủ Linux của bạn đều có mục nhập trong tệp / etc / passwd . Mỗi dòng đại diện cho một người dùng và có bảy trường được phân tách bằng dấu hai chấm. Các trường cung cấp thông tin về người dùng.
- Tên tài khoản.
- Mật khẩu được mã hóa ( x cho biết mật khẩu thực sự nằm trong / etc / shadow )
- Số ID người dùng (UID).
- Số ID nhóm của người dùng (GID).
- Tên đầy đủ của người dùng, nếu được liệt kê.
- Thư mục chính của người dùng.
- Vỏ đăng nhập
Vì vậy, điều đó đưa chúng ta đến một cách để liệt kê tất cả người dùng trên Linux. Bạn có thể sử dụng lệnh less để xem toàn bộ tệp, từng màn hình một.
less /etc/passwd

Nếu bạn muốn kiểm tra xem một người dùng cụ thể có tồn tại trong hệ thống Linux hay không, thì đó là cách sử dụng tốt cho lệnh grep :
less passwd | grep jeff
![Cách liệt kê người dùng trong Linux Cách liệt kê người dùng trong Linux]()
Nếu bạn không nhận được bất kỳ đầu ra nào, người dùng đó không tồn tại trên máy chủ Linux.
Tuy nhiên, đó là rất nhiều thông tin. Bạn có thể cắt nó xuống chỉ với tên người dùng, ví dụ, bằng cách sử dụng lệnh awk hoặc lệnh cắt :
awk -F: '{print $1}' /etc/passwd cut -d: -f1 /etc/passwd
![Cách liệt kê người dùng trong Linux Cách liệt kê người dùng trong Linux]()
Điều đó có xu hướng dễ hiểu hơn nhiều, nhưng nó vẫn khiến bạn xem tất cả các tài khoản người dùng dựa trên hệ thống lẫn lộn với người dùng con người của bạn.
Cách sử dụng getent để liệt kê người dùng
Một lệnh khác, getent , hữu ích hơn nhiều. Nó hiển thị các mục nhập từ bất kỳ cơ sở dữ liệu nào được định cấu hình trong tệp /etc/nsswitch.conf của máy chủ của bạn. Một trong số đó là cơ sở dữ liệu mật khẩu. Để sử dụng getent để hiển thị danh sách tất cả người dùng Linux, nó hoạt động như sau:
getent passwd
Đầu ra trông giống hệt như sử dụng lệnh less , nhưng liệt kê bất kỳ người dùng LDAP nào trên hệ thống Linux. Một lần nữa, các lệnh awk và cut của chúng tôi có thể giúp chỉ xem trường đầu tiên, tên người dùng.
Nếu bạn muốn kiểm tra xem một người dùng cụ thể có tồn tại trong hệ thống Linux hay không, getent sẽ giúp bạn dễ dàng:
getent passwd jeff
Một lần nữa, không có đầu ra nào từ lệnh này cho bạn biết rằng người dùng không tồn tại.
Một cách sử dụng tuyệt vời khác cho getent là tìm ra có bao nhiêu tài khoản người dùng tồn tại trên máy chủ. Điều này được thực hiện bằng cách nhập đầu ra của đường ống getent thông qua lệnh wc , như sau:
getent passwd | wc -l
![Cách liệt kê người dùng trong Linux Cách liệt kê người dùng trong Linux]()
Như bạn thấy, hệ thống Linux của tôi có tổng cộng 48 tài khoản. Khá thú vị, vì tôi là người duy nhất sử dụng nó, nhưng điều đó chỉ cho thấy có bao nhiêu tài khoản hệ thống được tạo trong Linux.
Loại bỏ người dùng hệ thống khỏi người dùng bình thường
Trong mắt Linux, không có sự khác biệt giữa người dùng hệ thống và người dùng. Bất cứ khi nào bạn cài đặt hệ điều hành, nó sẽ tạo ra một số người dùng hệ thống. Những người dùng hệ thống khác được tạo cho các gói khác nhau, như phần mềm dịch vụ web hoặc thư.
Vì vậy, làm thế nào bạn có thể liệt kê chỉ những người dùng bình thường, con người trên hệ thống Linux? Chìa khóa ở đây là hiểu rằng khi bạn tạo một người dùng thông thường, UID của người dùng đó sẽ được gán trong một phạm vi số nhất định. Bằng cách kiểm tra tệp /etc/login.defs , chúng tôi có thể xác định phạm vi giá trị UID có sẵn cho tài khoản người dùng thông thường.
grep -E '^UID_MIN|^UID_MAX' /etc/login.defs
![Cách liệt kê người dùng trong Linux Cách liệt kê người dùng trong Linux]()
Dựa trên kết quả đầu ra, tôi biết rằng người dùng bình thường nên có UID từ 1000 đến 60000. Từ đó, tôi có thể tạo một truy vấn getent sẽ chỉ hiển thị người dùng bình thường.
getent passwd {1000..60000}
![Cách liệt kê người dùng trong Linux Cách liệt kê người dùng trong Linux]()
Hãy nhớ rằng, getent sẽ có vẻ như bị treo ngay cả khi nó hiển thị đầu ra của nó. Bạn có thể nhấn Ctrl-C để kết thúc quá trình hoặc đợi cho đến khi quá trình kết thúc. Thường mất ít hơn 15 giây để hoàn tất việc tìm kiếm cơ sở dữ liệu mật khẩu.
Phiên bản chung chung hơn của lệnh này tính đến các giá trị UID_MIN và UID_MAX khác nhau mà các máy chủ khác nhau có thể sử dụng.
eval getent passwd {$(awk '/^UID_MIN/ {print $2}' /etc/login.defs)..$(awk '/^UID_MAX/ {print $2}' /etc/login.defs)}
Trong lệnh đó, chúng tôi đang tận dụng khả năng của Linux để thực hiện nhiều việc cùng một lúc. Các lệnh awk nhận các giá trị UID_MIN và UID_MAX , sau đó sử dụng chúng trong lệnh getent .
Bây giờ, hãy nói tất cả những gì chúng ta muốn là tên người dùng. Một lần nữa, chúng tôi chuyển đầu ra của mình thông qua lệnh cut , như sau:
eval getent passwd {$(awk '/^UID_MIN/ {print $2}' /etc/login.defs)..$(awk '/^UID_MAX/ {print $2}' /etc/login.defs)} | cut -d: -f1
![Cách liệt kê người dùng trong Linux Cách liệt kê người dùng trong Linux]()
Lệnh này có thể mất 10 đến 15 giây để hoàn thành, vì vậy hãy kiên nhẫn.
Quản lý hiệu quả người dùng Linux của bạn
Điều quan trọng là phải theo dõi những tài khoản người dùng nào tồn tại trên hệ thống Linux của bạn. Khi bạn biết một nhân viên đã rời đi, hãy nhanh chóng xóa tài khoản người dùng của họ. Việc liệt kê định kỳ những người dùng Linux của bạn sẽ giúp đảm bảo rằng bạn nắm bắt được bất kỳ tài khoản nào có thể bị mắc kẹt.
Đồng thời, hãy đảm bảo tuân thủ các chính sách bảo mật mật khẩu và khuyến khích người dùng của bạn thay đổi mật khẩu của họ thường xuyên.