1 用户分类
### 1 用户分类
# 1.超级用户:拥有系统的完全控制权
超级管理员,最高权限,有着极强的破坏能力
# 2.系统用户:不代表人,而代表系统的组成部分
默认情况下不能登录系统,是系统正常运行必不可少的部分
存在的目的主要是方便管理系统,用来运行系统级别的应用程序
# 3.普通用户:是使用系统的真实用户人群
一般是由具备系统管理员root的权限的运维人员添加的,用来登录操作系统
# 强调:
对于linux系统,用户的角色是通过UID和GID识别的
### 2 CentOS7系统约定uid的范围:
超级用户(root) uid/gid: 0
系统用户:uid: 1~200 用来运行系统自带进程 操作系统级别 # 默认已创建
系统用户:uid: 201~999 用来运行安装的程序 用户级别 # 此类用户无需登录系统
普通用户:uid: 1000~6000
### 3 实际生产环境中的用户: 普通用户 若权限不够 用sudo分配
1.在生产环境中,一般会禁止root帐号通过SSH远程连接服务器
当然也会更改默认的SSH端口,以加强系统安全
2.企业工作中:没有特殊需求,应该尽量不要登录root(uid为0)用户进行操作
应该在普通用户下操作任务,然后用sudo管理普通用户的权限,可以细到每个命令权限分配
2 用户与用户组
### 1 用户及用户组概念
用户: 是操作系统提供的一种安全机制
拥有相对应的权限,是权限的化身
用户组: 相当于具有某种相同特征的一系列用户的集合
主组:
附加组:
# 为何要有用户?
1.通过用户,来划分权限,增强安全性
2.每启动一个进程,都会与一个用户相关联
linux的本质:进程启动就是操作相对应的系列文件
文件的操作,又涉及到文件权限问题
进程的操作 --关联--> 用户 --关联--> 权限(作用到文件身上)
### 2 用户 增删查改
# 1.查看用户
id : 查看当前用户
id [用户名] : 查看指定用户的id
who : 查看所有登录的用户
whoami :查看当前用户的命令
# 2.创建用户 # 用户必须有一个主组
useradd [选项] [用户名称]
选项:
-u: 指定uid # 用户id 代表的是用户的唯一标号
-g: 指定gid # 用户组id 代表的用户组的唯一标号
# 创建用户,若不指定用户组,会自动创建 与用户同名 的主组
-G: 指定附加组id
-r: 创建系统用户 # uid处于系统用户范围内(1~999) 默认没有家目录
-s: 指定用户默认的解释器
-d: 指定用户的家目录
-M:不创建家目录
–c:指定用户的备注信息
-e:修改过期时间
用户名命名规则:1.可以包含字母和数字 2.必须字母开头
# eg:创建用户
groupadd -g 666 shanhe
useradd -u 666 -g 666 test777
# 3.修改用户
usermod [选项] [用户名称]
选项: 前面同useradd的基本相同
-u: 指定要修改用户的UID
-g: 指定要修改用户主组
-a: 追加用户的附加组。仅与-G选项 一起使用
-G: 指定要修改用户附加组,使用逗号隔开多个附加组, 覆盖原有的附加组
-d: 指定要修改用户家目录
-m: 将用户主目录的内容移动到新位置 # 若当前主目录不存在,则不会创建新的主目录
-l: 指定要修改用户名
-L: 指定要锁定的用户
-U: 指定要解锁的用户
### 设置与修改 用户密码
passwd 用户名 # 为该用户设置密码
echo 密码 | passwd --stdin 用户名 # 非交互式
### 补充:生成密码
## 1 利用系统内置变量生成随机字符串
echo $RANDOM | md5sum | cut -c 1-6 # 打印随机数字 | 用md5加密 | 裁剪6个字符
## 2 openssl passwd 手动生成密码
openssl passwd -1 -salt '密码加盐' # 盐不能有中文
-1 : 表示采用的是MD5加密算法
-salt: 指定salt值,不使用随机产生的salt
## 3 mkpasswd 命令 创建随机密码
yum install -y expect # 安装
mkpasswd
-l # 设置密码的长度
-d # 字符的最少个数
-c # 小写字母的最少个数
-C # 大写字母的最少个数
-s # 特殊符号的最少个数
eg: mkpasswd -l 24 -d 6 -c 6 -C 6 -s 6
# 4.删除用户 删除用户,会默认删除通过useradd创建出来的主组
userdel 用户名 # 删除用户,但不删除用户家目录和mail
-r # 彻底删除
# 切换登录用户
su - 用户名 # 直接在bash命令行中 切换登录用户
### 3 用户组 增删查改
# 1.创建用户组
groupadd [选项] 组名 # 默认自动创建gid
选项:
-g: 指定gid
-r: 创建系统组 # gid在201~999
# 2.修改用户组
groupmod [选项] 组名
选项:
-g: 修改gid
-n: 修改组名
# 3.删除用户组 用户必须有一个主组 若组是一个用户的主组,则不能删除
groupdel 组名
# 4.组成员管理、设置组密码
gpasswd [选项] 组名
选项:
-a: 给该组添加用户
eg: gpasswd -a 用户名 组名
usermod -a -G 组名 用户名
-M: 指定 组的成员 会将之前组成员全都覆盖掉 # 可用于给该组添加多个用户
eg: gpasswd -M 用户名,用户名,用户名 组名
-A: 指定某个组成员为 组管理者 # 该成员就拥有 给该组添加/删除成员的权限
eg: gpasswd -A 用户名 组名
-d: 移除组的某个组成员
eg: gpasswd -d 用户名 组名
eg: gpasswd 组名 # 设置组密码
# 组密码的作用
让一些非组成员的用户,通过命令“newgrp 组” 临时切换到组内
并输入密码的方式 获取用户组的权限和特性
# 5.临时切换到某个组内
newgrp 组名
exit # 退出组
3 用户相关文件
# 1 用户的相关信息文件
/etc/passwd : 用户的特征信息 # 包含用户登录使用的解释器
/etc/shadow : 用户的密码信息
/etc/group : 用户组特征信息
/etc/gshadow : 用户组密码信息
/etc/skel/ : 用户家目录的模板文件夹 # 里面都是用户家目录 应该有的初始化配置文件
.bash_logout
.bash_profile
.bashrc
/home/xxx : 用户家目录
/var/spool/mail/xxx : 用户邮箱文件
# 2 执行useradd test命令,涉及的文件:
# 用户信息的文件: /etc/passwd
root:x:0:0:root:/root:/bin/bash
用户名:密码占位符:UID:GID:描述信息:用户家目录:用户登录默认的解析器
# 密码占位符,其实密码映射到/etc/shadow文件中
若为空 表示没有密码
# 用户密码的文件: /etc/shadow
root:$6::0:99999:7:::
用户名:密码:距离1970-1-1多少天:密码最少使用天数:密码最多使用天数:密码过期预警天数:密码宽限天数:密码失效剩余天数:保留列 未被使用
# 密码为一长串的字符串
若密码字符串为!!或空,表示没有密码
# 用户组的文件: /etc/group
root:x:0:
组名称 :密码占位符 :组id :该用户组作为哪些用户的附加组 多个以逗号隔开
# 用户组密码的文件: /etc/gshadow
root:::
组名称 :密码 :组管理者 :该用户组作为哪些用户的附加组 多个以逗号隔开
# 若密码字符串为! 表示没有密码
4 eg:手动创建用户
# 知识储备:
chown是用来修改文件的用户及用户组
chown test.test test
chmod是用来修改文件权限
# 1.编写组密码文件
vim /etc/gshadow
test:!:: # 添加 test组:组密码为空
# 2.编写用户组文件
vim /etc/group
test:x:995: # 添加
# 3.编写用户信息文件
vim /etc/passwd
test:x:996:995:手动创建文件:/home/test:/bin/bash # 添加
# 4.编写用户密码文件
vim /etc/shadow
test:[用上面md5生成密码]::0:99999:7::: # 添加
# 备注:test用户密码也可使用root的密码,因为不知道加密方式,所以拷贝root密码
# 5.为test用户创建家目录
mkdir /home/test
# 6.用户家目录添加相关配置 及 修改权限
cd /home/
cp -ar /etc/skel/.[!.]* /home/test/ # 用户家目录相关的初始化文件 都在etc/skel/ 目录中
chmod 700 /home/test/ # 修改目录的权限
chown test.test /home/test/ # 修改目录的属主、属组
chown test.test /home/test/.[!.]*
# 7.为test用户创建邮箱文件
touch /var/spool/mail/test
chmod 660 /var/spool/mail/test
chown test.mail /var/spool/mail/test
# 8.测试
ssh test@192.168.15.101