CFINGERD.CONF(5)

🌸 CFINGERD.CONF πŸ’…

okay bestie, so this is the manual page for cfingerd.conf β€” the Configurable Finger Daemon config file, section 5 of the manuals. it lives at /etc/cfingerd.conf and it's basically the glow-up your finger daemon deserves. let's get into it 🫢


✨ NAME ✨

cfingerd.conf β€” the configuration file for the configurable finger daemon. periodt.


🌈 SYNOPSIS 🌈

/etc/cfingerd.conf

πŸ’– DESCRIPTION πŸ’–

cfingerd.conf is the config file for cfingerd. the whole thing got totally rewritten so the config file could be, like, actually readable. no cap. but heads up β€” this new version is NOT compatible with the older versions from 1.0.3 or below. not even a little bit. 😭

the config file is split into sections of three general types: FILES, CONFIG, and HOSTS.

each one of those sections is split into subsections, and we're gonna explain those next.

the subtext of each option is either a boolean option, a string option, or a switchable option β€” and the system administrator can change all of them.

each section is split into a series of sections that resembles a C type definition. not exact, but close enough that you'll be like "oh yeah I've seen this before" :) with one exception: these are not case sensitive. any casing will do, as long as the option is legal.

so each section is formatted like this:

OPTION section_name = {
  (tab/space) string_option = "string_format",
  (tab/space) +/-boolean_pair_option = [BOOL, BOOL],
  (tab/space) +/-internal_config_option
  (tab/space) host.name.here
}

so what's this telling us? string options are strings put into "quotes", boolean options are given as TRUE and FALSE, switchable options are given with the + or - directive, and hostnames are used as substrings β€” so wildcards are not necessary. iconic behavior honestly.

a few sections simply contain a block of text to be used as the value of a single option, and which option that is gets indicated by the section name itself.

you can add comments using the hash mark # at the beginning of the line. but please note: no comments are allowed inside of a section. πŸ’€


πŸŽ€ DISPLAY FILES SECTION (FILES display_files) πŸŽ€

every option here is a string option. the first 6 options are relative to the home directory of whatever user was fingered, and the rest are absolute and should start with a /.

  • PLAN β€” the optional plan file that holds the text shown as the user's plan. default is .plan.
  • PROJECT β€” the optional project file used when showing a project description. standard here is .project.
  • PGP_KEY β€” the optional "Pretty-Good-Privacy" file that gets shown when displaying a public or private key. standard here is .pgpkey.
  • XFACE β€” the optional file that shows the user's face. (this is commonly used in E-Mail messages, iykyk.) standard here is .xface.
  • NO_FINGER β€” the optional file that's shown when a user wants to stay anonymous. this is usually the case with root users (which should be standard anyway, fr). to hide the user, this file should be an exact copy of the nouser_banner.txt file. standard here is .nofinger. this file can only be a standard displayable file. this option will also hide the user from a search.pattern query. if any user can read this file it will also be honored by a userlist (@host) query. this is done by a non-privileged program so the uid can't be changed.
  • USERLOG β€” the optional file where all attempts to finger a user get logged, for the users own reference. if ALLOW_USERLOG is not enabled, this file is completely ignored. if ONLY_CREATE_FINGERLOG_IF_FILE_EXISTS is enabled, cfingerd will only document finger requests if this file already exists in the users home directory. default name is .fingerlog.
  • MAILBOX β€” the file that gets checked to see where the user's mailbox is. if you're using a regular Unix mail transport agent (like sendmail(1), smail(1) or exim(1)), you would use /usr/spool/mail/$USER here. if you're using something like qmail, you would use $HOME/Mailbox. the path must be given as well as the filename to check for. $USER will expand to the proper username. $HOME will expand to the proper home directory for that very user. if MAILBOX is set to "QMAIL", cfingerd assumes that Qmail is used on the local system and therefore will read ~/.qmail files instead of common mailbox files.
  • LOGFILE β€” the file used to keep logs of everything that happens to your finger program. these logs are kept as backups for your finger file, and can be used to guard against attacks against your system if a finger attack occurs. by keeping cfingerd.conf readable only by root, the logfile should be kept in a safe, hidden place. πŸ”’
  • HEADER_DISPLAY β€” the file displayed at the top of each finger reply. standard here is /etc/cfingerd/top_finger.txt.
  • FOOTER_DISPLAY β€” the file displayed at the end of each finger reply. standard here is /etc/cfingerd/bottom_finger.txt.
  • NO_USER_BANNER β€” the file displayed if the user doesn't exist. standard here is /etc/cfingerd/nouser_banner.txt.
  • NO_NAME_BANNER β€” the file displayed if no name was specified in a finger request and a system listing is not allowed by the SYSTEM_LIST option (explained later). standard here is /etc/cfingerd/noname_banner.txt.
  • REJECTED_BANNER β€” the file displayed if a rejected host tries to finger your system for any reason. standard here is /etc/cfingerd/rejected_banner.txt.

