Trong quá trình quản trị hệ thống Linux, việc giám sát và kiểm tra ai đã đăng nhập, vào lúc nào và từ đâu là một trong những nhiệm vụ cơ bản nhưng cực kỳ quan trọng. Bạn có bao giờ lo lắng về những truy cập trái phép vào server của mình không? Hay đơn giản là bạn muốn kiểm tra lại lịch sử làm việc của các thành viên trong nhóm? Lệnh last trong Linux chính là công cụ mạnh mẽ và đơn giản giúp bạn giải quyết những vấn đề này. Nó không chỉ cung cấp thông tin chi tiết về các phiên đăng nhập mà còn là trợ thủ đắc lực trong việc phân tích bảo mật và xử lý sự cố. Bài viết này sẽ hướng dẫn bạn từ A-Z về lệnh last, từ các khái niệm cơ bản, cách sử dụng, đến những ứng dụng thực tế trong công việc quản trị hệ thống hàng ngày.
Giới thiệu về lệnh last trong Linux
Khi bạn quản lý một hoặc nhiều máy chủ Linux, việc đảm bảo an ninh và ổn định là ưu tiên hàng đầu. Một phần quan trọng của công việc này là theo dõi hoạt động của người dùng. Lệnh last là một công cụ dòng lệnh thiết yếu, cho phép bạn xem lại lịch sử các lần đăng nhập và đăng xuất của tất cả người dùng trên hệ thống. Tầm quan trọng của nó không chỉ dừng lại ở việc giám sát, mà còn là một công cụ chẩn đoán sự cố hiệu quả.
Hãy tưởng tượng một tình huống thực tế: hệ thống của bạn đột nhiên hoạt động chậm lại hoặc có những thay đổi đáng ngờ trong cấu hình. Việc đầu tiên bạn cần làm là kiểm tra xem có ai đã đăng nhập vào hệ thống trong khoảng thời gian đó không. Lệnh last sẽ cung cấp cho bạn một bức tranh rõ ràng về các phiên đăng nhập, giúp bạn nhanh chóng khoanh vùng và xác định nguyên nhân. Bài viết này sẽ đi sâu vào chức năng, cách sử dụng chi tiết và ý nghĩa của những thông tin mà lệnh last hiển thị, giúp bạn khai thác tối đa sức mạnh của công cụ này.
Chức năng chính của lệnh last
Lệnh last là một trong những công cụ cơ bản nhất mà bất kỳ quản trị viên hệ thống Linux nào cũng cần nắm vững. Chức năng chính của nó là truy xuất và hiển thị lịch sử các phiên đăng nhập của người dùng. Thông tin này cực kỳ hữu ích cho việc kiểm tra, giám sát an ninh và phân tích các hoạt động đã diễn ra trên hệ thống.
Lệnh last là gì?
Về cơ bản, last là một lệnh dùng để đọc và hiển thị nội dung của file /var/log/wtmp. File này ghi lại tất cả các sự kiện đăng nhập và đăng xuất trên hệ thống. Thay vì phải đọc một file nhị phân phức tạp, lệnh last giúp bạn diễn giải và trình bày dữ liệu này một cách rõ ràng, dễ hiểu. Mục đích chính của nó là cung cấp một bản ghi lịch sử truy cập, giúp quản trị viên biết được ai đã kết nối, từ đâu, và trong bao lâu. Đây là công cụ không thể thiếu để theo dõi hoạt động người dùng và phát hiện các dấu hiệu bất thường.

