Lệnh who trong linux

Lệnh Who trong Linux: Giải Mã Bí Mật Người Dùng Hệ Thống

Bạn đã bao giờ tò mò muốn biết ai đang sử dụng hệ thống Linux của mình chưa? Lệnh who chính là chìa khóa để mở cánh cửa này. Đây là một công cụ dòng lệnh đơn giản nhưng vô cùng hữu ích, cho phép bạn xem danh sách người dùng hiện đang đăng nhập, thông tin về phiên làm việc của họ, và nhiều chi tiết thú vị khác. Hãy cùng khám phá sức mạnh của lệnh who và cách nó có thể giúp bạn quản lý hệ thống Linux một cách hiệu quả.

Lệnh Who là gì?

Lệnh who là một tiện ích dòng lệnh trong hệ điều hành Linux và Unix, được sử dụng để 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, thiết bị đầu cuối (terminal) mà họ đang sử dụng, thời gian đăng nhập và địa chỉ IP (nếu đăng nhập từ xa).

Nói một cách đơn giản, who cho bạn biết "ai đang ở đó" và họ đang làm gì trên hệ thống của bạn. Đây là một công cụ quan trọng cho việc quản trị hệ thống, giúp bạn theo dõi hoạt động của người dùng và đảm bảo an ninh.

Cú pháp lệnh Who cơ bản

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

who [tùy chọn] [tệp]
  • who: Lệnh gọi chương trình who.
  • [tùy chọn]: Các tùy chọn để điều chỉnh đầu ra của lệnh. Chúng ta sẽ khám phá các tùy chọn phổ biến sau.
  • [tệp]: Tên của tệp chứa thông tin người dùng. Nếu không chỉ định, who sẽ sử dụng tệp /var/run/utmp theo mặc định.

Các tùy chọn phổ biến của lệnh Who

Lệnh who cung cấp nhiều tùy chọn để bạn có thể tùy chỉnh đầu ra và thu thập thông tin chi tiết hơn. Dưới đây là một số tùy chọn quan trọng nhất:

  • -a hoặc --all: Hiển thị tất cả thông tin, bao gồm thời gian đăng nhập, quá trình (processes) và các thông tin khác.
  • -b hoặc --boot: Hiển thị thời gian hệ thống khởi động lần cuối.
  • -d hoặc --dead: Hiển thị các tiến trình "chết" (dead processes).
  • -H hoặc --heading: Hiển thị dòng tiêu đề ở đầu danh sách.
  • -l hoặc --login: Hiển thị các tiến trình đăng nhập (login processes).
  • -m: Chỉ hiển thị thông tin về người dùng đang chạy lệnh who.
  • -q hoặc --count: Chỉ 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, dòng và thời gian. Đây là tùy chọn mặc định.
  • -T hoặc --mesg hoặc --message hoặc --writable: Thêm trạng thái tin nhắn (message status) cho mỗi người dù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.
  • --help: Hiển thị trợ giúp về lệnh who.
  • --version: Hiển thị thông tin phiên bản của lệnh who.

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

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

  1. Hiển thị danh sách người dùng đang đăng nhập:
    who
    Lệnh này sẽ hiển thị danh sách người dùng đang đăng nhập, cùng với tên thiết bị đầu cuối và thời gian đăng nhập.
  2. 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, bao gồm thời gian khởi động hệ thống, các tiến trình đang chạy và trạng thái của các thiết bị đầu cuối.
  3. Chỉ hiển thị số lượng người dùng đang đăng nhập:
    who -q
    Lệnh này sẽ chỉ hiển thị số lượng người dùng đang đăng nhập vào hệ thống.
  4. Hiển thị thời gian hệ thống khởi động:
    who -b
    Lệnh này sẽ hiển thị thời gian hệ thống khởi động lần cuối.
  5. Hiển thị thông tin về người dùng đang chạy lệnh:
    who -m
    Lệnh này sẽ chỉ hiển thị thông tin về bạn (người dùng đang chạy lệnh).

Ứng dụng thực tế của lệnh Who

Lệnh who không chỉ là một công cụ để xem ai đang đăng nhập. Nó còn có nhiều ứng dụng thực tế trong quản trị hệ thống và bảo mật:

  • Giám sát hoạt động người dùng: Quản trị viên hệ thống có thể sử dụng lệnh who để theo dõi ai đang sử dụng hệ thống, khi nào họ đăng nhập và họ đang làm gì.
  • Phát hiện truy cập trái phép: Nếu bạn thấy có người dùng lạ đăng nhập vào hệ thống của mình, đó có thể là dấu hiệu của một cuộc tấn công hoặc truy cập trái phép.
  • Gửi tin nhắn cho người dùng: Bạn có thể sử dụng lệnh write kết hợp với đầu ra của lệnh who để gửi tin nhắn trực tiếp đến một người dùng đang đăng nhập.
  • Kiểm tra trạng thái hệ thống: Lệnh who -b có thể giúp bạn xác định thời gian hệ thống khởi động lại, điều này hữu ích trong việc khắc phục sự cố.

Bảng so sánh lệnh Who với các lệnh liên quan

Lệnh Mô tả Thông tin chính
who Hiển thị người dùng đang đăng nhập Tên người dùng, thiết bị đầu cuối, thời gian đăng nhập
w Hiển thị người dùng đang đăng nhập và tiến trình họ đang chạy Tương tự who, cộng thêm thông tin về các tiến trình
users Hiển thị danh sách tên người dùng đang đăng nhập Chỉ tên người dùng
last Hiển thị lịch sử đăng nhập của người dùng Lịch sử đăng nhập và đăng xuất, bao gồm thời gian

Câu hỏi thường gặp (FAQ) về lệnh Who

  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, /var/log/wtmp và /var/log/btmp. Tệp /var/run/utmp chứa thông tin về người dùng hiện đang đăng nhập, /var/log/wtmp chứa lịch sử đăng nhập và đăng xuất, và /var/log/btmp chứa thông tin về các lần đăng nhập thất bại.

  2. Tại sao đôi khi tôi thấy những người dùng lạ trong danh sách who?

    Điều này có thể xảy ra nếu bạn sử dụng các chương trình như su hoặc sudo để chuyển đổi người dùng. Ngoài ra, nếu hệ thống của bạn bị xâm nhập, kẻ tấn công có thể đã tạo tài khoản người dùng ẩn.

  3. Làm thế nào để biết ai đã đăng nhập vào hệ thống của tôi trong quá khứ?

    Bạn có thể sử dụng lệnh last để xem lịch sử đăng nhập và đăng xuất của người dùng. Lệnh này sẽ hiển thị danh sách tất cả các lần đăng nhập và đăng xuất, cùng với thời gian và địa chỉ IP (nếu có).

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 hoạt động trên hệ thống Linux của bạn. Bằng cách nắm vững các tùy chọn và ứng dụng thực tế của lệnh này, bạn có thể quản lý hệ thống một cách hiệu quả hơn, đảm bảo an ninh và phát hiện sớm các vấn đề tiềm ẩn. Hãy thử nghiệm với lệnh who và khám phá những điều thú vị mà nó mang lại!

Last Updated : 20/08/2025