Cách Quản Lý và Liệt Kê Người Dùng trên Ubuntu: Hướng Dẫn Toàn Diện về Tài Khoản Người Dùng, Quyền Truy Cập và Các Lệnh

目次

1. Giới thiệu

Ubuntu là một bản phân phối Linux phổ biến được sử dụng bởi nhiều người dùng, từ môi trường cá nhân đến hệ thống máy chủ doanh nghiệp. Khi quản lý hệ thống Ubuntu, việc quản trị tài khoản người dùng là rất quan trọng. Đặc biệt, việc xem xét danh sách người dùng đã đăng ký giúp quản lý bảo mật và tổ chức tài khoản.

Bài viết này giải thích cách liệt kê người dùng trên Ubuntu. Nó bao gồm mọi thứ từ các lệnh cơ bản đến các phương pháp lấy thông tin chi tiết, làm cho nó hữu ích cho cả người mới bắt đầu và quản trị viên có kinh nghiệm.

2. Cách Kiểm tra Danh sách Người dùng trong Ubuntu

Trong Ubuntu, thông tin người dùng có thể được lấy dễ dàng bằng cách sử dụng các tệp và lệnh cụ thể. Các phương pháp sau cho phép bạn kiểm tra danh sách người dùng.

2.1 Hiển thị Danh sách Người dùng Sử dụng /etc/passwd

Trong Ubuntu, tất cả thông tin người dùng được lưu trữ trong tệp /etc/passwd. Hiển thị tệp này cho phép bạn xác minh tất cả người dùng đã đăng ký.

Ví dụ lệnh

cat /etc/passwd

Chạy lệnh này sẽ hiển thị thông tin theo định dạng sau:

root:x:0:0:root:/root:/bin/bash
user1:x:1000:1000:User One,,,:/home/user1:/bin/bash
user2:x:1001:1001:User Two,,,:/home/user2:/bin/bash

Mỗi dòng bao gồm các trường được phân cách bằng dấu hai chấm (:) chứa thông tin sau:

  1. Tên người dùng
  2. Mật khẩu (hiện được biểu diễn là x)
  3. ID Người dùng (UID)
  4. ID Nhóm (GID)
  5. Thông tin người dùng (trường chú thích)
  6. Thư mục chính
  7. Shell đăng nhập mặc định

Vì tệp này bao gồm người dùng hệ thống, bạn có thể trích xuất chỉ người dùng đăng nhập thông thường bằng các phương pháp dưới đây.

2.2 Liệt kê Chỉ Tên Người dùng

Để liệt kê chỉ tên người dùng, sử dụng lệnh sau:

cut -d: -f1 /etc/passwd

Ngoài ra, bạn có thể sử dụng lệnh awk:

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

Đầu ra ví dụ:

root
user1
user2

2.3 Tìm kiếm Người dùng Cụ thể

Để kiểm tra xem một người dùng cụ thể có tồn tại không, sử dụng lệnh grep:

grep 'user1' /etc/passwd

Lệnh này chỉ hiển thị mục liên quan đến user1.

2.4 Liệt kê Nhóm qua /etc/group

Để kiểm tra các nhóm mà người dùng thuộc về, tham khảo tệp /etc/group:

cat /etc/group | cut -d: -f1

Để liệt kê các nhóm mà một người dùng cụ thể thuộc về, sử dụng:

groups user1

Đầu ra ví dụ:

user1 : user1 sudo

Điều này cho thấy user1 cũng là thành viên của nhóm sudo.

3. Cách Kiểm tra Người dùng Đang Đăng nhập

Ubuntu cung cấp một số lệnh để xác minh người dùng nào đang đăng nhập. Các lệnh này giúp lấy thông tin phiên và đăng nhập.

3.1 Kiểm tra Người dùng Đang Đăng nhập Sử dụng who

Lệnh who liệt kê tất cả người dùng đang đăng nhập.

Ví dụ lệnh

who

Đầu ra ví dụ

user1    tty1         2025-02-16 10:05
user2    pts/0        2025-02-16 11:30

Giải thích trường

  1. Tên người dùng (người dùng đang đăng nhập)
  2. Tên terminal (ví dụ, tty1 cho cục bộ, pts/0 cho SSH)
  3. Thời gian đăng nhập

Lệnh who đơn giản và hữu ích khi bạn muốn kiểm tra nhanh trạng thái đăng nhập.

3.2 Kiểm tra Thông tin Chi tiết Sử dụng w

Lệnh w cung cấp thông tin chi tiết hơn who.

Ví dụ lệnh

w

Đầu ra ví dụ

