Hiển thị danh sách users trong linux

Like
Like Love Haha Wow Sad Angry
1

Khi làm việc với Linux, có lẽ hơi khó khăn cho người dùng trong việc xem danh sách các users đã tồn tại trên hệ thống. Việc sử dụng các command như tạo mới, xóa hay list các users logged in thì khá đơn giản rồi. Nhưng còn command để show ra các users thì sao?

Trong bài viết này sẽ giới thiệu 1 số command để list các users trong hệ thống Linux.

Sử dụng file /etc/passwd

Thông tin user được lưu ở file /etc/passwd. Mỗi 1 dòng tương ứng là thông tin của 1 user.

less /etc/passwd

Để ý thất sẽ có 7 cột cách nhau bởi dấu hai chấm. Ý nghĩa của mỗi cột theo thứ tự như sau:

User name
Encrypted password (x means that the password is stored in the /etc/shadow file)
User ID number (UID)
User’s group ID number (GID)
Full name of the user (GECOS)
User home directory
Login shell (defaults to /bin/bash)

Nếu chỉ muốn hiển thị username thì có thể sử dụng lệnh awk hoặc cut

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

Kết quả sẽ là:

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

Sử dụng lệnh getent

Lệnh getent hiển thị dữ liệu từ database được cấu hình trong file /etc/nsswitch.conf

getent passwd

Kết quả sẽ tương tự khi hiển thị nội dung của file /etc/passwd. Nếu bạn đang sử dụng LDAP cho việc user authentication thì lệnh getent sẽ hiển thị tất cả users từ cả file /etc/passwd và cơ sở dữ liệu LDAP.

Bạn cũng có thể sử dụng awk hoặc cut để chỉ hiển thị cột username:

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

Kiểm tra tồn tại user

Để kiểm tra 1 user có tồn tại trên hệ thống hay không, đơn giản bạn có thể lọc trong danh sách user bằng cách sử dụng lệnh grep

Ví dụ muốn tìm user vietnt trên hệ thống, sử dụng lệnh sau:

getent passwd | grep vietnt

Nếu user tồn tại thì sẽ hiển thị đầy đủ thông tin, còn không thì sẽ không hiển thị gì.

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

getent passwd vietnt

Kết quả sẽ tương tự như trên

Nếu chỉ muốn hiển thị số user trên hệ thống thì có thể sử dụng lệnh sau:

getent passwd | wc -l

Kết quả là số user trong hệ thống

33

System and Normal Users

Trong hệ thống Linux, không có sự khác biệt thực tế về mặt kỹ thuật giữa system users và normal users. Tiêu biểu như system users thì được tạo khi cài đặt OS và các packages mới. Trong một vài trường hợp bạn có thể tạo một system user mà sẽ được được dùng ở 1 vài ứng dụng riêng biệt.

Normal users được tạo bởi user root hoặc user khác với quyền sudo. Thường thì normal user có thể login và có 1 thư mục hôm tương ứng.

Mỗi 1 user có 1 user ID (UID). Nếu không chỉ rõ UID khi tạo mới user bởi lệnh useradd thì UID sẽ được tự động chọn trong file /ect/login.defs và nó phụ thuộc vào giá trị UID_MINUID_MAX.

Để kiểm tra 2 giá trị UID_MAXUID_MIN bạn có thể dùng lệnh sau:

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

Kết quả:

UID_MIN          1000
UID_MAX         60000

Kết quả trên cho biết là normal user sẽ có UID giữa 1000 và 60000. Việc biết được 2 giá trị này cũng cho phép list ra được các normal user 1 cách dễ dàng hơn.

Lệnh sau sẽ chỉ hiển thị ra các normal user tồn tại trên hệ thống:

getent passwd {1000..60000}

Kết quả

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

Vì 2 giá trị có thể là khác ở trên hệ thống của bạn, cho nên lệnh tổng quát hơn sẽ là:

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

Nếu chỉ muốn 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

Kết lại

Bài viết này mang tính chất giới thiệu 1 số các commands để hiển thị ra danh sách và lọc các users trong hệ thống Linux (Ubuntu, CentOS, RHEL, Debian và Linux Mint),

Hãy để lại comment nếu có bất kì câu hỏi nào. 😀

Like
Like Love Haha Wow Sad Angry
1

Nếu thấy hay thì like, share và comment để cùng nhau học tập nhé !^^

Bài viết liên quan

Không có bài viết.

Bài viết cùng chuyên mục

Leave a Reply

Your email address will not be published. Required fields are marked *