.\"
.\"  chfn.1 -- change your finger information
.\"  (c) 1994 by salvatore valente <svalente@athena.mit.edu>
.\"
.\"  This program is free software.  You can redistribute it and
.\"  modify it under the terms of the GNU General Public License.
.\"  There is no warranty.
.\"
.TH CHFN 1 "November 2015" "util-linux" "User Commands"
.SH NAME
chfn \- change your finger information
.SH SYNOPSIS
.B chfn
.RB [ \-f
.IR full-name ]
.RB [ \-o
.IR office ]
.RB [ \-p
.IR office-phone ]
.RB [ \-h
.IR home-phone ]
.RB [ \-u ]
.RB [ \-v ]
.RI [ username ]
.SH DESCRIPTION
.B chfn
is used to change your finger information.  This information is
stored in the
.I /etc/passwd
file, and is displayed by the
.B finger
program.  The Linux
.B finger
command will display four pieces of information that can be changed by
.BR chfn :
your real name, your work room and phone, and your home phone.
.PP
Any of the four pieces of information can be specified on the command
line.  If no information is given on the command line,
.B chfn
enters interactive mode.
.PP
In interactive mode,
.B chfn
will prompt for each field.  At a prompt, you can enter the new information,
or just press return to leave the field unchanged.  Enter the keyword
"none" to make the field blank.
.PP
.B chfn
supports non-local entries (kerberos, LDAP, etc.\&) if linked with libuser,
otherwise use \fBypchfn\fR, \fBlchfn\fR or any other implementation for
non-local entries.
.SH OPTIONS
.TP
.BR \-f , " \-\-full\-name " \fIfull-name
Specify your real name.
.TP
.BR \-o , " \-\-office " \fIoffice
Specify your office room number.
.TP
.BR \-p , " \-\-office\-phone " \fIoffice-phone
Specify your office phone number.
.TP
.BR \-h , " \-\-home\-phone " \fIhome-phone
Specify your home phone number.
.TP
.BR \-u , " \-\-help"
Display help text and exit.
.TP
.BR \-v , " \-\-version"
Display version information and exit.
.SH CONFIG FILE ITEMS
.B chfn
reads the
.IR /etc\:/login.defs (5)
configuration file.  Note that the configuration file could be
distributed with another package (e.g. shadow-utils).  The following
configuration items are relevant for
.BR chfn (1):
.PP
.BI CHFN_RESTRICT " string"
.RS 4
Indicate which fields are changeable by \fBchfn\fR.

The boolean setting \fB"yes"\fR means that only the Office, Office Phone and
Home Phone fields are changeable, and boolean setting \fB"no"\fR means that
also the Full Name is changeable.

Another way to specify changeable fields is by abbreviations: f = Full Name,
r = Office (room), w = Office (work) Phone, h = Home Phone.  For example,
\fBCHFN_RESTRICT "wh"\fR allows changing work and home phone numbers.

If CHFN_RESTRICT is undefined, then all finger information is read-only.
This is the default.
.RE
.PP
.SH "EXIT STATUS"
Returns 0 if operation was successful, 1 if operation failed or command syntax was not valid.
.SH "SEE ALSO"
.BR chsh (1),
.BR finger (1),
.BR login.defs (5),
.BR passwd (5)
.SH AUTHOR
Salvatore Valente <svalente@mit.edu>
.SH AVAILABILITY
The chfn command is part of the util-linux package and is available from
https://www.kernel.org/pub/linux/utils/util-linux/.