πŸ¦‹ FINGER DISPLAY CONFIGURE SECTION (CONFIG finger_display) πŸ¦‹

every option in this section is boolean. here's how it works: the first boolean option is the setting for a remote host, aka a host that fingers you from the outside. the second boolean option is the setting for the local host, aka a trusted host. that's what people from your own system will see.

TRUE means this item is included in the cfingerd reply. FALSE means it's omitted. unless otherwise specified, these items only appear if an existing user is fingered.

each option has a - or + option. this is for user-overridable options, which are coming in the next release of cfingerd. these will let each user manipulate whether this information is displayed when that specific user is fingered. πŸ‘‘

  • HEADER_FILE β€” displays the header file at the beginning of each finger reply.
  • FOOTER_FILE β€” displays the footer file at the end of each finger reply.
  • LOGIN_ID β€” displays the login ID of that particular user.
  • REAL_NAME β€” displays the real name of that particular user.
  • DIRECTORY β€” displays the user's directory.
  • SHELL β€” displays the user's shell.
  • ROOM_NUMBER β€” displays the user's room number.
  • WORK_NUMBER β€” displays the user's work phone number.
  • HOME_NUMBER β€” displays the user's home phone number.
  • OTHER β€” displays the user's other information.
  • LAST_TIME_ON β€” displays the last time the user has logged into the fingered system.
  • IF_ONLINE β€” displays whether or not the user is currently logged into the fingered system.
  • TIME_MAIL_READ β€” displays the last time that the fingered user has read mail.
  • DAY_MAIL_READ β€” displays the last day that the fingered user read his/her mail.
  • ORIGINATION β€” displays the site from which the user logged in (if applicable).
  • PLAN β€” displays the user's plan file.
  • PROJECT β€” displays the user's project file.
  • PGP β€” displays the user's Pretty-Good-Privacy key file.
  • XFACE β€” displays the user's XFACE file.
  • NO_NAME_BANNER β€” displays the banner if no username was given.
  • REJECTED_BANNER β€” displays the rejected banner file if the site fingering your system was in the banned-site listing.
  • SYSTEM_LIST β€” displays the system list if one was requested.
  • NO_NAME β€” displays the NO_USER_BANNER file if no user was selected.

okay that's the first chunk bestie, and there's more coming β€” don't go anywhere πŸ’œ

✨ INTERNAL CONFIG SECTION (CONFIG internal_config) ✨

ok bestie, this section is all toggles. every single item here is a switchable option, which means it's giving on/off energy:

  • a + in front of the item = it's ON, enabled, living its best life πŸ’–
  • a - in front of the item = it's OFF, disabled, not invited to the party