Thông tin lệnh last hiển thị
Khi bạn thực thi lệnh last, kết quả trả về được trình bày theo các cột với nhiều thông tin giá trị. Hiểu rõ ý nghĩa của từng cột sẽ giúp bạn phân tích dữ liệu hiệu quả hơn. Cột đầu tiên là tên người dùng (user) đã đăng nhập. Cột thứ hai cho biết thiết bị đầu cuối (terminal) được sử dụng, ví dụ như tty cho các phiên đăng nhập trực tiếp tại máy hoặc pts cho các phiên đăng nhập từ xa qua SSH.
Cột tiếp theo hiển thị địa chỉ IP hoặc tên miền của máy khách đã thực hiện đăng nhập. Đây là thông tin quan trọng để xác định nguồn gốc của kết nối. Tiếp đến là thời gian bắt đầu phiên đăng nhập và thời gian kết thúc. Cuối cùng, cột trong dấu ngoặc đơn cho biết tổng thời gian của phiên làm việc đó. Ngoài ra, bạn sẽ gặp các trạng thái đặc biệt như still logged in nếu người dùng vẫn đang trong phiên làm việc, down cho biết hệ thống đã tắt trong khoảng thời gian đó, và reboot để ghi nhận các lần khởi động lại hệ thống.
Cách sử dụng lệnh last để kiểm tra lịch sử đăng nhập người dùng
Sử dụng lệnh last rất đơn giản nhưng lại vô cùng linh hoạt nhờ các cú pháp và tham số khác nhau. Nắm vững những cách dùng này sẽ giúp bạn truy xuất thông tin một cách nhanh chóng và chính xác theo đúng nhu cầu công việc.
Các cú pháp cơ bản của lệnh last
Để bắt đầu, bạn chỉ cần mở terminal và gõ lệnh last. Lệnh này sẽ hiển thị toàn bộ lịch sử đăng nhập được lưu trong file /var/log/wtmp, với các bản ghi mới nhất ở trên cùng. Đây là cách dùng phổ biến nhất để có cái nhìn tổng quan.
Nếu bạn muốn kiểm tra lịch sử đăng nhập của một người dùng cụ thể, hãy sử dụng cú pháp last [username]. Ví dụ, last ducbui sẽ chỉ lọc và hiển thị các phiên đăng nhập của người dùng có tên là ducbui.
Trong trường hợp bạn chỉ muốn xem một số lượng dòng giới hạn, chẳng hạn như 10 phiên đăng nhập gần nhất, bạn có thể dùng lệnh last -n 10 hoặc last -10. Tùy chọn -n giúp bạn giới hạn số lượng kết quả trả về, rất hữu ích khi file log có kích thước lớn và bạn chỉ quan tâm đến các hoạt động gần đây.

Các tham số và tùy chọn phổ biến
Ngoài các cú pháp cơ bản, lệnh last còn hỗ trợ nhiều tham số hữu ích để tùy chỉnh kết quả hiển thị. Một trong những tùy chọn mạnh mẽ là -f (file), cho phép bạn chỉ định một file log khác để đọc thay vì file /var/log/wtmp mặc định. Ví dụ, last -f /var/log/wtmp.1 sẽ đọc dữ liệu từ file log đã được lưu trữ (rotated log), giúp bạn xem lại lịch sử cũ hơn.
Tùy chọn -x rất quan trọng khi bạn cần kiểm tra lịch sử tắt máy và khởi động lại của hệ thống. Lệnh last -x sẽ hiển thị cả các bản ghi về việc tắt hệ thống (shutdown) và các lần thay đổi runlevel, cung cấp một cái nhìn toàn diện hơn về trạng thái hoạt động của server.
Cuối cùng, tùy chọn -d (DNS) giúp chuyển đổi địa chỉ IP của máy khách thành tên miền tương ứng. Điều này giúp bạn dễ dàng nhận dạng nguồn gốc của các kết nối hơn là nhìn vào một dãy số IP khó nhớ. Tuy nhiên, việc này có thể làm lệnh chạy chậm hơn một chút do cần thời gian để truy vấn DNS.
Ứng dụng thực tế của lệnh last trong quản trị hệ thống
Lệnh last không chỉ là một công cụ lý thuyết mà còn có nhiều ứng dụng thực tiễn, đặc biệt trong việc giám sát an ninh và xử lý sự cố. Việc tận dụng hiệu quả lệnh này giúp quản trị viên chủ động hơn trong việc bảo vệ và duy trì sự ổn định của hệ thống.

