用户和用户组管理,常用命令速览

引言

Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。

用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。

用户账号管理

用户账号管理,主要分为三个方面 用户账号的添加,修改和删除。

  1. 用户添加 useradd
useradd 选项 用户名

# 基础选项:
#   -b, --base-dir BASE_DIR	新账户的主目录的基目录
#   -c, --comment COMMENT         新账户的 GECOS 字段
#   -d, --home-dir HOME_DIR       新账户的主目录
#  -e, --expiredate EXPIRE_DATE  新账户的过期日期
#   -g, --gid GROUP		新账户主组的名称或 ID
#   -G, --groups GROUPS	新账户的附加组列表
#   -l, --no-log-init	不要将此用户添加到最近登录和登录失败数据库
#   -m, --create-home	创建用户的主目录
#   -M, --no-create-home		不创建用户的主目录
#   -N, --no-user-group	不创建同名的组
#   -o, --non-unique		允许使用重复的 UID 创建用户
#   -p, --password PASSWORD		加密后的新账户密码
#   -r, --system                  创建一个系统账户
#   -s, --shell SHELL		新账户的登录 shell
#   -u, --uid UID			新账户的用户 ID
#   -U, --user-group		创建与用户同名的组
  1. 用户删除 userdel
userdel 选项 用户名

# 常用的选项
# -r  删除用户时,将用户的主目录一起删除
  1. 用户修改 usermod
usermod 选项 用户名

# usermod 的选项值基本与 useradd的一致
  1. 口令管理(密码管理)passwd
passwd 选项 用户名
# -k, --keep-tokens       保持身份验证令牌不过期
# -d, --delete            删除已命名帐号的密码(只有根用户才能进行此操作)
# -l, --lock              锁定指名帐户的密码(仅限 root 用户)
# -u, --unlock            解锁指名账户的密码(仅限 root 用户)
# -e, --expire            终止指名帐户的密码(仅限 root 用户)
# -f, --force             强制执行操作
# -x, --maximum=DAYS      密码的最长有效时限(只有根用户才能进行此操作)
# -n, --minimum=DAYS      密码的最短有效时限(只有根用户才能进行此操作)
# -w, --warning=DAYS      在密码过期前多少天开始提醒用户(只有根用户才能进行此操作)
# -i, --inactive=DAYS     当密码过期后经过多少天该帐号会被禁用(只有根用户才能进行此操作)
# -S, --status            报告已命名帐号的密码状态(只有根用户才能进行此操作)
# --stdin                 从标准输入读取令牌(只有根用户才能进行此操作)

用户组管理

每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。
如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。

用户组的管理,实际上就是对/etc/group 文件的操作

  1. 添加一个新的用户组 groupadd
groupadd 选项 用户组
# 常用的选项
# -g, --gid GID                 为新组使用 GID
# -o, --non-unique              允许创建有重复 GID 的组
# -p, --password PASSWORD       为新组使用此加密过的密码
# -r, --system                  创建一个系统账户
  1. 删除一个已有用户组 groupdel
groupdel 用户组

groupdel 用户组的gid
  1. 修改用户组的属性 groupmod
groupmod 选项 用户组
# 选项值与groupadd基本一致
# 常用选项:
# 1. -g 修改用户组的组ID
# 2. -n 修改用户组的组名

扩展命令 id,groups,gpasswd

  1. id : id命令用于显示用户ID和所属的组ID。
id [OPTION]... [USER]

由上图可以看到 root超级用户的uid=0,gid=0即所属主组为root组,附加组为testgroup。
2. groups : groups命令用于显示用户所属的组。

groups [选项]... [用户名]...

tips: 注意 groups 后面跟的是用户名而不是组名。

  1. gpasswd:gpasswd用来设置组密码以及组中的用户管理。
gpasswd [选项] 组

选项:
  -a, --add USER                向组 GROUP 中添加用户 USER
  -d, --delete USER             从组 GROUP 中添加或删除用户
  -h, --help                    显示此帮助信息并推出
  -Q, --root CHROOT_DIR         要 chroot 进的目录
  -r, --delete-password         remove the GROUP's password
  -R, --restrict                向其成员限制访问组 GROUP
  -M, --members USER,...        设置组 GROUP 的成员列表
  -A, --administrators ADMIN,...	设置组的管理员列表

三个文件

/etc/passwd

/etc/passwd 文件是用户管理工作涉及的最重要的一个文件,Linux系统中的每个用户都在/etc/passwd文件中有一个对应的记录行,它记录了这个用户的一些基本属性

# 用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
root:x:0:0:root:/root:/bin/bash

说明:

  1. 口令,口令即存放的是用户口令的加密字符串,不是明文,然后由于 /etc/passwd文件对所有用户都是可读的,所以我们在 /etc/passwd 中无法看到加密的口令,只能看到一个特殊的字符 (“x”或者 “*”),而实际的密码在 /etc/shadow 中可以看到。
  2. 用户标识号,是一个整数,用于在系统内部来标识用户
    a. 标识号的取值范围 : 0~65535
    b. 0 为超级用户 root 的标识号,1~999为系统保留(centos8是这样),普通用户的标识号从1000开始。
  3. 组标识号:记录用户所属的用户组,对应着 /etc/group 文件的一条记录
  4. 主目录:用户的起始工作目录
  5. 登录shell就是用户登录linux所使用的shell,默认的话就是/bin/shell

/etc/shadow

/etc/shadow中的记录行与/etc/passwd中的一一对应,它由pwconv命令根据/etc/passwd中的数据自动产生

# 登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
root:$加密口令::0:99999:7:::
  1. "登录名"是与/etc/passwd文件中的登录名相一致的用户账号
  2. "口令"字段存放的是加密后的用户口令字,长度为13个字符。如果为空,则对应用户没有口令,登录时不需要口令;如果含有不属于集合 { ./0-9A-Za-z }中的字符,则对应的用户不能登录。
  3. "最后一次修改时间"表示的是从某个时刻起,到用户最后一次修改口令时的天数。时间起点对不同的系统可能不一样。通常是1970年1月1日。
  4. "最小时间间隔"指的是两次修改口令之间所需的最小天数。
  5. "最大时间间隔"指的是口令保持有效的最大天数。
  6. "警告时间"字段表示的是从系统开始警告用户到用户密码正式失效之间的天数。
  7. "不活动时间"表示的是用户没有登录活动但账号仍能保持有效的最大天数。
  8. "失效时间"字段给出的是一个绝对的天数,如果使用了这个字段,那么就给出相应账号的生存期。期满后,该账号就不再是一个合法的账号,也就不能再用来登录了。

/etc/group

每个用于都属于某个用户主,一个组中可以有多个用户,一个用户也可以属于不同的组。
在/etc/passwd中记录的是用户所属的主组,登录时的默认组,其他组称为附加组。

# 组名:口令:组标识号:组内用户列表
root:x:0:user1
  1. "组名"是用户组的名称,由字母或数字构成。与/etc/passwd中的登录名一样,组名不应重复。
  2. "口令"字段存放的是用户组加密后的口令字。一般Linux 系统的用户组都没有口令,即这个字段一般为空,或者是*。
  3. "组标识号"与用户标识号类似,也是一个整数,被系统内部用来标识组。(普通用户从1000开始,系统用户为1-999,超级管理员root为0)
  4. "组内用户列表"是属于这个组的所有用户的列表,不同用户之间用逗号(,)分隔。这个用户组可能是用户的主组,也可能是附加组。

你可能感兴趣的:(Linux,网络,服务器,安全,linux)