periodt. that's the whole rule.


  • ALLOW_MULTIPLE_FINGER_DISPLAY β€” tells cfingerd to also pull in the system finger info from the hosts you listed in system_list_sites, not just from localhost. literally so useful when you've got more than one ISP machine, like they're in different cities, or even different states. long distance besties πŸ¦‹
  • ALLOW_SEARCHABLE_FINGER β€” lets people outside your system (or inside it, whatever) search for a specific username using the "search.pattern" directive. detective mode activated πŸ”
  • ALLOW_NO_IP_MATCH_FINGER β€” lets sites finger your system even if their hostname couldn't be successfully matched to their IP address. sometimes the vibe check fails but you let them in anyway 🫢
  • ALLOW_USER_OVERRIDE β€” would let your users override specific options in the FINGER DISPLAY section that you've enabled. > heads up: this is not yet implemented. it's giving "coming soon" but the soon is never 😭
  • ALLOW_USERLIST_ONLY β€” lets other sites get a shortened version of the "finger @hostname" response by doing "finger userlist-only@hostname". the short version does not merge in other computers (even if ALLOW_MULTIPLE_FINGER_DISPLAY is on), and it skips the usual headers and footers. this listing only works if the remote user is allowed to query for a regular system list, so SYSTEM_LIST in the finger_display section has to be enabled too. iykyk πŸ’…
  • ALLOW_FINGER_FORWARDING β€” lets other sites forward finger requests to a different machine if the user couldn't be found on the current machine. > bestie, to use this you MUST have the HOSTS finger_forward option set, and have other sites in there. no sites = no forwarding, simple as.
  • ALLOW_STRICT_FORMATTING β€” makes the finger display strip out all the returns between display options. this makes your finger display look horrible (like GNU Finger or the other generic fingers do) and makes your system look, well, "generic". :) πŸ’€
  • ALLOW_VERBOSE_TIMESTAMPING β€” makes the timestamp shown (anywhere) super verbose. so where it used to say:
On since Sat Aug 12 03:43PM (PDT)

it would now show up as:

On since Sat Aug 12, 1995 03:43PM (PDT)

