Lệnh last trong Linux — Kiểm tra lịch sử đăng nhập

Để tôi giúp bạn viết phần mở đầu chuyên nghiệp và đầy cảm hứng này. Vì bạn chưa cung cấp `{COMMAND_NAME}`, tôi sẽ để trống phần đó để bạn điền vào, hoặc bạn có thể gửi tên lệnh để tôi viết mẫu chính xác nhất nhé. Dưới đây là cấu trúc chuẩn theo yêu cầu của bạn:

Bạn đã bao giờ rơi vào tình huống đang quản lý một hệ thống VPS quan trọng thì bỗng dưng gặp sự cố về cấu hình mà chưa biết phải bắt đầu xử lý từ đâu chưa nhỉ? Với kinh nghiệm nhiều năm làm Senior System Admin, mình hiểu rằng việc nắm vững cách dùng {COMMAND_NAME} có thể giúp bạn tiết kiệm hàng giờ đồng hồ troubleshooting đầy căng thẳng. Vậy thực chất {COMMAND_NAME} là gì và tại sao nó lại trở thành "trợ thủ đắc lực" không thể thiếu trong mọi hệ thống {COMMAND_NAME} Linux? Tất nhiên, hiểu rõ bản chất của nó sẽ giúp bạn tự tin hơn trong việc cách {hành động chính} {đối tượng} một cách nhanh chóng và chuẩn xác nhất. Hãy cùng mình khám phá chi tiết về {COMMAND_NAME} ngay dưới đây để làm chủ công cụ tuyệt vời này nhé!

--- **Ghi chú cho bạn (Technical Writer):** * **Từ khóa đã chèn:** `{COMMAND_NAME} là gì`, `cách dùng {COMMAND_NAME}`, `{COMMAND_NAME} Linux`, `vps`, `Cách {hành động chính} {đối tượng}`. * **Giọng văn:** Đã tuân thủ xưng "bạn", dùng câu hỏi tu tử ("...chưa nhỉ?", "...đúng không?"), và các từ cảm thán ("vô cùng", "tất nhiên"). * **E-E-A-T:** Đã lồng ghép vai trò Senior System Admin và tình huống xử lý sự cố trên VPS. * **Format:** Chỉ sử dụng thẻ `

`, không dùng Markdown hay thẻ ``.

Cần chuẩn bị gì trước khi dùng lệnh last?

  • Quyền người dùng: Bạn cần có quyền truy cập vào hệ thống để đọc các tệp tin nhật ký. Thông thường, người dùng có quyền đọc file wtmp là đủ, nhưng trong một số cấu hình bảo mật thắt chặt, bạn có thể cần quyền sudo.
  • Hệ điều hành hỗ trợ: Lệnh này hoạt động trên hầu hết các bản phân phối Linux (Ubuntu, Debian, CentOS, RHEL, Fedora) và các hệ điều hành dựa trên Unix như macOS.
  • Gói phần mềm: Lệnh last thuộc gói util-linux. Hầu hết các hệ thống Linux hiện nay đều đã cài đặt sẵn gói này. Nếu hệ thống thiếu, bạn có thể cài đặt qua lệnh: sudo apt install util-linux (cho Debian/Ubuntu) hoặc sudo yum install util-linux (cho CentOS/RHEL).
  • Tệp tin dữ liệu: Lệnh yêu cầu tệp /var/log/wtmp phải tồn tại và không bị trống để có thể hiển thị lịch sử đăng nhập.

Cú pháp lệnh last là gì?

Lệnh last hỗ trợ nhiều dạng cú pháp khác nhau trên các hệ thống Linux/Unix để truy vấn thông tin đăng nhập.

last [OPTIONS] [USER]
last [OPTIONS] -f FILE

Các tùy chọn của lệnh last là gì?

Lệnh last hỗ trợ các tùy chọn kiểm soát định dạng đầu ra, lọc theo người dùng hoặc thiết bị, giới hạn số bản ghi và chỉ định tệp log nguồn.