11:35:25 up 2:15,  2 users,  load average: 0.03, 0.02, 0.00
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
user1    tty1                      10:05    1:30m  0.10s  0.10s -bash
user2    pts/0    192.168.1.10      11:30    0.00s  0.05s  0.02s sshd

Giải thích trường

  • Thời gian hoạt động của hệ thống
  • Số lượng người dùng đang đăng nhập
  • Tải trung bình CPU
  • Tên người dùng
  • Terminal
  • Máy chủ từ xa
  • Thời gian đăng nhập
  • Thời gian nhàn rỗi
  • Sử dụng CPU
  • Quá trình đang chạy

Địa chỉ IP trong trường FROM giúp xác minh đăng nhập SSH từ xa, làm cho nó hữu ích cho giám sát và quản lý bảo mật.

3.3 Hiển thị Người dùng Đang Đăng nhập Sử dụng users

Nếu bạn muốn một danh sách đơn giản chỉ hiển thị tên người dùng đã đăng nhập, lệnh users rất hữu ích.

Ví dụ lệnh

users

Kết quả ví dụ

user1 user2

Lệnh này là phiên bản đơn giản của who và chỉ hiển thị tên người dùng đã đăng nhập.

3.4 Xác định người dùng hiện tại bằng whoami

Để kiểm tra người dùng nào đang thực thi phiên hiện tại, hãy sử dụng lệnh whoami.

Ví dụ lệnh

whoami

Kết quả ví dụ

user1

Lệnh này chỉ đơn giản hiển thị tên người dùng của phiên hiện tại, giúp xác nhận ngữ cảnh thực thi.

3.5 Kiểm tra lịch sử đăng nhập bằng last

Lệnh last cho phép bạn xem lại lịch sử đăng nhập của người dùng.

Ví dụ lệnh

last

Kết quả ví dụ

user1    pts/0        192.168.1.10     Mon Feb 15 10:20   still logged in
user2    tty1                          Mon Feb 15 09:30 - 10:00  (00:30)
root     tty1                          Sun Feb 14 22:15 - 23:45  (01:30)
  • Tên người dùng
  • Terminal đã sử dụng
  • Địa chỉ IP từ xa
  • Thời gian bắt đầu đăng nhập
  • Thời gian đăng xuất (hoặc vẫn đang đăng nhập)
  • Tổng thời lượng phiên

Lệnh này giúp quản trị viên giám sát các lần truy cập trước và phát hiện các đăng nhập đáng ngờ.

4. Cách kiểm tra thông tin chi tiết của người dùng

Ubuntu cung cấp một số lệnh để lấy thông tin chi tiết về người dùng đã đăng ký. Kiểm tra các chi tiết như UID, thành viên nhóm và shell đăng nhập giúp quản trị viên quản lý quyền một cách chính xác. Phần này giải thích các phương pháp sử dụng id, groups, fingerchage.

4.1 Kiểm tra UID, GID và các nhóm bằng id

Lệnh id hiển thị UID (User ID), GID (Group ID)thành viên nhóm của người dùng.

Ví dụ lệnh
id user1
Kết quả ví dụ
uid=1001(user1) gid=1001(user1) groups=1001(user1),27(sudo),1002(docker)
  • uid → Định danh người dùng
  • gid → Định danh nhóm chính
  • groups → Tất cả các nhóm mà người dùng thuộc
Kiểm tra thông tin người dùng hiện tại
id

4.2 Kiểm tra thành viên nhóm qua groups

Lệnh groups nhanh chóng liệt kê các nhóm mà người dùng thuộc.

Ví dụ lệnh
groups user1
Kết quả ví dụ
user1 : user1 sudo docker

groups hữu ích khi bạn chỉ muốn xem tên nhóm mà không cần các ID chi tiết.

4.3 Lấy chi tiết người dùng bằng finger

Lệnh finger cung cấp thông tin chi tiết về người dùng như họ tên đầy đủ, thư mục đăng nhập và loại shell.

Lệnh cài đặt
sudo apt install finger
Ví dụ lệnh
finger user1
Kết quả ví dụ
Login: user1                    Name: User One
Directory: /home/user1          Shell: /bin/bash
Last login: Mon Feb 16 10:20 (UTC) on pts/0
  • Login → Tên người dùng
  • Name → Họ tên đầy đủ (tùy chọn)
  • Directory → Thư mục home
  • Shell → Shell mặc định
  • Last login → Thời gian đăng nhập cuối cùng

4.4 Kiểm tra thời gian hết hạn mật khẩu bằng chage