Giám sát và phân tích hành vi đăng nhập của người dùng
Đây là ứng dụng quan trọng nhất của lệnh last. Bằng cách thường xuyên kiểm tra lịch sử đăng nhập, bạn có thể nhanh chóng phát hiện các hoạt động đáng ngờ. Ví dụ, nếu bạn thấy một tài khoản quản trị đăng nhập vào lúc 3 giờ sáng từ một địa chỉ IP lạ, đây có thể là dấu hiệu của một cuộc tấn công. Lệnh last cho phép bạn biết chính xác ai đã đăng nhập, khi nào và từ đâu.
Phân tích hành vi đăng nhập còn giúp bạn đảm bảo tuân thủ các chính sách bảo mật của công ty. Bạn có thể kiểm tra xem có tài khoản nào được chia sẻ sử dụng hay không, hoặc có người dùng nào đăng nhập ngoài giờ làm việc quy định hay không. Việc giám sát này giúp ngăn chặn các rủi ro bảo mật tiềm ẩn trước khi chúng gây ra thiệt hại nghiêm trọng.
Hỗ trợ xử lý sự cố và bảo mật
Khi hệ thống gặp sự cố, lệnh last là một trong những công cụ đầu tiên bạn nên nghĩ đến. Giả sử một ứng dụng quan trọng bị dừng đột ngột, bạn có thể dùng last để kiểm tra xem có ai đã đăng nhập và thực hiện thay đổi gì ngay trước thời điểm sự cố xảy ra hay không. Việc xem xét các phiên đăng nhập bất thường, chẳng hạn như các phiên đăng nhập thất bại liên tục (ghi lại bởi lệnh lastb), có thể giúp bạn phát hiện các cuộc tấn công dò mật khẩu (brute-force).
Bên cạnh đó, việc kiểm tra lịch sử khởi động lại và tắt máy với last -x cũng cực kỳ hữu ích. Nó giúp bạn xác định chính xác thời điểm hệ thống bị khởi động lại ngoài ý muốn. Từ đó, bạn có thể đối chiếu với các file log khác để tìm ra nguyên nhân, dù đó là lỗi phần cứng, sự cố nguồn điện hay do một tiến trình nào đó gây ra.
Lưu trữ và truy xuất dữ liệu lịch sử đăng nhập qua file hệ thống
Toàn bộ sức mạnh của lệnh last đến từ dữ liệu được lưu trữ trong một file hệ thống đặc biệt. Hiểu về file này, cách nó hoạt động và cách quản lý nó là kiến thức nền tảng để bạn có thể truy xuất lịch sử đăng nhập một cách hiệu quả và an toàn.

Vị trí và vai trò của file /var/log/wtmp
Dữ liệu mà lệnh last hiển thị được lấy từ file /var/log/wtmp. Đây là một file nhị phân, không phải file văn bản thông thường, vì vậy bạn không thể mở và đọc nó bằng các trình soạn thảo văn bản như nano hay vim. Vai trò của wtmp (viết tắt của “who temp”) là ghi lại một cách trung thực tất cả các sự kiện đăng nhập và đăng xuất của người dùng. Mỗi khi một người dùng bắt đầu một phiên làm việc, một bản ghi mới sẽ được thêm vào file này.
Vì file wtmp có thể phát triển rất lớn theo thời gian, các hệ thống Linux thường sử dụng một cơ chế gọi là logrotate để quản lý. logrotate sẽ tự động nén và lưu trữ file wtmp cũ thành các file như wtmp.1, wtmp.2.gz,… và tạo ra một file wtmp mới. Đây là cách quản lý vòng đời dữ liệu để tiết kiệm không gian đĩa mà vẫn giữ lại được lịch sử đăng nhập cũ.
Backup và phục hồi dữ liệu lịch sử đăng nhập
Do tầm quan trọng của dữ liệu đăng nhập trong việc giám sát an ninh, việc sao lưu (backup) file /var/log/wtmp là một thực hành tốt. Bạn có thể thiết lập một công việc định kỳ (cron job) để sao chép file này đến một nơi lưu trữ an toàn. Việc này đảm bảo rằng ngay cả khi file gốc bị xóa hoặc hỏng, bạn vẫn có bản sao để điều tra khi cần.
Khi cần xem lại dữ liệu từ một file backup, bạn có thể sử dụng tham số -f của lệnh last. Ví dụ, nếu bạn có một file backup tên là wtmp_backup_2023, bạn chỉ cần chạy lệnh last -f /path/to/wtmp_backup_2023. Lệnh sẽ đọc và hiển thị lịch sử đăng nhập từ file backup đó, giúp bạn truy xuất thông tin từ quá khứ một cách dễ dàng.
Mẹo và lưu ý khi sử dụng lệnh last hiệu quả
Để khai thác tối đa tiềm năng của lệnh last, bạn cần biết một vài mẹo và lưu ý quan trọng. Những kỹ thuật này không chỉ giúp bạn làm việc nhanh hơn mà còn đảm bảo bạn lấy được đúng thông tin mình cần một cách an toàn.

