用户及用户组存在的意义
- Q:什么是用户?
A:用户是最底层的安全机制,保护数据不被其他人删改。其他的安全机制都是在此基础上建立的。
(比如:你仅仅只是手机的拥有者,无法对系统的软件进行操作)
Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。
每个用户账号都拥有一个唯一的用户名和各自的口令。
- Q:用户组是什么?
A:组不是一个身份,是有一个容器,装有具有共同权限的用户们。(对用户进行归类和统一授权)
3A机制
身份 account:我是谁
认证authentic:证明我是谁
授权 author:我被允许做什么
用户以及用户组在系统中的存在形式
- 用户记录在/etc/passwd文件中
用户组记录在/etc/group文件中 - 默认情况下,普通用户是无法建立用户的
- 建立用户要用到3个文件
passwd 用户属性
group 用户组属性
shadow 认证属性
用户切换
- 用户查看
whoami #当前用户
id -u username #查看用户的“身份证”
id -g username #查看用户的主组id(初始值id)
id -G username #查看用户的附加组id
id -G -n username #显示所有附加组的名称
注意:主组是无法选择的,而附加组可以选择。
- 用户切换
-
普通用户到超级用户,需要密码
超级用户到普通用户,不需要密码
普通用户到普通用户,需要密码 -
“ - ”
su - username # 切换用户环境
su - westos真实登录,因为环境已经改变。
而su westos 虽然也显示正常登录,但是没有切换到相应用户的环境
- 每切换一个用户,系统都会打开一个shell
- 规范操作是最多保持两层用户。
注意:命令的规范写法
查看路径
用户涉及到的系统配置文件
-
/etc/passwd
用户身份信息文件
-
/etc/group
组身份信息文件
-
/etc/skel/.*
用户环境配置文件模板
(隐藏的文件是从skel复制到家目录中) -
/etc/shadow
用户认证信息文件 -
/home/username
用户家目录
用户和用户组建立删除
- watch
用户文件监控界面
可以设定时间
watch -n (系统默认 2 秒)
watch -n 1 (设定为1秒)
watch -n 1 “tail -n 3 /etc/passwd /etc/group;ls -l /home”
(“ ;”告诉系统这是2个命令)
- useradd 用户建立
(1)useradd username
(2)useradd -u id username
建立用户,并指定其uid
id | 用户 |
---|---|
0 | 超级用户 |
1-200 | 系统预留id |
201-999 | 系统用户 |
1000-60000 | 用户级用户 |
(3)useradd -g gid username
建立用户,并指定主组id
注意:该组id对应的组一定要存在,否则,无法建立。
错误演示
(4)useradd -G id username
建立用户,并指定附加组id
(5)useradd -c word username
建立用户,并指定用户说明
(6)useradd -s shell username
建立用户,并指定用户的shell
nologin:账号不可用,不能操作交互界面,不可登录shell
bash:提供交互界面,可登录shell
(7)useradd -d dir yao
建立用户,并指定用户的家目录
/home/username 建立用户时的默认家目录
(8)useradd -M username
建立用户,并不建立用户的家目录
- userdel 用户删除
(1)userdel -r username
无 -r 时,只删除了用户的身份
用户的家目录,以及邮箱文件依旧存在
(2)userdel username
家目录未删除
- groupadd 组建立
(1)groupadd groupname
建立组
(2)groupadd -g id groupname
建立组,并指定组id
5. groupdel 组删除
groupdel groupname
用户和用户组的信息管理
- usermod 更改用户信息
(1) -l
更改用户名称
(2) -u
更改用户的uid
(3) -g
更改用户的gid
(4) -G
更改主组附加组身份
注意:更改(不是添加)后,该用户仅仅只有2个组
(5) -aG
添加用户附加组身份
(6)-G “”
清空附加组
(7)-c
更改用户说明
-c “”
清空用户说明
(8)-d
更改用户家目录指向
注意:监控窗口watch下,显示的/home/username仅仅只是passwd下的字符串,这个目录不一定真实存在(表格中的信息不一定真实)
(9)-md
更改家目录指向,并更改家目录名称
(注意保证实验环境纯净)
错误演示
先将更正家目录指向,再重新更改
(10)-s
更改默认shell
(11)-L
冻结账号
(12)-U
解锁
2. groupmod 更改组
-g 更改组id
用户认证信息管理
- 查看密码状态
passwd -S username
- 监控用户认证信息的变化情况
watch -n 1 "tail -n 3 /etc/passwd /etc/shadow"
用户名称 : 用户密码的加密字符 : 用户密码最后一次被修改时间 : 密码最短有效期 : 密码最长有效期 : 密码过期前警告期 :
账号非活跃期 : 账号到期时间 : 用户自定义(未使用)
- 用户加密字符
(1)超级用户的操作
passwd username
echo 123456 | passwd --stdin username
(2)普通用户的操作
passwd
(3)冻结认证
passwd -l username #冻结账号认证
passwd -u username #解锁账号认证
(4)密码删除
passwd -d username
(5)密码使用天数设定
当修改密码使用天数为0时,用户必须修改密码才能登陆系统
passwd -e username #修改默认使用时间为0
chage可以指定任意天数,passwd -e 只能改为0
chage -d 30 username
(6)密码最短有效期
防止用户频繁更改密码
在设定的最短有效期内,用户无法更改密码
passwd -n 1 username
chage -m 2 username
(7)密码最长有效期
88888天内,用户必须修改密码,否则,会被冻结账号
passwd -x 88888 username
chage -M 30 username
(8)密码过期警告
账号过期前的警告时间
passwd -w 2 username
chage -W 7 username
(9)认证非活跃天数
超出了最长有效期时,用户还可以使用账号的天数
passwd -i 2 username
chage -I 4 username
chage -I -1 username #恢复默认,不设置
(10)账号认证到期时间
chage -E "2021-7-28"
用户权力下放
普通用户无法使用系统管理命令
如果想要普通用户去执行系统管理命令,则需要超级用户的来授权
- 普通用户授权
sudo:执行该命令,普通用户可以使用指定的用户身份运行 命令
visudo 编辑/etc/sudoers,并提供语法检测
先查看该普通用户当前所在的主机名,以及要执行的系统命令程序所在的位置
编辑/etc/sudoers,注意这种方法可以检测语法错误
按照规范的操作,一般在101行进行编辑
westos用户可以在localhost.localdomain这台主机上,以root的身份去执行useradd和userdel命令
编辑后,调用sudo,普通用户可以调用系统命令
此次执行系统命令,需要输入密码
再次编辑文件,visudo,设置免密执行