Lệnh chage cho phép quản trị viên xem lại thời gian hết hạn mật khẩu và lần thay đổi mật khẩu cuối cùng.

Ví dụ lệnh
sudo chage -l user1
Kết quả ví dụ
Last password change            : Jan 15, 2025
Password expires                : Mar 15, 2025
Password inactive               : never
Account expires                 : never
Minimum number of days between password change : 7
Maximum number of days between password change : 60
Number of days of warning before password expires : 5
  • Thay đổi mật khẩu lần cuối → Ngày mật khẩu được thay đổi lần cuối
  • Mật khẩu hết hạn → Ngày hết hạn mật khẩu
  • Mật khẩu không hoạt động → Thời gian không hoạt động trước khi mật khẩu trở nên không hợp lệ
  • Tài khoản hết hạn → Ngày hết hạn tài khoản
  • Số ngày tối thiểu giữa các lần thay đổi mật khẩu
  • Số ngày tối đa giữa các lần thay đổi mật khẩu
  • Số ngày cảnh báo trước khi mật khẩu hết hạn

Quản trị viên có thể sử dụng thông tin này để thực thi chính sách mật khẩu và tăng cường bảo mật hệ thống.

5. Quản lý người dùng trong Ubuntu (Thêm, Xóa, Sửa)

Quản lý người dùng đúng cách cải thiện độ ổn định và bảo mật hệ thống. Ubuntu cung cấp một số lệnh quản trị như adduser, deluser, và usermod. Phần này giải thích cách thêm, xóa và sửa đổi người dùng.

5.1 Thêm người dùng

Ubuntu cho phép thêm người dùng mới bằng cách sử dụng lệnh adduser hoặc useradd.

5.1.1 Lệnh adduser (Được khuyến nghị)

Lệnh adduser cung cấp cách tương tác để thêm người dùng.

sudo adduser newuser

Ví dụ giao diện tương tác:

Adding user `newuser' ...
Adding new group `newuser' (1002) ...
Adding new user `newuser' (1002) with group `newuser' ...
Creating home directory `/home/newuser' ...
Copying files from `/etc/skel' ...
Enter new UNIX password: ********
Retype new UNIX password: ********
passwd: password updated successfully
Changing the user information for newuser
Enter the new value, or press ENTER for the default
        Full Name []:
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
Is the information correct? [Y/n]
  • Tài khoản người dùng
  • Nhóm riêng
  • Thư mục home (/home/newuser)
  • Mật khẩu đăng nhập
  • Thông tin tài khoản cơ bản

5.1.2 Lệnh useradd (Nâng cao)

Lệnh useradd thân thiện với script và cung cấp kiểm soát chi tiết hơn nhưng không tự động thiết lập mọi thứ.

sudo useradd -m -s /bin/bash newuser
sudo passwd newuser
  • -m → Tạo thư mục home
  • -s /bin/bash → Đặt shell đăng nhập

Mật khẩu phải được đặt riêng khi sử dụng lệnh này.

5.2 Xóa người dùng

Bạn có thể xóa người dùng bằng cách sử dụng deluser hoặc userdel.

5.2.1 Lệnh deluser (Được khuyến nghị)

Lệnh deluser xóa một tài khoản người dùng.

sudo deluser newuser
Xóa cả thư mục home
sudo deluser --remove-home newuser

Điều này sẽ xóa tài khoản và thư mục /home/newuser.

5.2.2 Lệnh userdel (Nâng cao)

Lệnh userdel cung cấp nhiều kiểm soát hơn.

sudo userdel newuser
sudo userdel -r newuser

5.3 Sửa đổi người dùng hiện có

Sử dụng lệnh usermod để sửa đổi thông tin người dùng hiện có.

5.3.1 Thay đổi tên người dùng

sudo usermod -l newname oldname

5.3.2 Thay đổi thư mục home

sudo usermod -d /new/home/path user1
sudo usermod -d /home/newuser -m user1

5.3.3 Sửa đổi thành viên nhóm

sudo usermod -aG sudo user1
groups user1

5.3.4 Thay đổi mật khẩu

sudo passwd user1
Enter new UNIX password: ********
Retype new UNIX password: ********
passwd: password updated successfully

6. Các kịch bản thực tế cho quản lý người dùng

Quản lý người dùng trong Ubuntu không chỉ dừng lại ở việc liệt kê và sửa đổi tài khoản. Hiểu cách áp dụng các lệnh trong các tình huống thực tế là cần thiết để duy trì môi trường an toàn và hiệu quả. Phần này giới thiệu các trường hợp sử dụng phổ biến và cách giải quyết chúng.

6.1 Tìm kiếm người dùng phù hợp với tiêu chí cụ thể

