317 lines
11 KiB
ReStructuredText
317 lines
11 KiB
ReStructuredText
用户管理
|
||
========
|
||
|
||
添加用户
|
||
--------
|
||
|
||
以 root 或授权管理员登录,执行 ``useradd testuser1`` ,将添加用户 testuser1,如果需要同时建立用户目录,则执行 ``useradd -m testuser1`` 。
|
||
|
||
.. important::
|
||
添加用户时会随机生成用户口令,请记录该口令或修改口令。
|
||
|
||
.. hint::
|
||
执行 ``less /etc/passwd`` 可以看到新增加用户 testuser1 的信息。
|
||
|
||
删除用户
|
||
--------
|
||
|
||
以 root 或授权管理员登录,执行 ``rmuser testuser1`` ,testuser1 的用户信息将会被从各个相关的用户数据文件(如 ``/etc/passwd、/etc/group、/etc/shadow`` 等)中删除,如果需要删除用户目录及其它相关文件,则执行 ``rmuser -r testuser1`` 。
|
||
|
||
添加用户组
|
||
----------
|
||
|
||
以 root 或授权管理员登录,执行 ``groupadd test`` ,将添加用户组 test。
|
||
|
||
.. hint::
|
||
执行 ``useradd -g test testuser1`` 可创建用户 testuser1 并添加到 test 用户组,但 test 组必须已存在。
|
||
|
||
删除用户组
|
||
----------
|
||
|
||
以 root 或授权管理员登录,执行 ``groupdel test`` ,将删除用户组 test。
|
||
|
||
.. Warning::
|
||
只有某用户组是空组(没有用户属于该组),或该用户组不是任何用户的 primary group 的情况下,才可以删除该用户组,其它情况下均不能删除该用户组。
|
||
|
||
|
||
将用户添加到用户组
|
||
------------------
|
||
|
||
以 root 或授权管理员登录,执行 ``gpasswd -a testuser1 test`` ,将用户 testuser1 添加到用户组 test。
|
||
|
||
将用户从用户组中删除
|
||
--------------------
|
||
|
||
以 root 或授权管理员登录,执行 ``gpasswd -d testuser1 test`` ,将用户 testuser1 从用户组 test 中删除。
|
||
|
||
.. Attention::
|
||
用户必须属于至少一个用户组,因此,当用户只属于一个用户组时,将不能使用上述命令将用户从该用户组中删除。
|
||
|
||
改变用户当前所在组
|
||
------------------
|
||
|
||
如果用户同时属于几个用户组,可使用 ``newgrp`` 命令来改变当前所在组,之后将使用新的组 ID 来进行文件存取权限的管理。
|
||
|
||
如:用户 testuser 同时属于 users 和 test 用户组,当前组别为 users,执行 ``touch test1.txt`` 新建文件 ``test1.txt`` ,再执行 ``newgrp test`` 改变登录的用户组到 test,执行 ``touch test2.txt`` 新建文件 ``test2.txt`` 。查看文件 ``test1.txt`` 和 ``test2.txt`` 的信息,属主都是 testuser ,但分别属于 users 和 test 用户组。
|
||
|
||
修改用户口令
|
||
------------
|
||
|
||
使用 ``passwd`` 命令可修改当前用户自己的口令。
|
||
|
||
如:用户 testuser1 使用 ``passwd`` 命令,若旧口令输入错误,则不能修改口令。按要求输入正确的旧口令后,输入新口令并再次确认,口令修改成功。
|
||
|
||
::
|
||
|
||
$ passwd
|
||
为 testuser1 更改 STRESS 密码
|
||
(当前)UNIX 密码: # 输入错误的旧口令
|
||
passwd: 鉴定令牌操作错误
|
||
passwd: password unchanged
|
||
|
||
$ passwd
|
||
为 testuser1 更改 STRESS 密码
|
||
(当前)UNIX 密码: # 输入正确的旧口令
|
||
输入新的 UNIX 密码:
|
||
重新输入新的 UNIX 密码
|
||
passwd: 已成功更新密码
|
||
|
||
若输入的新口令不符合要求(如,与旧口令相同),则会要求重新输入新口令。
|
||
|
||
::
|
||
|
||
密码未更改
|
||
输入新的 UNIX 密码:
|
||
|
||
重新输入的次数有限制(由授权管理员设置),当尝试次数达到限制次数后,系统返回提示并退出口令修改:
|
||
|
||
::
|
||
|
||
passwd: 鉴定令牌操作错误
|
||
passwd: password unchanged
|
||
|
||
|
||
输入新口令需要注意以下几点:
|
||
|
||
- 口令必须为 6~127 位的英文、数字和特殊字符的组合,若输入的新口令不足5位,系统将提示要求重新输入:
|
||
|
||
::
|
||
|
||
输入新的 UNIX 密码: # 输入不足5位的口令
|
||
必须选择更长的密码
|
||
输入新的 UNIX 密码:
|
||
|
||
- 输入新口令时,若输入的口令保密性不好,比如与之前的口令相似、是某个英文单词或过于简单,系统也会提示,并要求重新输入:
|
||
|
||
::
|
||
|
||
输入新的 UNIX 密码: # 输入与之前的口令相似,如,原口令为
|
||
# 12345678,输入新口令为 1234567
|
||
Bad: new and old password are too similar
|
||
输入新的 UNIX 密码: # 输入某个英文单词或过于简单
|
||
# 如:rocky1
|
||
Bad: new password is too simple
|
||
输入新的 UNIX 密码:
|
||
|
||
.. important::
|
||
口令位数越少时,就要求越复杂的字符组合。
|
||
|
||
- 若确认新口令(即第二次输入新口令)时错误,系统将提示,并要求重新输入新口令:
|
||
|
||
::
|
||
|
||
Sorry, passwords do not match
|
||
passwd: 无法恢复鉴定信息
|
||
passwd: password unchanged
|
||
|
||
.. important::
|
||
用户口令的修改也可能被限制。授权管理员可以设定两次修改用户口令之间间隔的最长和最短时间、口令作废的日期、在用户口令作废前多少天警告用户、在账号自动锁定之前容许用户多少天不活动等等。
|
||
|
||
以 root 或授权管理员登录,执行 \ ``passwd`` 命令,可修改任意用户的口令。
|
||
|
||
.. caution::
|
||
以 root 的身份修改用户口令为强制性修改,不需要验证旧口令,请谨慎使用。
|
||
|
||
修改用户口令时限
|
||
----------------
|
||
|
||
以 root 或授权管理员登录,使用 ``passwd`` 或 ``chage`` 命令可以设定两次修改口令之间间隔的最长和最短时间,口令作废的日期,在用户口令作废前多少天警告用户,在账户自动锁定之前容许用户多少天不活动等。
|
||
|
||
``passwd [Options] username``
|
||
|
||
Options:
|
||
|
||
- ``-a, --all``
|
||
|
||
显示所有帐户的信息。仅能与“``-S``”选项一起使用。
|
||
|
||
- ``-d, --delete``
|
||
|
||
删除用户帐户的口令。
|
||
|
||
- ``-e, --expire``
|
||
|
||
用户帐号到期的日期。过了这天,此用户帐号将不可用。
|
||
|
||
- ``-k, --keep-tokens``
|
||
|
||
只更改到期的口令。
|
||
|
||
- ``-i, --inactive INACTIVE``
|
||
|
||
停滞时期。如果一个口令已过期这些天,那么此用户帐号将不可用。
|
||
|
||
- ``-l, --lock``
|
||
|
||
锁定指定的帐号。锁定后,此用户帐号将不可用。
|
||
|
||
- ``-n, --mindays MIN_DAYS``
|
||
|
||
可更改口令的最小天数,为 0 时代表任何时候都可以更改口令。
|
||
|
||
- ``-S, --status``
|
||
|
||
显示用户帐号的口令状态信息。
|
||
|
||
- ``-u, --unlock``
|
||
|
||
为指定的帐号解锁。解锁后,此用户帐号将变为可用。
|
||
|
||
- ``-w, --warndays WARN_DAYS``
|
||
|
||
用户口令到期前,提前收到警告信息的天数。
|
||
|
||
- ``-x, --maxdays MAX_DAYS``
|
||
|
||
口令保持有效的最大天数。
|
||
|
||
.. raw:: latex
|
||
|
||
\vspace{1cm}
|
||
|
||
``chage [Options] username``
|
||
|
||
Options:
|
||
|
||
- ``-d, --lastday LAST_DAY``
|
||
|
||
设置上一次更改口令的日期。
|
||
|
||
- ``-E, --expiredate EXPIRE_DATE``
|
||
|
||
用户帐号到期的日期。过了这天,此用户帐号将不可用。
|
||
|
||
- ``-I, --inactive INACTIVE``
|
||
|
||
停滞时期。如果一个口令已过期这些天,那么此用户帐号将不可用。
|
||
|
||
- ``-l, --list``
|
||
|
||
列出当前的设置。由非特权用户来确定他们的密码或用户帐号何时过期。
|
||
|
||
- ``-m, --mindays MIN_DAYS``
|
||
|
||
可更改口令的最小天数,为 0 时代表任何时候都可以更改口令。
|
||
|
||
- ``-M, --maxdays MAX_DAYS``
|
||
|
||
口令保持有效的最大天数。
|
||
|
||
- ``-W, --warndays WARN_DAYS``
|
||
|
||
用户口令到期前,提前收到警告信息的天数。
|
||
|
||
例如,将用户 testuser1 两次修改口令之间的最小天数设为 2、最大天数设为 90、作废日期为 2009 年 1 月 1 日,并且在接近作废日期的 14 天里警告用户:
|
||
|
||
::
|
||
|
||
$ chage -m 2 -M 90 -E 2009-01-01 -W 14 testuser1
|
||
|
||
修改用户信息
|
||
------------
|
||
|
||
以 root 或授权管理员登录,使用 ``usermod`` 命令可修改用户信息。
|
||
|
||
::
|
||
|
||
usermod [-c comment] [-d home_dir [-m]] [-e expire_date] [-f inactive_days] [-g initial_group] [-G groups ...] [-l name] [-s shell] [-u uid [-o]] name
|
||
|
||
在命令行中使用一个 ``name`` 参数指定要改变信息的用户(指定的用户必须存在,且不能是当前在线的用户),并且利用它所提供的各个选项来指定改变字段以及值。
|
||
|
||
- ``-c comment``
|
||
|
||
更改用户的注释。
|
||
|
||
- ``-d home_dir``
|
||
|
||
更改用户主目录名称。
|
||
|
||
- ``-e expire_date``
|
||
|
||
更改用户的到期日,到期日使用 ``mm/dd/yy`` 格式来设定。
|
||
|
||
- ``-f inactive_days``
|
||
|
||
更改用户到期几天后停止使用该用户,设定为0表示到期后立即停用,预设为-1表示要关闭这个功能。
|
||
|
||
- ``-g initial_group``
|
||
|
||
更改用户的所属组, ``initial_group`` 参数可以使用组的名称或编号来指定组,不过指定的组必须是已存在的。
|
||
|
||
- ``-G group,[...]``
|
||
|
||
更改该用户属于哪些组的成员,可以指定多个组,组间以逗号分隔。可以使用组的名称或编号来指定组,不过指定的组必须是已存在的。
|
||
|
||
- ``-l name``
|
||
|
||
更改用户的名称,该用户的主目录名称需要手动修改。
|
||
|
||
- ``-s shell``
|
||
|
||
更改用户登录系统后执行的 shell,如果指定空白,将会执行系统预设的 shell。
|
||
|
||
- ``-u uid``
|
||
|
||
更改用户的 UID。指定的 UID 不能与其它用户的 UID 重复,如果 UID 不唯一,则必须加上 ``-o`` 选项。UID 不可为负值。
|
||
|
||
修改口令文件
|
||
------------
|
||
|
||
为了保证系统的安全性,系统通常对用户的口令进行 shadow 处理,并把用户口令保存到只有 root 可读的 ``/etc/shadow`` 文件中。该文件包含了系统中所有用户和用户口令等相关信息。每个用户在该文件中对应一行,并且用冒号分成九个域,每一个域包括以下内容:
|
||
|
||
#. 用户登录名
|
||
|
||
#. 用户加密后的口令(若为空,表示该用户不需口令即可登录,若为*号,表示该帐号被禁止)
|
||
|
||
#. 从1970年1月1日至口令最近一次被修改的天数
|
||
|
||
#. 口令在多少天内不能被用户修改
|
||
|
||
#. 口令在多少天后必须被修改
|
||
|
||
#. 口令过期多少天后用户帐号被禁止
|
||
|
||
#. 口令在到期多少天内给用户发出警告
|
||
|
||
#. 口令自1970年1月1日被禁止的天数
|
||
|
||
#. 保留域
|
||
|
||
以 root 登录,可对口令文件 ``/etc/shadow`` 进行修改。
|
||
|
||
定义鉴别阈值
|
||
------------
|
||
|
||
用户登录系统时,若输入的新口令不符合要求,则会被要求重新输入新口令。重新输入的次数也有限制,当尝试次数达到限制次数后,系统返回提示并退出口令修改,并在一定的时间内不能再次尝试登录系统。
|
||
|
||
管理员可以修改 ``/etc/login.defs`` 文件来自定义这些阈值。
|
||
|
||
如:
|
||
|
||
::
|
||
|
||
LOGIN_RETRIES 3 # 输入口令的尝试次数限制为3次
|
||
LOGIN_TIMEOUT 60 # 登录超时限制为60秒
|
||
PASS_MIN_LEN 5 # 口令必须为5位以上
|
||
|