who command in linux

Lệnh who trong Linux: Giải mã bí mật người dùng hệ thống

Trong thế giới Linux đầy mạnh mẽ và linh hoạt, việc quản lý người dùng là một yếu tố then chốt để đảm bảo an ninh và hiệu suất hệ thống. Và trong số vô vàn các công cụ quản lý người dùng, lệnh who nổi lên như một trợ thủ đắc lực, giúp bạn nhanh chóng nắm bắt thông tin về những ai đang sử dụng hệ thống của mình.

Bài viết này sẽ đưa bạn khám phá sâu hơn về lệnh who, từ cú pháp cơ bản đến các tùy chọn nâng cao, đồng thời cung cấp những ví dụ thực tế giúp bạn làm chủ công cụ này một cách dễ dàng. Hãy cùng bắt đầu hành trình khám phá sức mạnh tiềm ẩn của lệnh who trong Linux nhé!

who là gì và tại sao nó lại quan trọng?

Lệnh who là một tiện ích dòng lệnh đơn giản nhưng vô cùng hữu ích trong Linux, Unix và các hệ điều hành tương tự. Chức năng chính của nó là hiển thị thông tin về những người dùng hiện đang đăng nhập vào hệ thống. Thông tin này bao gồm:

  • Tên người dùng: Tài khoản mà người dùng đã sử dụng để đăng nhập.
  • Terminal: Thiết bị (ví dụ: /dev/tty1, /dev/pts/0) mà người dùng đang sử dụng.
  • Thời gian đăng nhập: Thời điểm người dùng bắt đầu phiên làm việc.
  • Địa chỉ IP (nếu đăng nhập từ xa): Địa chỉ IP của máy khách nếu người dùng đăng nhập qua SSH hoặc các giao thức mạng khác.

Vậy tại sao lệnh who lại quan trọng? Hãy tưởng tượng bạn là một quản trị viên hệ thống. Việc biết được ai đang truy cập hệ thống, khi nào họ đăng nhập và từ đâu là vô cùng quan trọng để:

  • Giám sát hoạt động hệ thống: Phát hiện các hoạt động bất thường hoặc truy cập trái phép.
  • Quản lý tài nguyên: Theo dõi ai đang sử dụng tài nguyên hệ thống để đảm bảo hiệu suất tối ưu.
  • Gỡ rối sự cố: Xác định người dùng có thể liên quan đến các vấn đề hệ thống.
  • Đảm bảo an ninh: Phát hiện và ngăn chặn các hành vi xâm nhập hoặc lạm dụng hệ thống.

Cú pháp cơ bản của lệnh who

Cú pháp cơ bản của lệnh who rất đơn giản:

who [tùy chọn] [tệp]

Trong đó:

  • who: Lệnh cần thực thi.
  • [tùy chọn]: Các tùy chọn điều chỉnh hành vi của lệnh (sẽ được đề cập chi tiết hơn ở phần sau).
  • [tệp]: Tệp chứa thông tin người dùng (thường là /var/run/utmp hoặc /var/log/wtmp). Nếu không chỉ định, lệnh who sẽ sử dụng /var/run/utmp.

Để xem thông tin về những người dùng hiện đang đăng nhập, bạn chỉ cần gõ lệnh who và nhấn Enter:

who

Kết quả sẽ hiển thị danh sách người dùng, terminal, thời gian đăng nhập và địa chỉ IP (nếu có) trên màn hình.

Các tùy chọn hữu ích của lệnh who

Lệnh who cung cấp một số tùy chọn giúp bạn tùy chỉnh kết quả hiển thị và thu thập thông tin chi tiết hơn. Dưới đây là một số tùy chọn phổ biến và hữu ích nhất:

  • -a hoặc --all: Hiển thị tất cả thông tin, bao gồm thời gian khởi động hệ thống, tiến trình đã tạo, và các trạng thái khác.
  • -b hoặc --boot: Hiển thị thời gian khởi động hệ thống cuối cùng.
  • -d hoặc --dead: Hiển thị các tiến trình "chết" (không hoạt động).
  • -H hoặc --heading: Hiển thị tiêu đề cột.
  • -l hoặc --login: Hiển thị các tiến trình đăng nhập.
  • -m: Chỉ hiển thị thông tin về người dùng đang chạy lệnh who.
  • -q hoặc --count: Hiển thị số lượng người dùng đang đăng nhập.
  • -r hoặc --runlevel: Hiển thị runlevel hiện tại của hệ thống.
  • -s: Chỉ hiển thị tên người dùng, terminal và thời gian đăng nhập.
  • -t hoặc --time: Hiển thị thời gian thay đổi hệ thống cuối cùng.
  • -u hoặc --idle: Hiển thị thời gian nhàn rỗi (idle time) của mỗi người dùng.
  • --message: Hiển thị tin nhắn gửi đến người dùng.
  • --writable: Liệt kê các terminal có thể ghi được bởi người dùng khác.

Ví dụ thực tế sử dụng lệnh who

