六、 用户管理

用户管理概述

  • 通过对用户的合理管理,让用户更好的管理系统,通常用户分为以下三类:

    • 超级用户:可调用系统内所有资源
    • 系统用户:不可登录,用特定权限运行特定程序(限定权限)
    • 普通用户:普通管理员,只能管理和本用户相关的信息
  • UID:用户唯一标识符

UID 范围
用户级别 CentOS6.* CentOS7.* 备注
超级用户 root(0) root(0)
系统用户 1-499 1-999 nfsnobody(65534)系统用户
普通用户 500-65535 1000-65535
  • 组分类
    组本身没有类型,但根据该组所对应的用户进行类型的确认
    • 初始组(私有组)
    • 附加组(公共组)
    • 有效组(创建的文件时该文件的属组则是该用户当前的有效组)

相关配置文件

-rw-r--r-- 1 root root 1531 2018-07-17 13:42:53 /etc/passwd		用户信息配置文件
第一列:用户名
第二列:密码占位符(x)
第三列:UID
第四列:GID(用户初始组)
第五列:用户描述信息(可不写)
第六列:用户家目录(用户存放自己文件的位置)
第七列:登录shell类型(shell	命令解析器 /bin/bash,/sbin/nologin)
---------- 1 root root 1123 2018-07-17 13:42:53 /etc/shadow 		密码配置文件
第一列:用户名
第二列:加密密码(SHA512散列模式加密。若为空,则仅限本地无密码登录,'*'或'!!'代表无密码)
第三列:密码最近修改时间	1970.01.01(Unix元年)
第四列:密码最短有效期		密码最少要使用的时间,期间不可修改密码
第五列:密码最长有效期		99999
第六列:密码到期前的警告天数
第七列:密码到期后的宽限天数
第八列:密码到期的时间(具体的某一时间点)	1970.01.01(Unix元年)
第九列:保留
-rw-r--r-- 1 root root 716 2018-07-17 13:42:53 /etc/group 		组信息配置文件
第一列:组名
第二列:密码占位符(x)
第三列:GID
第四列:组成员列表
---------- 1 root root 563 2019-07-17 13:42:53 /etc/gshadow 		组密码配置文件
第一列:组名
第二列:组密码
第三列:组管理员
第四列:组成员列表

注:一般二、三列不设,保证最小权限,保证安全

两个位置文件的权限/etc/shadow & /etc/gshadow

在CentOS 6.* 系列中密码文件的权限 		000		----------	
在CentOS 6.* 之前的操作系统中权限		400		-r--------

创建用户

  • 私有组机制
    在创建用户前,先创建和用户名同名的组,将同名组作为该用户的初始组
  • 公共组机制
    先创建一个组(如GID=100),以后创建的所有用户都用GID:100组作为初始组
# 新用户信息生成时参考配置文件
-rw-r--r--. 1 root root 119 Nov  5  2016 /etc/default/useradd
-rw-r--r--. 1 root root 2028 Nov  5  2016 /etc/login.defs
# 新用户创建时模板文件目录
drwxr-xr-x. 2 root root 4096 Sep  5 19:31 /etc/skel/

相关命令

1. 创建用户

Usage: useradd [options] LOGIN
       useradd -D
       useradd -D [options]

Options:
  -b, --base-dir BASE_DIR		新账户的主目录的基目录,(需事先创建,指定缺省值/home)
  -c, --comment COMMENT         	新账户的 GECOS 字段
  -d, --home-dir HOME_DIR       	新账户的主目录
  -D, --defaults			显示或更改默认的 useradd 配置
  -e, --expiredate EXPIRE_DATE  	新账户的过期日期
  -f, --inactive INACTIVE       	新账户的密码不活动期
  -g, --gid GROUP			新账户主组的名称或 ID
  -G, --groups GROUPS			新账户的附加组列表
  -h, --help                    	显示此帮助信息并推出
  -k, --skel SKEL_DIR			使用此目录作为骨架目录
  -K, --key KEY=VALUE           	不使用 /etc/login.defs 中的默认值
  -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 结合使用
  -R, --root CHROOT_DIR         	chroot 到的目录
  -s, --shell SHELL			新账户的登录 shell
  -u, --uid UID				新账户的用户 ID
  -U, --user-group			创建与用户同名的组
  -Z, --selinux-user SEUSER		为 SELinux 用户映射使用指定 SEUSER

