Linux

通過 sftp 登錄的使用者未顯示在 w

  • September 3, 2011

我的伺服器是 Centos 5。我在 sshd_config 中設置了一個 chroot 環境,其中包含以下內容

Match group sftponly
   ForceCommand internal-sftp
   ChrootDirectory %h
   AllowTcpForwarding no
   PasswordAuthentication yes
Match

當使用者通過 sftp 連接時,會在 /var/log/secure 中添加一行:

Sep  3 15:30:20 servername sshd[26548]: pam_unix(sshd:session): session opened for user test by (uid=0)

但是它們在執行時不存在w

[root@servername home]# w
15:30:47 up 156 days,  1:00,  3 users,  load average: 0.05, 0.18, 0.32
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
mike     pts/1    12.34.56.78      Fri16    0.00s  0.10s  0.03s sshd: mike [priv]

但是當使用者通過 SSH 連接時(如上面的使用者),他們就存在了。這是標準行為嗎?

man utmp:

utmp 文件允許人們發現有關誰目前正在使用系統的資訊。目前使用系統的使用者可能更多,因為並非所有程序都使用 utmp 日誌記錄。

因此,一定是在處理連接sshd時沒有添加 utmp 條目。scp看起來很正常,因為scp實例不是互動式會話。

ForceCommand也許可以使用or Subsystemin完成某些事情sshd_config:可以將處理程序的執行包裝在sftp登錄 shell 中。

(實際上我不建議這樣做,最好保持簡單並使用標準的日誌記錄工具。)

引用自:https://unix.stackexchange.com/questions/20070