Đầu tiên, hãy luôn nhớ kiểm tra quyền truy cập. Trên nhiều hệ thống, file /var/log/wtmp có thể yêu cầu quyền root để đọc. Nếu bạn chạy lệnh last với người dùng thông thường và không thấy kết quả hoặc nhận được thông báo lỗi, hãy thử chạy lại với sudo last. Điều này đảm bảo bạn có đủ quyền hạn để truy cập vào file log.
Một trong những mẹo hữu ích nhất là kết hợp last với lệnh grep là gì để lọc thông tin. Ví dụ, bạn muốn tìm tất cả các lần đăng nhập từ một địa chỉ IP cụ thể? Hãy dùng lệnh last | grep '192.168.1.100'. Sự kết hợp này cho phép bạn nhanh chóng tìm kiếm các bản ghi khớp với một chuỗi ký tự, cho dù đó là tên người dùng, địa chỉ IP hay một khoảng thời gian nhất định.
Cuối cùng, bạn cần lưu ý về giới hạn của dữ liệu. Như đã đề cập, file wtmp được quản lý bởi logrotate. Điều này có nghĩa là lịch sử đăng nhập bạn thấy chỉ kéo dài đến thời điểm file log được xoay vòng gần nhất. Nếu bạn cần xem lịch sử cũ hơn, bạn phải sử dụng tham số -f để đọc các file log đã được lưu trữ (ví dụ wtmp.1). Hãy nhận thức về giới hạn này để không bị bất ngờ khi không tìm thấy dữ liệu từ nhiều tháng trước.
Các vấn đề thường gặp và cách xử lý
Mặc dù lệnh last khá đơn giản, đôi khi bạn vẫn có thể gặp phải một số vấn đề trong quá trình sử dụng. Biết cách nhận biết và xử lý những sự cố này sẽ giúp bạn tiết kiệm thời gian và đảm bảo công cụ luôn hoạt động như mong đợi.
Không hiển thị dữ liệu do file wtmp bị xóa hoặc hỏng
Một trong những vấn đề phổ biến nhất là khi bạn chạy lệnh last và không nhận được bất kỳ kết quả nào, hoặc nhận được thông báo lỗi rằng file wtmp không tồn tại. Nguyên nhân có thể là do file /var/log/wtmp đã vô tình bị xóa hoặc bị hỏng. Đôi khi, đây cũng có thể là dấu hiệu của một kẻ tấn công đang cố gắng che giấu dấu vết.
Để xử lý, trước tiên hãy kiểm tra xem file có tồn tại không bằng lệnh ls -l /var/log/wtmp. Nếu file không có, bạn có thể tạo lại nó bằng lệnh sudo touch /var/log/wtmp và sau đó thiết lập quyền truy cập phù hợp với sudo chmod 664 /var/log/wtmp. Sau khi file được tạo lại, hệ thống sẽ bắt đầu ghi nhận các lần đăng nhập mới. Tuy nhiên, lưu ý rằng lịch sử cũ đã mất sẽ không thể phục hồi nếu bạn không có bản sao lưu.