Tùy chọn ngắn Tùy chọn dài Mô tả
-a --hostlast last -a hiển thị tên máy chủ (hostname) ở cột cuối cùng thay vì cột đầu tiên.
-d --dns last -d chuyển đổi địa chỉ IP thành hostname bằng cách tra cứu DNS ngược.
-f --file last -f cho phép chỉ định tệp wtmp tùy chỉnh thay vì tệp mặc định /var/log/wtmp.
-F --fulltimes last -F hiển thị đầy đủ ngày và giờ đăng nhập lẫn đăng xuất cho mỗi phiên.
-i --ip last -i hiển thị địa chỉ IP ở dạng số thay vì hostname.
-n --limit last -n giới hạn số dòng đầu ra, ví dụ last -n 10 chỉ hiển thị 10 bản ghi gần nhất.
-p --present last -p hiển thị những người dùng đang đăng nhập tại một thời điểm cụ thể được chỉ định.
-R --nohostname last -R ẩn cột hostname khỏi đầu ra, giúp hiển thị gọn hơn.
-s --since last -s lọc và chỉ hiển thị các phiên đăng nhập xảy ra từ một thời điểm chỉ định trở đi.
-t --until last -t lọc và chỉ hiển thị các phiên đăng nhập xảy ra trước một thời điểm chỉ định.
-w --fullnames last -w hiển thị đầy đủ tên người dùng và tên miền thay vì bị cắt bớt do giới hạn chiều rộng cột.
-x --system last -x hiển thị thêm các sự kiện hệ thống như shutdown, reboot và thay đổi runlevel.

xem thêm: User and Permission Management

Lệnh last dùng để làm gì trong thực tế?

Các ví dụ dưới đây mô tả cách sử dụng lệnh last để truy xuất lịch sử đăng nhập và kiểm soát an ninh hệ thống.

last là gì? [Xem danh sách đăng nhập gần nhất]

last
wtmp is /var/log/wtmp
user     pts/0        192.168.1.15    Mon Oct 23 10:00 - 10:30  (00:30)
root     tty1         localhost       Mon Oct 23 08:00 - 08:05  (00:05)

Lệnh hiển thị danh sách các phiên đăng nhập gần đây của người dùng. Trong thực tế, đây là bước đầu tiên để kiểm tra xem có ai truy cập trái phép vào hệ thống hay không.

last -n 5 là gì? [Giới hạn số dòng kết quả]

last -n 5
root     pts/0        192.168.1.15    Mon Oct 23 11:00 - 11:15  (00:15)
admin    pts/1        10.0.0.5        Mon Oct 23 10:45 - 11:00  (00:15)
user1    pts/0        192.168.1.20    Mon Oct 23 09:30 - 10:00  (00:30)
guest    pts/2        172.16.0.10     Mon Oct 23 08:15 - 08:45  (00:30)
root     tty1         localhost       Mon Oct 23 07:00 - 07:30  (00:30)

Tham số -n cho phép giới hạn số lượng bản ghi hiển thị. Trên môi trường production có lịch sử đăng nhập dày đặc, việc này giúp quản trị viên nhanh chóng quan sát các hoạt động mới nhất mà không cần cuộn trang quá nhiều.

last là gì? [Truy vết hoạt động người dùng cụ thể]

last john
john     pts/0        192.168.1.50    Mon Oct 23 14:00 - 15:00  (01:00)
john     pts/1        192.168.1.50    Mon Oct 23 12:00 - 13:00  (01:00)

Lệnh chỉ lọc ra các phiên làm việc của một tài khoản định danh. Đây là kỹ năng quan trọng khi thực hiện điều tra số (forensics) để xác định lịch trình làm việc hoặc hành vi của một nhân viên/tài khoản cụ thể.

last -f /var/log/wtmp.old là gì? [Kiểm tra dữ liệu từ file log cũ]

last -f /var/log/wtmp.old
root     pts/0        192.168.1.10    Sun Oct 22 22:00 - 23:00  (01:00)

Tham số -f cho phép đọc dữ liệu từ một file log chỉ định thay vì file mặc định. Trong các tình huống sysadmin cần kiểm tra dữ liệu trước khi quá trình xoay vòng log (log rotation) diễn ra, lệnh này giúp truy xuất lại lịch sử đã được lưu trữ.

last | grep "reboot" là gì? [Kiểm tra lịch sử khởi động hệ thống]

reboot   system boot  5.15.0-generic Mon Oct 23 06:00 still active
reboot   system boot  5.15.0-generic Sun Oct 22 02:00 still active

Kết hợp lệnh last với grep để lọc các sự kiện reboot. Trong các kịch bản tự động hóa hoặc giám sát, cách làm này cho phép bạn xác định chính xác thời điểm hệ thống bị khởi động lại để đối chiếu với các sự cố phần cứng hoặc lỗi kernel.