(basically, ALLOW_VERBOSE_TIMESTAMPING just eats up more room on the display field. it's giving "needs a bigger bag" πŸŽ€)

  • ALLOW_NONIDENT_ACCESS β€” lets cfingerd also accept connections from sites that don't run the IDENT daemon (or any RFC1413-compliant program). this exists for security's sake, and it's a good measure against unknown users trying to finger your system. if this option is enabled, users who don't have identd running on their system (ala Windows users) will be able to finger your system. systems NOT running identd will return "unknown" as the user ID, and will thusly not be permitted to finger a user on your system.
  • ALLOW_FINGER_LOGGING β€” enables cfingerd to use the LOGFILE file to store any logs of activity that happen to your system via finger. receipts, always keep receipts 🧾
  • ALLOW_LINE_PARSING β€” makes cfingerd parse each line of every display file (including the plan, project, and pgp files) looking for any cfingerd-specific "$" commands. if it finds any, cfingerd parses those commands and displays the correct information accordingly. otherwise, if this is turned off, the display just shows up without any parsed commands.
  • ALLOW_EXECUTION β€” lets users execute scripts in place of their .plan, .project, and .pgp files. this is used to display the standard output of another program straight to the screen of the user who's fingering. > 🚨 bestie, listen to me: this is a HUGE security risk if you choose to use it. it's normally suggested that this stays off, but you can turn it on if you absolutely need to. nevertheless, these programs are called as nobody.nogroup as the effective user (while the real user will still be root, but a called program won't be able to change this back). proceed with caution, fr fr 🚨
  • ALLOW_FAKEUSER_FINGER β€” turns the fake user option in cfingerd on or off. if you want fake users defined and available to be fingered, you'll want to enable this. > this can be a security risk in some instances β€” if you allow searchable fingers, and your script calls an execute routine on that variable… but chances are, that'll never happen. πŸ™ˆ
  • ALLOW_USERLOG β€” lets users keep track of who has fingered them, and at what time. the default name of this user logfile is .fingerlog. πŸ‘€
  • ALLOW_CONFESSION β€” enables two fakeusers, "help" and "version", that hand out information about the system that's running. some people don't like that, so you can turn it off. when fingered, the requestor will only see the NO_USER_BANNER so they can't guess that the fakeuser is even supported. sneaky, love that for you 🀫
  • ONLY_SHOW_HEADERS_IF_FILE_EXISTS β€” only shows the header of the .plan, .project, etc. files if they actually exist. if the file doesn't exist, the header won't be shown. this saves space on the final output of the finger data. decluttered, minimal, clean ✨
  • ONLY_CREATE_FINGERLOG_IF_FILE_EXISTS β€” only creates a .fingerlog file in the fingered user's home directory if one already exists (and is read/writable by the user). this is to cut down on hard drive space if they don't want a .fingerlog file. she's frugal πŸ’…

🌸 SYSTEM LIST SITES SECTION (CONFIG system_list_sites) 🌸

this is literally just a series of hostnames that you want to finger when someone does a userlist query (finger @localhost). if you've got more than one system you want to show, just drop their hostnames in this list, separated onto a line by itself.

a good example of how this works: say you've got a separate ISP system you're running on the side, like "chatlink.com", then you'd change your configuration to say:

CONFIG system_list_sites = {
        chatlink.com,
        localhost
}

ok so remember, if you're listing only a couple of sites, list the sites you want listed first, in order. these sites are required to run cfingerd as well, and they must not be offline while fingering. the ending entry MUST be the localhost, or the finger listing will not include your site. if you put localhost anywhere else in the list, it'll stop once it reaches the localhost entry, so remember to list it last! 🚨

for the simple fact that i want to get a user listing from my own machine, and from chatlink.com's system β€” this would be automatically formatted nicely (ie. sorted and parsed) and would display on the screen in sorted order. this program is usually used in tandem with the supplied userlist(1) program. 🫢

if no system list sites are specified, multiple system sites will not be specified.


πŸ‘‘ TRUSTED HOST SECTION (HOSTS trusted) πŸ‘‘

this is a listing of the sites you allow to finger your system exclusively, giving them the same access your local users get. in other words, they're treated as "localhost" users. VIP list only πŸ’…

each site you list in this section should be separated with the "," character. you can include up to 80 sites in this listing.

wildcards are supported in this section, and you can use them in the regex format as well. any wildcards with "*", "?", or any other regex wildcard matching character will work. IP addresses will also work. hostnames are compared case insensitive. ✨


πŸ’€ REJECTED HOST SECTION (HOSTS rejected) πŸ’€

this is a listing of the sites you do not allow to finger your system. these sites don't get to finger anyone (or anything, for that matter) on your system, no matter what they try to do. in essence, finger is cut off to those particular systems. blocked. blocked. blocked. 🚫

each site you list in this section should be separated with the "," character. you can include up to 80 sites in this listing.

wildcards are supported in this section, and you can use them in the regex format as well. any wildcards with "*", "?", or any other regex wildcard matching character will work. IP addresses will also work. hostnames are compared case insensitive.


πŸ¦‹ FORWARDED HOST SECTION (HOSTS finger_forward) πŸ¦‹

this is a listing of sites used to forward a finger query to when a finger request was processed but that particular user was not found on the associated system. it'll step through this listing and search for the user in question. if the user couldn't be found, it steps through to the next host, and the next, until it finds one. she's persistent πŸ’–

each site you list in this section should be separated with the "," character. you can include up to 80 sites in this listing.

wildcards are supported in this section, and you can use them in the regex format as well. any wildcards with "*", "?", or any other regex wildcard matching character will work. hostnames are compared case insensitive.

if you don't specify any forwarding sites in this section, finger forwarding will be disabled for your system.


πŸŽ€ FINGER STRINGS SECTION (CONFIG finger_strings) πŸŽ€

every option in this section is a string you can change to fit your needs when displaying finger info. these strings are limited to about 20 characters on the display. (if you use more than 20, the finger display ends up looking strange. keep it cute, keep it short πŸŽ€)

  • USER_NAME β€” the string shown when the user's username is displayed.
  • REAL_NAME β€” the string shown when the user's real name is displayed.
  • DIRECTORY β€” the string shown when the user's directory is displayed.
  • SHELL β€” the string shown when the user's shell is displayed.
  • ROOM_NUMBER β€” the string shown when the user's room number is displayed.
  • WORK_NUMBER β€” the string shown when the user's work phone number is displayed.
  • HOME_NUMBER β€” the string shown when the user's home phone number is displayed.
  • OTHER β€” the string shown when the user's other display information is shown.
  • PLAN β€” the string shown when the user's plan is displayed.
  • PROJECT β€” the string shown when the user's project is displayed.
  • PGPKEY β€” the string shown when the user's PGP Key is displayed.
  • XFACE β€” the string shown when the user's XFACE file is displayed.
  • NO_PLAN β€” the string shown if the user doesn't have a plan file to show you and ONLY_SHOW_HEADERS_IF_FILE_EXISTS is not enabled.
  • NO_PROJECT β€” the string shown if the user doesn't have a project file to show you and ONLY_SHOW_HEADERS_IF_FILE_EXISTS is not enabled.
  • NO_PGP β€” the string shown if the user doesn't have a PGP Key file to show you and ONLY_SHOW_HEADERS_IF_FILE_EXISTS is not enabled.
  • NO_XFACE β€” the string shown if the user doesn't have an xface file to show you and ONLY_SHOW_HEADERS_IF_FILE_EXISTS is not enabled.
  • WAIT β€” the string shown when the system gathers information from other sites for a user listing. (the loading screen of finger, basically ✨)

These strings are changeable β€” like, any length you want (within reason, bestie, don't go feral). They get concattenated into the syslogging display whenever the right finger gets issued. ✨ And yeah, this section also holds the error messages that might pop off. πŸ’…

  • NO_IP_HOST β€” shown when there's literally no hostname matching the incoming IP address. Which usually means either the site never registered their IP with the InterNIC, or 🫒 they're coming at you from a hacked site.
  • RENICE_FATAL β€” shown when the system failed to change the execution priority on the current process of cfingerd. πŸ’€
  • STDIN_EMPTY β€” shown when the input buffer on the CFINGERD port is empty. (This should never really happen; it's just here for sanity. πŸ™ˆ)
  • TRUSTED_HOST β€” shown when a trusted host fingers your system. If you don't specify a trusted host, cfingerd will insert "localhost" into this field.
  • REJECTED_HOST β€” shown when a rejected host fingers your system. If you don't specify a rejected host, cfingerd will insert "0.0.0.0" into this field.
  • ROOT_FINGER β€” shown when a user fingers root. πŸ‘‘
  • SERVICE_FINGER β€” shown when a user requests fake user services from your system.
  • USER_LIST β€” shown when a user requests a system user listing from your system.
  • FAKE_USER β€” shown when a user fingers a fake user from your system.
  • WHOIS_USER β€” shown when a user fingers a user with a "WHOIS" query. (This option is not yet available at the time of this writing. πŸ•°οΈ)
  • FINGER_DENY β€” shown when a user tries to finger with a forward request like user@host1@host2. This is not supported, because it could result in finger loops and a whole lot of traffic. 😭

🚨 SIGNAL STRINGS CONFIGURE SECTION (CONFIG signal_strings)

This section is for changing the output that gets given when a system crashes, or when a signal is caught and reported to the finger output. πŸ’₯

The supported caught signals are as follows, and yes, all of them:

SIGHUP, SIGINT, SIGQUIT, SIGILL, SIGTRAP, SIGABRT, SIGFPE, SIGUSR1,
SIGSEGV, SIGUSR2, SIGPIPE, SIGALRM, SIGTERM, SIGCONT, SIGTSTP, SIGTTIN,
SIGTTOU, SIGIO, SIGXCPU, SIGXFSZ, SIGVTALRM, SIGPROF, SIGWINCH

🧚 FINGER PROGRAMS FILES SECTION (FILES finger_programs)

These are the programs that get called when a specific action is taken on the finger display. Programs! Doing things! When you poke them!

  • FINGER β€” the file used when a system user listing is requested from your machine. This one gets used in the standard user list and in the sorted user list, so it's wise to use the standard here; this being /usr/sbin/userlist. ✨
  • WHOIS β€” the program used when a "whois" request is done on a specific user. This is currently not used. 🫠

🌈 FINGER FAKEUSERS FILES SECTION (FILES finger_fakeusers)

These are the ever-popular fake users you can create on your system. πŸŽ€ These users don't exist (and shouldn't, for that matter β€” fr fr, do not let them exist). Instead they're treated as normal scripts that can be called for your use.

The format is as follows for fake users:

"fake_username", "Script name", SEARCHBOOL, "script"

where…

  • fake_username is the name of the fake user you want to request. Make sure this is a user that DOES NOT exist on your system. Keep in mind that if you create a fake username and that user already exists, the fake username will be shown. If you prepend - before the username, the fake user will not be shown on the list of services. πŸ’…
  • Script name is the standard name of your script. This is used in the display of your services listing.
  • SEARCHBOOL specifies whether or not parameters can be sent to that specific fake user. If you decide to use the SEARCHBOOL option (ie. TRUE in this case), the passed variables are:
    • $1 β€” First passed option,
    • $2 β€” Second passed option,
    • $3 β€” Third passed option, and
    • $4 β€” Fourth passed option.
If more than four options were passed to this, the request will be ignored, and an error message will be returned to the user that requested the finger request. 😬
  • script is the location of your script. It should be chmod 700 and readable only by root. πŸ”’

If you do not specify any fake users, a fake user called "None" will be created. This is a fake user that does nothing, and calls "/dev/null" for the script. Iconic, honestly. πŸ’€


πŸ‘‘ SERVICES HEADER CONFIGURE SECTION (CONFIG services_header)

This is the display that's given during a services finger. It should be formatted the same way that you want it to display on the screen. ✨

When specifying the finger formatted options, you should specify them as C formatted strings as well, with the standard options. This should always be given last in the display.

An example of this would be:

          Welcome to this system's services!

        User:     Service name:     Searchable:
      -------- -------------------- -----------
      %-8s %-20s %-s

Where this would display the above string. Remember to keep the format string last, or a SIGSEGV will result. 🚨 No cap, that's the rule.


πŸ’– SERVICES POSITIONS CONFIGURE SECTION (CONFIG services_positions)

This specifies where in the above display string that the information from a service listing is to go. These numbers can be anywhere between 1 and 3.

  • USER β€” specifies the position of the username listing.
  • SERVICE β€” specifies the position of the service full-name listing.
  • SEARCH β€” specifies the position of the boolean search display.

🫢 CONTACTING

If you like the software, and you want to learn more about the software, or want to see a feature added to it that isn't already here, then please write to cfingerd@infodrom.north.de. The project's webpage is at http://www.infodrom.north.de/cfingerd/. 🌐

As always, I appreciate any suggestions, or bug reports you may have, so if you have suggestions or bug reports, BRING 'EM ON! :) πŸŽ‰


🌸 SEE ALSO

cfingerd(8), cfingerd.text(5), userlist(1), finger(1), regex(3), regexp(3).


And that's a wrap on the whole page, bestie!! πŸŽ€ This one was version 1.4.2, dated 19 Dec 1998, and it's the CFINGERD.CONF(5) manual β€” go forth and configure with main character energy. πŸ’…βœ¨πŸ¦‹