Để hiểu rõ hơn về cách sử dụng lệnh who, hãy cùng xem xét một vài ví dụ thực tế:

  1. Hiển thị tất cả thông tin:
    who -a
    Lệnh này sẽ hiển thị tất cả thông tin có sẵn về người dùng, thời gian khởi động hệ thống, tiến trình đã tạo, và các trạng thái khác.
  2. Hiển thị thời gian khởi động hệ thống:
    who -b
    Lệnh này sẽ cho bạn biết thời điểm hệ thống được khởi động lần cuối.
  3. Hiển thị số lượng người dùng đang đăng nhập:
    who -q
    Lệnh này sẽ hiển thị một dòng duy nhất cho biết số lượng người dùng đang đăng nhập vào hệ thống.
  4. Hiển thị thời gian nhàn rỗi của người dùng:
    who -u
    Lệnh này sẽ hiển thị thời gian mà người dùng không hoạt động (tính bằng phút). Dấu "." ở cột "idle" có nghĩa là người dùng đang hoạt động.
  5. Hiển thị tiêu đề cột:
    who -H
    Lệnh này sẽ hiển thị tiêu đề cho các cột thông tin, giúp bạn dễ dàng đọc và hiểu kết quả hơn.

So sánh lệnh who, w, và users

Mặc dù có chức năng tương tự nhau, lệnh who, w, và users có những điểm khác biệt nhất định. Dưới đây là bảng so sánh chi tiết:

Lệnh Mô tả Thông tin hiển thị
who Hiển thị thông tin về người dùng đang đăng nhập. Tên người dùng, terminal, thời gian đăng nhập, địa chỉ IP (nếu có).
w Hiển thị thông tin về người dùng đang đăng nhập và các tiến trình họ đang chạy. Tên người dùng, terminal, thời gian đăng nhập, thời gian nhàn rỗi, CPU sử dụng, và các tiến trình đang chạy.
users Hiển thị danh sách tên người dùng đang đăng nhập. Chỉ hiển thị tên người dùng, mỗi người dùng chỉ xuất hiện một lần.

Như vậy, tùy thuộc vào nhu cầu cụ thể, bạn có thể lựa chọn lệnh phù hợp để thu thập thông tin cần thiết.

Ứng dụng thực tế: Giám sát hệ thống và phát hiện truy cập trái phép

Lệnh who có thể được sử dụng trong nhiều tình huống thực tế để giám sát hệ thống và phát hiện truy cập trái phép. Ví dụ:

  • Kiểm tra xem có ai đang sử dụng tài khoản của bạn khi bạn không có mặt: Nếu bạn nghi ngờ ai đó đang sử dụng tài khoản của bạn, bạn có thể sử dụng lệnh who để kiểm tra xem có ai đang đăng nhập vào hệ thống với tài khoản của bạn hay không.
  • Phát hiện truy cập trái phép vào máy chủ: Quản trị viên hệ thống có thể sử dụng lệnh who để theo dõi ai đang đăng nhập vào máy chủ và từ đâu. Nếu phát hiện bất kỳ hoạt động đáng ngờ nào, họ có thể thực hiện các biện pháp cần thiết để bảo vệ hệ thống.
  • Theo dõi việc sử dụng tài nguyên hệ thống: Lệnh who có thể giúp bạn xác định ai đang sử dụng nhiều tài nguyên hệ thống, từ đó giúp bạn quản lý tài nguyên một cách hiệu quả hơn.

FAQ (Câu hỏi thường gặp)

  1. Lệnh who lấy thông tin từ đâu?

    Lệnh who lấy thông tin từ các tệp như /var/run/utmp và /var/log/wtmp. Tệp /var/run/utmp chứa thông tin về người dùng hiện đang đăng nhập, trong khi /var/log/wtmp chứa lịch sử đăng nhập và đăng xuất.

  2. Làm thế nào để biết địa chỉ IP của người dùng đăng nhập từ xa?

    Địa chỉ IP của người dùng đăng nhập từ xa sẽ được hiển thị trong cột cuối cùng của đầu ra lệnh who, nếu có.

  3. Tại sao tôi không thấy thông tin của mình khi chạy lệnh who?

    Điều này có thể xảy ra nếu bạn không đăng nhập vào hệ thống thông qua một terminal (ví dụ: bạn đang chạy một ứng dụng đồ họa mà không đăng nhập). Hoặc có thể có vấn đề với các tệp /var/run/utmp hoặc /var/log/wtmp.

  4. Làm thế nào để xem lịch sử đăng nhập của người dùng?

    Bạn có thể sử dụng lệnh last để xem lịch sử đăng nhập của người dùng. Lệnh last đọc thông tin từ tệp /var/log/wtmp và hiển thị danh sách các lần đăng nhập và đăng xuất.

  5. Có cách nào để chặn người dùng đăng nhập vào hệ thống không?

    Có, bạn có thể sử dụng lệnh passwd -l để khóa tài khoản của người dùng. Điều này sẽ ngăn người dùng đăng nhập vào hệ thống cho đến khi tài khoản được mở khóa bằng lệnh passwd -u .

Kết luận

Lệnh who là một công cụ nhỏ gọn nhưng mạnh mẽ, cung cấp thông tin quan trọng về người dùng đang sử dụng hệ thống Linux của bạn. Bằng cách nắm vững cú pháp, các tùy chọn và ứng dụng thực tế của lệnh who, bạn có thể giám sát hệ thống một cách hiệu quả, phát hiện truy cập trái phép và quản lý tài nguyên hệ thống tốt hơn. Hy vọng bài viết này đã cung cấp cho bạn những kiến thức hữu ích để làm chủ công cụ này và nâng cao khả năng quản lý hệ thống Linux của mình.

Last Updated : 21/08/2025