Files
res_text/source/用户管理.rst
2021-08-18 18:36:05 +08:00

317 lines
11 KiB
ReStructuredText
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
用户管理
========
添加用户
--------
 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
输入新口令需要注意以下几点:
- 口令必须为 6127 位的英文、数字和特殊字符的组合若输入的新口令不足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位以上