在我们的公司网络中,当我finger
从客户端机器运行(无参数)时,我会看到一个包含姓名等的用户列表。但是当我运行时,finger @localhost
我得到“连接被拒绝”。那么手指默认连接到哪里呢?
Mad*_*ter 13
根据strace finger
,在我的系统上,它从以下位置获取当前用户列表
open("/var/run/utmp", O_RDONLY|O_CLOEXEC) = 4
Run Code Online (Sandbox Code Playgroud)
和每个人的详细信息通过stat
ing 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)