
Wenn ich in unserem Unternehmensnetzwerk finger
von einem Client-Rechner aus (ohne Argumente) starte, wird mir eine Liste von Benutzern mit Namen usw. angezeigt. Aber wenn ich es starte, finger @localhost
erhalte ich die Meldung „Verbindung abgelehnt“. Wohin stellt Finger also standardmäßig eine Verbindung her?
Antwort1
Laut strace finger
, auf meinem System erhält es die Liste der aktuellen Benutzer von
open("/var/run/utmp", O_RDONLY|O_CLOEXEC) = 4
und Details zu jedem durch stat
die Pty
stat("/dev//pts/0", {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0
wenn es ohne Argumente ausgeführt wird. Wenn Sie es mit ausführen @localhost
, versucht es, den fingerd
Daemon zu verwenden, und da es nicht mehr 1993 ist, läuft das nicht – daher das connection refused
.
BearbeitenWenn es mit einem Argument ausgeführt wird, das ein ist user
, statt @remote-system
, erhält es die Informationen aus demGECOS-Feldin /etc/passwd
und das Home-Verzeichnis (für Dateien wie ~/.plan
). Es hat keine Privilegien, daher benötigen Benutzer Home-Verzeichnisse und Plandateien, die sie lesen können, um z. B. die Plandatei anzuzeigen. Hier (ebenfalls von strace
) sehen Sie, wie versucht wird, einige dieser Dateien im Verzeichnis eines anderen Benutzers zu öffnen, was Modus 750 ist (und ich bin nicht in ihrer Gruppe):
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)