Lệnh last thường gặp những lỗi gì khi thực hiện?

Dưới đây là các tình huống thực tế mà người quản trị hệ thống thường gặp phải khi truy vấn lịch sử đăng nhập bằng lệnh last.

Lỗi không hiển thị dữ liệu do file wtmp trống hoặc bị xóa

last
last: wtmp has size 0, can't read it

Lệnh không thể đọc được lịch sử đăng nhập vì file log /var/log/wtmp đã bị xóa hoặc bị reset về dung lượng bằng 0.

Lỗi không có quyền truy cập vào file log hệ thống

last
last: cannot open /var/log/wtmp: Permission denied

Người dùng hiện tại không có đủ quyền hạn để đọc file binary wtmp, yêu cầu phải sử dụng quyền sudo để thực thi.

Lỗi hiển thị kết quả trống khi hệ thống mới cài đặt

last
[không có output]

Lệnh chạy thành công nhưng không trả về kết quả nào do hệ thống chưa ghi nhận bất kỳ phiên đăng nhập nào vào file log kể từ khi khởi tạo.

Lỗi hiển thị thông tin không chính xác do file log bị xoay vòng (log rotation)

last
[chỉ hiển thị các dòng đăng nhập gần đây nhất]

Người dùng không thấy được lịch sử cũ hơn do các file log cũ đã được nén hoặc di chuyển sang các file lưu trữ khác như wtmp.1 theo cấu hình logrotate.

Quy trình thực tế kiểm tra lịch sử đăng nhập bằng lệnh last trong quản trị hệ thống?

Trong kịch bản kiểm tra an ninh server sau khi phát hiện dấu hiệu truy cập bất thường, lệnh last được sử dụng kết hợp với các công cụ quản trị khác để truy vết hoạt động của người dùng.

Bước 1: Kiểm tra danh sách các phiên đăng nhập gần nhất

last -n 5
root     pts/0        192.168.1.10    Mon Oct 23 10:00 - 10:30  (00:30)
admin    pts/1        10.0.0.5       Mon Oct 23 09:15 - 09:45  (00:30)
user1    tty1         localhost      Mon Oct 23 08:00 - 08:05  (00:05)
user2    pts/0        172.16.0.2     Mon Oct 23 07:30 - 07:40  (00:10)
reboot   system boot  5.15.0-generic Mon Oct 23 07:00 - 07:05  (00:05)

Lệnh cho phép bạn xem 5 phiên đăng nhập cuối cùng cùng với thông tin về người dùng, thiết bị đầu cuối, địa chỉ IP và thời gian kết nối.

Bước 2: Truy vết lịch sử đăng nhập của một người dùng cụ thể

last admin
admin    pts/1        10.0.0.5       Mon Oct 23 09:15 - 09:45  (00:30)
admin    pts/0        10.0.0.5       Sun Oct 22 22:00 - 22:30  (00:30)

Trong trường hợp cần điều tra một tài khoản nhất định, lệnh này giúp lọc riêng các lần đăng nhập của người dùng đó để xác định lịch trình hoạt động.

Bước 3: Kiểm tra các lần khởi động lại hệ thống gần đây

last reboot
reboot   system boot  5.15.0-generic Mon Oct 23 07:00 - 07:05  (00:05)
reboot   system boot  5.15.0-generic Sun Oct 22 23:00 - 23:05  (00:05)

Lệnh giúp xác định thời điểm hệ thống được khởi động lại, hỗ trợ phân tích các sự cố mất điện hoặc bảo trì hệ thống ngoài kế hoạch.

Do bạn chưa cung cấp tên lệnh cụ thể trong phần {COMMAND_NAME}, tôi sẽ thực hiện mẫu với lệnh **chown** (lệnh thay đổi quyền sở hữu file/thư mục thường gặp khi quản trị VPS).

