passwd — Change password or password attributes
passwd
[-S] | {
[ -l | -u ]
[ -c | -C ]
[ -e | -E ]
[ -p | -P ]
} [-d SERVER
] [USER
]
passwd
-R
passwd
-i NUM
| -n MINDAYS
| -x MAXDAYS
| -L LEN
passwd
-h | -V
User operations: -l, --lock lock USER's account. -u, --unlock unlock USER's account. -c, --cannot-change USER can't change password. -C, --can-change USER can change password. -e, --never-expires USER's password never expires. -E, --expires USER's password expires according to system's password aging rule. -p, --pwd-not-required no password required for USER. -P, --pwd-required password is required for USER. -R, --reg-store-pwd enter password to store it in the registry for later usage by services to be able to switch to this user context with network credentials. System operations: -i, --inactive NUM set NUM of days before inactive accounts are disabled (inactive accounts are those with expired passwords). -n, --minage MINDAYS set system minimum password age to MINDAYS days. -x, --maxage MAXDAYS set system maximum password age to MAXDAYS days. -L, --length LEN set system minimum password length to LEN. Other options: -d, --logonserver SERVER connect to SERVER (e.g. domain controller). Usually not required. -S, --status display password status for USER (locked, expired, etc.) plus global system password settings. -h, --help output usage information and exit. -V, --version output version information and exit. If no option is given, change USER's password. If no user name is given, operate on current user. System operations must not be mixed with user operations. Don't specify a USER when triggering a system operation. Don't specify a user or any other option together with the -R option. Non-Admin users can only store their password if cygserver is running. Note that storing even obfuscated passwords in the registry is not overly secure. Use this feature only if the machine is adequately locked down. Don't use this feature if you don't need network access within a remote session. You can delete your stored password by using `passwd -R' and specifying an empty password.
passwd changes passwords for user accounts. A normal user may only change the password for their own account, but administrators may change passwords on any account. passwd also changes account information, such as password expiry dates and intervals.
For password changes, the user is first prompted for their old password, if one is present. This password is then encrypted and compared against the stored password. The user has only one chance to enter the correct password. The administrators are permitted to bypass this step so that forgotten passwords may be changed.
The user is then prompted for a replacement password. passwd will prompt twice for this replacement and compare the second entry against the first. Both entries are required to match in order for the password to be changed.
After the password has been entered, password aging information is checked to see if the user is permitted to change their password at this time. If not, passwd refuses to change the password and exits.
To get current password status information, use the
-S
option. Administrators can use
passwd to perform several account maintenance
functions (users may perform some of these functions on their own
accounts). Accounts may be locked with the -l
flag and
unlocked with the -u
flag. Similarly,
-c
disables a user's ability to change passwords, and
-C
allows a user to change passwords. For password
expiry, the -e
option disables expiration, while the
-E
option causes the password to expire according to
the system's normal aging rules. Use -p
to disable the
password requirement for a user, or -P
to require a
password.
Administrators can also use passwd to change
system-wide password expiry and length requirements with the
-i
, -n
, -x
, and
-L
options. The -i
option is used
to disable an account after the password has been expired for a number of
days. After a user account has had an expired password for
NUM days, the user may no longer sign on to the
account. The -n
option is used to set the minimum
number of days before a password may be changed. The user will not be
permitted to change the password until MINDAYS days
have elapsed. The -x
option is used to set the maximum
number of days a password remains valid. After
MAXDAYS days, the password is required to be
changed. Allowed values for the above options are 0 to 999. The
-L
option sets the minimum length of allowed passwords
for users who don't belong to the administrators group to
LEN characters. Allowed values for the minimum
password length are 0 to 14. In any of the above cases, a value of 0
means `no restrictions'.
All operations affecting the current user are by default run against
the logon server of the current user (taken from the environment variable
LOGONSERVER
. When password or account information of other
users should be changed, the logon server is evaluated automatically.
In rare cases, it might be necessary to switch to another domain
controller to perform the action. In this case, use the
-d
option to specify the machine to run the command
against. Note that the current user must have account operator permissions
to perform user account changes in a domain.
Users can use the passwd -R to enter a password which then gets stored in a special area of the registry on the local system, which is also used by Windows to store passwords of accounts running Windows services. When a privileged Cygwin application calls the set{e}uid(user_id) system call, Cygwin checks if a password for that user has been stored in this registry area. If so, it uses this password to switch to this user account using that password. This allows you to logon through, for instance, ssh with public key authentication and get a full qualified user token with all credentials for network access. However, the method has some drawbacks security-wise. This is explained in more detail in the section called “POSIX accounts, permission, and security”.
Please note that storing passwords in that registry area is a privileged operation which only administrative accounts are allowed to do. Administrators can enter the password for other user accounts into the registry by specifying the username on the commandline. If normal, non-admin users should be allowed to enter their passwords using passwd -R, it's required to run cygserver as a service under the LocalSystem account before running passwd -R. This only affects storing passwords. Using passwords in privileged processes does not require cygserver to run.
Limitations: Users may not be able to change their password on some systems.