'finger' is a protocol, it's an old protocol!

It basically does one thing. It reads a .plan file, which is...

plain text, basically.

You run the finger command like this: 'finger username@domain' -- similar to email.

It then shows you:

  • The user

  • home directory of user

  • users name

  • users plan, a custom string, basically a small /now page.

  • users shell (ex. /usr/bin/fish)

And i set up my own! Using efingerd.

Now, normally fingerd (the standard finger daemon) reads from /etc/passwd and utmp/wtmp - a set of files tracking current live sessions.

By doing that it exposes every user logged in, which isnt very secure.

efingerd lets you make a FAKE file where its all just.. custom!

Really, the thing it reads from is basically a bash script.

I set it up on my raspberry pi.

It was fairly easy, all i needed to do is open up port 79 on my router and then write to /etc/efingerd/nouser :

#!/bin/sh

QUERIED="$3"

if [ "$QUERIED" = "sophie" ]; then

  cat <<'EOF'

Login: sophie                       Name: Zofia Szweda

Directory: /home/sophie             Shell: /usr/bin/fish

Plan:

trying to learn golang to make cli tools (for a great good!)

fucking with my raspberry pi 0 2 w

living life

EOF

else

  echo "finger: $QUERIED: no such user."

fi

Now running finger on sophie@sophii.xyz returns:1

Login: sophie                       Name: Zofia Szweda

Directory: /home/sophie             Shell: /usr/bin/fish

Plan:

trying to learn golang to make cli tools (for a great good!)

fucking with my raspberry pi 0 2 w

living life

Pretty cool!