注:

有效组定义:用户创建文件或目录时使用哪个组作为文件的所属组,就是有效组。
初始组、附加组:是用户和组之间的关系
有效组:用户和文件之间的关系
天数转日期:date -d "1970-01-01 19527 days"
日期转天数:echo $(($(date --date="2020/01/01" +%s )/86400+1))

更改密码

Usage: passwd [OPTION...] <accountName>
  -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                 从标准输入读取令牌(只有根用户才能进行此操作)
Example: 
  echo "123456" | passwd --stdin username

编辑用户信息

Usage: usermod [options] LOGIN

Options:
  -c, --comment COMMENT            		GECOS 字段的新值
  -d, --home HOME_DIR           		用户的新主目录
  -e, --expiredate EXPIRE_DATE  		设定帐户过期的日期为 EXPIRE_DATE
  -f, --inactive INACTIVE      			过期 INACTIVE 天数后,设定密码为失效状态
  -g, --gid GROUP               		强制使用 GROUP 为新主组
  -G, --groups GROUPS           		新的附加组列表 GROUPS
  -a, --append GROUP            		将用户追加至上边 -G 中提到的附加组中,并不从其它组中删除此用户
  -l, --login LOGIN             		新的登录名称
  -L, --lock                    		锁定用户帐号
  -m, --move-home               		将家目录内容移至新位置 (仅于 -d 一起使用)
  -o, --non-unique              		允许使用重复的(非唯一的) UID
  -p, --password PASSWORD       		将加密过的密码 (PASSWORD) 设为新密码
  -R, --root CHROOT_DIR         		chroot 到的目录
  -s, --shell SHELL             		该用户帐号的新登录 shell
  -u, --uid UID                 		用户帐号的新 UID
  -U, --unlock                  		解锁用户帐号
  -Z, --selinux-user  SEUSER       		用户账户的新 SELinux 用户映射
Example: 
  usermod -m -d /home/u4  user4(用户user4的原家目录是/home/user4)

删除用户

Usage: userdel [options] LOGIN

Options:
  -f, --force                   强制一些失败的操作
  -h, --help                    显示此帮助信息并推出
  -r, --remove                  删除主目录和邮件池(连带家目录一起删除)
  -R, --root CHROOT_DIR         chroot 到的目录
  -Z, --selinux-user            为用户删除所有的 SELinux 用户映射

组操作命令

Usage: gpasswd [option] GROUP

Options:
  -a, --add USER                	向指定组内添加一个成员
  -d, --delete USER             	把指定用户从组内删除
  -Q, --root CHROOT_DIR         	要 chroot 进的目录
  -r, --delete-password         	remove the GROUP's password
  -R, --restrict                	向其成员限制访问组 GROUP
  -M, --members USER,...        	设置组 GROUP 的成员列表
  -A, --administrators ADMIN,...	设置组的管理员列表
除非使用 -A 或 -M 选项,不能结合使用这些选项。

其他命令

id	USER			显示用户的UID、初始组、附加组列表
su	USER			切换用户身份
su  -  USER			切换用户身份,连带环境变量一起切换
newgrp	GROUP			修改用户的有效组,切换到普通用户之后,执行命令
chage -d 0 USER			设置密码有效期为0天,登录即修改

常用操作

# 创建组,创建用户使用这个组
groupadd -g 2000 server && useradd -u 2000 -g  2000 server

# 把dev用户添加到root组
[root@centos7 ~]# gpasswd -a dev root

# 切换用户的有效组,即dev用户创建的文件属组为root
[dev@centos7 ~]$ newgrp root
[dev@centos7 ~]$ touch file1
[dev@centos7 ~]$ ls -l 
-rw-rw-r-- 1 dev root 0 2020-02-27 16:27:08 file1

# 查看用户的 UID、初始组、附加组列表
[dev@centos7 ~]$ id
uid=1001(dev) gid=0(root) groups=0(root),1001(dev)


作者:Outsrkem
出处:https://www.cnblogs.com/outsrkem/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

原文地址:https://www.cnblogs.com/outsrkem/p/11169434.html