RFC742 lays out:
- TCP on port 79
- CRLF line termination
- Single request "line"
- Server sends data and closes connection as soon as done
- Empty command-line gives a default response ("who is on, etc")
- Some switches showing the relationship between finger and original whois
FreeBSD fingerd supports but we reject:
- Running external programs
- Various bits of system accounting information (last login, mail status, etc)
- Home directory, shell, office phone number, etc.
- Messaging status (via tty writeability, what a blast from the past;
talk
users might want this added back but it requires utmp parsing to determine where logged in, which is a lot of system-specific non-portable binary parsing, so we decline). - Forwarding connections to other hosts
- Comes because by default it just invokes the local finger(1) client
- Showing where email is forwarded to if
~/.forward
is present - Dropping a leading
*
from the GECOS field (but the source asks "why?") - Showing various extra pieces of information from GECOS assigning meanings to the comma-separated fields
FreeBSD fingerd supports and we preserve:
- Aliases in
/etc/finger.conf
of formaliasname:loginname
one-per-line - Splitting the line
" \t\r\n"
and fingering each in turn (RFC suggests as comma-separated); a blank line separates the output of each /W
turning on-l
mode for subsequent usernames- GECOS:
- Not yet supported: we only lookup by usercode and the alias-map, not by full-name, and we don't reveal the full-name, so we don't yet need GECOS support. But if we were to add it ...
- Split on
,
; we only take the first field, but we accept that it is a field - A
&
is replaced by the usercode
~/.nofinger
- These files, and captions, in order:
~/.project
"Project:"~/.plan
"Plan:" else "No Plan."~/.pubkey
"Public key:"
- If file contents short enough and no intermediate newlines, put on the same
line of output as the caption, with a space inbetween.
- Short enough: 80 - caption_length - 5; but caption without
:
, so:
and\r\n
are 4 characters, so constraining to 79 total.
- Short enough: 80 - caption_length - 5; but caption without
What we do:
- Empty command-line says "Finger service is available for some users."
- 8-bit clean and generally assume UTF-8; if the client can't handle that, it's their problem.
- Absence of the project/plan/pubkey files is equivalent to presence of the
~/.nofinger
file - By default, only users in
/home
are allowed, thus automatically rejecting "system" users. If passwd-usage is to be enabled, then the required command-line option is the one which sets a lower-bound on the uid to be used (and0
means "passwd off", so root can not be fingered). - Any invalid user, including nofinger users, should be reported as:
finger: fred: no such user
or thereabouts