6.1.1 Hiển thị người dùng có quyền quản trị (sudo)

Để liệt kê người dùng có quyền sudo, sử dụng lệnh getent để kiểm tra tệp /etc/group:

getent group sudo

Kết quả ví dụ

sudo:x:27:user1,user2
  • sudo:x:27: → Thông tin nhóm
  • user1,user2 → Người dùng thuộc nhóm sudo

6.1.2 Hiển thị người dùng có khả năng đăng nhập

Tệp /etc/passwd bao gồm các tài khoản hệ thống. Để trích xuất chỉ những người dùng có thể đăng nhập:

grep '/bin/bash' /etc/passwd

Ví dụ đầu ra

user1:x:1001:1001::/home/user1:/bin/bash
user2:x:1002:1002::/home/user2:/bin/bash
  • Chỉ những người dùng có shell như /bin/bash hoặc /bin/sh được bao gồm
  • Các tài khoản hệ thống sử dụng /usr/sbin/nologin hoặc /bin/false bị loại trừ

6.1.3 Hiển thị Người dùng Hệ thống (Tài khoản Không Đăng nhập)

grep -E '/usr/sbin/nologin|/bin/false' /etc/passwd

Ví dụ đầu ra

daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
syslog:x:104:110::/home/syslog:/bin/false

Điều này giúp quản trị viên xác định các tài khoản không nên bị xóa nhầm.

6.2 Dọn dẹp Định kỳ Các Người dùng Không Sử dụng

6.2.1 Hiển thị Thời gian Đăng nhập Cuối cùng của Tất cả Người dùng

lastlog

Ví dụ đầu ra

Username         Port     From             Latest
root            tty1                      Mon Feb 12 14:02:08 +0000 2025
user1           pts/0    192.168.1.10      Mon Jan 15 10:30:12 +0000 2025
user2           pts/1    192.168.1.20      Never logged in
  • Chưa từng đăng nhập → Người dùng chưa từng đăng nhập
    sudo deluser user2 --remove-home
    

6.2.2 Xác minh Thay đổi Mật khẩu Cuối cùng

sudo chage -l user1
sudo passwd --expire user1

Lần đăng nhập tiếp theo của người dùng, việc đặt lại mật khẩu sẽ được yêu cầu vì lý do bảo mật.

6.3 Kiểm tra Người dùng Kết nối qua SSH

who | grep pts

Ví dụ đầu ra

user1    pts/0        192.168.1.10     11:30

Điều này giúp xác định người dùng từ xa và địa chỉ IP của họ.

6.4 Xuất Tất cả Thông tin Người dùng ra CSV

getent passwd | awk -F: '{print $1 "," $3 "," $4 "," $6}' > users.csv

Ví dụ users.csv

root,0,0,/root
user1,1001,1001,/home/user1
user2,1002,1002,/home/user2
  • Xuất tên người dùng, UID, GID và thư mục home
  • Dữ liệu có thể được phân tích bằng Excel hoặc bảng tính

7. Câu hỏi Thường gặp

7.1 Tôi có thể chỉnh sửa /etc/passwd trực tiếp không?

Trả lời: Việc chỉnh sửa trực tiếp không được khuyến nghị. Các sửa đổi không đúng có thể ngăn chặn đăng nhập hoặc làm hỏng hệ thống.

Phương pháp an toàn hơn:

sudo vipw

7.2 Sự khác biệt Giữa Lệnh whousers

CommandDescription
whoDisplays detailed login information
usersDisplays only usernames of logged-in users

7.3 Cách Kiểm tra Lịch sử Đăng nhập cho Người dùng Cụ thể

last user1

7.4 Cách Thay đổi Mật khẩu của Người dùng

sudo passwd user1

7.5 Cách Tạm thời Vô hiệu hóa Người dùng

sudo usermod -L user1
sudo usermod -U user1

7.6 Thêm Người dùng vào Nhóm sudo

sudo usermod -aG sudo user1

7.7 Thay đổi Thư mục Home của Người dùng

sudo usermod -d /new/home/path -m user1

7.8 Xóa Hoàn toàn Người dùng và Dữ liệu của Họ

sudo deluser --remove-home user1

hoặc

sudo userdel -r user1

7.9 Kiểm tra Hoạt động Chi tiết của Người dùng Đã Đăng nhập

w
  • Người dùng đã đăng nhập
  • Địa chỉ IP từ xa
  • Các tiến trình hiện tại
  • Tải hệ thống

Điều này cho phép quản trị viên giám sát việc sử dụng và phát hiện truy cập không được phép.