Hiển thị thông tin không chính xác hoặc thiếu
Đôi khi bạn có thể thấy rằng thông tin do lệnh last hiển thị có vẻ thiếu sót hoặc không đầy đủ như bạn kỳ vọng. Nguyên nhân chính thường là do cơ chế logrotate. Các dịch vụ tự động trên hệ thống sẽ định kỳ nén và lưu trữ file wtmp hiện tại, sau đó tạo một file mới. Do đó, lệnh last mặc định chỉ hiển thị dữ liệu từ file wtmp hiện tại.
Nếu bạn cần xem lại lịch sử cũ hơn, bạn phải tìm đến các file log đã được xoay vòng, thường có tên như /var/log/wtmp.1, /var/log/wtmp.2.gz,… và sử dụng tham số -f để đọc chúng. Ví dụ: last -f /var/log/wtmp.1. Hiểu rõ về logrotate sẽ giúp bạn không bị bối rối khi thấy dữ liệu bị “thiếu” và biết cách truy xuất thông tin từ các bản ghi lưu trữ.
Best Practices khi dùng lệnh last
Để sử dụng lệnh last một cách chuyên nghiệp và an toàn, có một vài quy tắc và thực hành tốt mà bạn nên tuân thủ. Áp dụng những nguyên tắc này sẽ giúp bạn duy trì một hệ thống bảo mật và dễ quản lý hơn.

Thứ nhất, luôn kiểm tra quyền truy cập và sử dụng sudo khi cần thiết. Nhiều tác vụ quản trị, bao gồm cả việc đọc một số file log hệ thống, đòi hỏi quyền hạn cao. Chạy lệnh với sudo đảm bảo bạn có thể truy cập đầy đủ vào dữ liệu mà không gặp lỗi từ chối quyền.
Thứ hai, hãy kết hợp lệnh last với các công cụ quản lý log trung tâm. Trong một môi trường có nhiều máy chủ, việc đăng nhập vào từng máy để kiểm tra log là không hiệu quả. Thay vào đó, bạn nên cấu hình hệ thống để gửi log (bao gồm cả wtmp) đến một máy chủ log tập trung. Các công cụ như Logstash, Graylog, hoặc Splunk có thể giúp bạn phân tích và giám sát hoạt động đăng nhập trên toàn bộ hạ tầng một cách hiệu quả.
Thứ ba, thường xuyên backup file wtmp. Dữ liệu lịch sử đăng nhập là vô giá khi xảy ra sự cố bảo mật. Hãy thiết lập một lịch trình tự động để sao lưu file /var/log/wtmp và các file log đã xoay vòng. Việc này đảm bảo bạn không bị mất dữ liệu quan trọng nếu file gốc bị xóa hoặc hệ thống gặp sự cố nghiêm trọng.
Cuối cùng, hãy cẩn trọng khi sử dụng các tùy chọn như -f. Tránh chạy lệnh last trên các file hệ thống nhị phân mà bạn không hiểu rõ. Việc đọc sai file có thể dẫn đến kết quả không mong muốn hoặc gây nhầm lẫn. Luôn đảm bảo bạn biết mình đang làm gì, đặc biệt là khi làm việc với quyền root.
Kết luận
Qua bài viết này, chúng ta đã cùng nhau khám phá lệnh last trong Linux, một công cụ tuy nhỏ nhưng lại có vai trò vô cùng quan trọng trong quản trị hệ thống. Từ việc hiểu rõ chức năng, cách sử dụng các cú pháp và tham số, cho đến ứng dụng thực tế trong giám sát an ninh và xử lý sự cố, last thực sự là một trợ thủ đắc lực cho bất kỳ quản trị viên nào. Nó cung cấp một cái nhìn minh bạch về hoạt động của người dùng, giúp bạn bảo vệ hệ thống khỏi các truy cập trái phép và duy trì sự ổn định.
Chúng tôi khuyến khích bạn hãy bắt đầu thực hành ngay hôm nay. Hãy mở terminal và thử các lệnh đã học trên môi trường thử nghiệm của mình để làm quen. Việc áp dụng thường xuyên lệnh last vào quy trình giám sát hàng ngày sẽ giúp bạn nâng cao kỹ năng và sự tự tin trong việc quản lý hệ thống Ubuntu. Ngoài ra, đừng quên tìm hiểu thêm các lệnh liên quan như who, w, và lastlog để có một bộ công cụ hoàn chỉnh hơn cho việc quản trị người dùng và bảo mật hệ thống hiệu quả.