手指默认连接到哪里?

Pau*_*aul 9 linux defaults

在我们的公司网络中,当我finger从客户端机器运行(无参数)时,我会看到一个包含姓名等的用户列表。但是当我运行时,finger @localhost我得到“连接被拒绝”。那么手指默认连接到哪里呢?

Mad*_*ter 13

根据strace finger,在我的系统上,它从以下位置获取当前用户列表

open("/var/run/utmp", O_RDONLY|O_CLOEXEC) = 4
Run Code Online (Sandbox Code Playgroud)

和每个人的详细信息通过stating pty

stat("/dev//pts/0", {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
Run Code Online (Sandbox Code Playgroud)

不带参数运行时。当您使用 运行它时@localhost,它会尝试使用fingerd守护程序,并且由于它不再是 1993 年,因此它没有运行 - 因此connection refused.

编辑时与作为一个参数运行user,而不是@remote-system,它就会从信息GECOS字段/etc/passwd和主目录(例如文件~/.plan)。它没有特权,因此用户需要您可以读取的主目录和计划文件,以便显示例如计划文件。在这里(也来自strace),您看到它尝试在另一个用户的目录中打开其中一些文件,也就是模式 750(我不在她的组中),但都失败了:

lstat("/home/cby/.pgpkey", 0x7fff52fcec60) = -1 EACCES (Permission denied)
lstat("/home/cby/.project", 0x7fff52fcec60) = -1 EACCES (Permission denied)
lstat("/home/cby/.plan", 0x7fff52fcec60) = -1 EACCES (Permission denied)
Run Code Online (Sandbox Code Playgroud)