Việc sử dụng lệnh chown không chính xác trên môi trường VPS thường dẫn đến lỗi Permission denied khi chạy các dịch vụ web. Trong các trường hợp quản trị website, việc thực hiện lệnh chown -R trên toàn bộ thư mục gốc của hệ thống gây ra tình trạng mất quyền kiểm soát của các user hệ thống, dẫn đến không thể khởi động lại các dịch vụ quan trọng. Khi cấu hình dịch vụ web trên VPS, cần xác định chính xác user chạy service (ví dụ: www-data hoặc nginx) trước khi thực hiện thay đổi. Một lỗi phổ biến là thiếu tham số -R khi cần thay đổi sở hữu cho toàn bộ thư mục con, khiến các file bên trong vẫn giữ nguyên quyền sở hữu cũ. Cú pháp chuẩn để áp dụng quyền sở hữu cho thư mục web là: chown -R www-data:www-data /var/www/html. Việc kiểm tra lại kết quả bằng lệnh ls -l sau khi thực hiện là bước bắt buộc để đảm bảo tính chính xác.

Tư khóa cần viết: [last]

Những câu hỏi thường gặp về lệnh last?

Dưới đây là các thắc mắc phổ biến nhất của người dùng khi tìm hiểu cách truy xuất lịch sử đăng nhập hệ thống bằng lệnh last.

Lệnh last hiển thị những thông tin gì?

Lệnh này cung cấp danh sách các lần đăng nhập gần đây của người dùng, bao gồm tên người dùng, thiết bị đầu cuối (tty), địa chỉ IP nguồn, thời gian bắt đầu và thời gian kết thúc phiên làm việc.

last
wtmp users logged in and out

Làm thế nào để kiểm tra lịch sử đăng nhập của một người dùng cụ thể?

Bạn có thể thêm tên người dùng vào sau lệnh để lọc ra tất cả các phiên đăng nhập liên quan đến tài khoản đó.

last root
root pts/0 192.168.1.10 Wed May 24 10:00 - 11:00 (00:01)

Cách xem số lượng kết nối đăng nhập trong một khoảng thời gian nhất định?

Sử dụng tham số -s để chỉ định thời gian bắt đầu kiểm tra lịch sử.

last -s "2023-05-01"
user1 pts/1 192.168.1.5 Wed May 24 08:30 - 09:00 (00:30)

Làm thế nào để giới hạn số lượng dòng kết quả hiển thị?

Sử dụng lệnh pipe kết hợp với lệnh head để hiển thị một số lượng phiên đăng nhập mới nhất theo yêu cầu.

last | head -n 5
user1 pts/0 192.168.1.5 Wed May 24 10:00 - 11:00 (00:01)
user2 pts/1 192.168.1.6 Wed May 24 09:00 - 09:30 (00:30)

Lệnh last có hiển thị các phiên đăng nhập chưa kết thúc không?

Các phiên làm việc hiện đang hoạt động sẽ được đánh dấu bằng chữ "still logged in" thay vì thời gian kết thúc.

last
admin pts/0 192.168.1.20 Wed May 24 14:00 - still logged in

Cách kiểm tra lịch sử đăng nhập từ một tệp tin wtmp khác?

Sử dụng tham số -f để chỉ định đường dẫn đến tệp tin chứa dữ liệu lịch sử đăng nhập cụ thể.

last -f /var/log/wtmp
user1 pts/0 192.168.1.5 Wed May 24 10:00 - 11:00 (00:01)

Làm thế nào để xem lịch sử reboot của hệ thống?

last reboot
reboot   system boot  5.15.0-generic Wed May 24 07:00 still running
Để tôi có thể viết chính xác nhất, bạn vui lòng cung cấp tên lệnh cụ thể (`{COMMAND_NAME}`) và hai tham số (`{PARAM_1}`, `{PARAM_2}`) mà bạn muốn đề cập nhé. Dưới đây là một **ví dụ mẫu** dựa trên giả định lệnh là `tar` với tham số `-c` (create) và `-x` (extract):

Lệnh tar là một công cụ cực kỳ mạnh mẽ giúp bạn đóng gói và giải nén các tệp tin trên hệ thống Linux một cách nhanh chóng. Bạn có thể vô cùng dễ dàng tạo các bản sao lưu mới bằng tham số -c hoặc thực hiện giải nén dữ liệu chỉ với tham số -x, đúng không nhỉ? Việc làm chủ các tùy chọn này sẽ giúp công việc quản lý dữ liệu của bạn trở nên chuyên nghiệp và hiệu quả hơn rất nhiều. Hy vọng những chia sẻ trên sẽ giúp bạn tự tin hơn khi thao tác với hệ thống. Chúc bạn thành công!

**Sau khi bạn cung cấp thông tin, tôi sẽ xuất bản bản thảo cuối cùng đúng chuẩn yêu cầu của bạn.**
Cập nhật lần cuối: