一.用户概述
1.什么是用户
用户是操作系统提供的一种安全机制 用户是权限的化身 要使用操作系统必须事先输入正确的用户名与密码
2.为什么要创建用户, 有什么用
3.如何查看一个用户及用户的权限
🐼
[ root@shawn ~ ]
uid= 0 ( root) gid= 0 ( root) 组= 0 ( root)
🐼
[ root@shawn ~ ]
uid= 1000 ( shawn) gid= 1000 ( shawn) 组= 1000 ( shawn)
🐼
[ root@shawn ~ ]
root
🐼
[ root@shawn ~ ]
root tty1 2020 - 10 - 26 13 : 58
root pts/ 0 2020 - 10 - 27 21 : 11 ( 192.168 .12 .179 )
🐼
[ root@shawn ~ ]
root 1181 0.0 0.0 105996 312 ? Ss 01 : 42 0 : 00 / usr/ sbin/ sshd - D
root 55197 0.0 0.5 148316 5380 ? Ss 21 : 11 0 : 00 sshd: root@pts/ 0
4.Linux中用户角色的划分
Linux中分为 管理员 用户与 普通 用户 管理员用户拥有最高权限 其他用户根据管理员的分配 拥有不同的权限
5.UID
与 GID
Linux系统通过UID 和GID 识别用户角色 那些用户账户(比如shawn), 其实都是 给我们人看的 ,方便我们 Linux系统能识别的仅仅是UID 和GID 这样的数字 UID (User Identify)
🌵用户ID, 在系统中是唯一, 唯一标识一个系统用户的帐号
"UID" 相当于一个人的身份证,用户名就相当于这个人的名字
🌵组ID, 如果把一个操作系统当成一家公司,uid相当于这个人的员工号,"GID" 相当于他的部门编号
0
1 ~ 200
201 ~ 999
1000 以后
主组 : 用户本身所在的部门
附加组 : 为用户添加的部门
🌵一对一 : 一个用户可以属于一个组,用户默认就在自己的主组下
🌵多对一 : 多个用户在同一个组
🌵一对多 : 一个用户可以属于多个组,用户只有一个主组,但可以为用户添加多个附加组
🌵多对多 : 多个用户可以属于多个组
5.超级用户
默认是 root 用户 UID 和 GID 都为0 root用户在每台unix/ linux操作系统中都是唯一且真实 存在的 通过它可以登录系统,可以操作系统中任何文件和命令,拥有最高的管理权限
6.文件权限分类
1 、属主对应的权限
2 、属组对应的权限
3 、其他对应的权限
1 、先看该用户是否是文件的属主
2 、在1 失败的情况,再看该用户是否是文件的属组
3 、在2 失败的情况,该用户属于其他人权限
二.用户管理命令
1.用户与组相关的文件
/etc/passwd : 用户文件 /etc/shadow : 用户密码文件 /etc/group : 组文件 /etc/gshadow : 组密码文件 /etc/skel : 用户老家模板目录 /var/spool/mail/xxx : 用户邮箱文件 /home/xxx : 用户家目录
2.用户文件及组文件对应解释
3.手动创建用户
手动添加用户:https://www.cnblogs.com/songhaixing/p/13893637.html
3.useradd : 添加用户
🌵添加用户
[ root@shawn ~ ]
🌵查看用户
[ root@shawn ~ ]
uid= 1003 ( xing) gid= 1003 ( xing) 组= 1003 ( xing)
🌵查看所有登入的用户信息
[ root@shawn ~ ]
🌵查看当前登入的用户名
[ root@shawn ~ ]
注意: 当创建一个用户没有指定用户主组, 将会创建一个同名的组作为用户的主组
选项 功能 -u 指定用户的UID -g 指定用户所属的主组 -G 指定用户所属的附加组 -d 指定用户的家目录 -c 指定用户的备注信息 -s 指定用户所用的shell -e 修改过期时间 -M 不创建 家目录-r 创建系统用户, uid 在1000 以内,默认没有家目录
🌵先搞个组做实验, 创建一个用户并指定"UID" , 指定主组"xing1"
[ root@shawn ~ ]
[ root@shawn ~ ]
[ root@shawn ~ ]
[ root@shawn ~ ]
uid= 1111 ( song1) gid= 1000 ( xing1) 组= 1000 ( xing1)
🌵创建"song2" 指定家目录
[ root@shawn ~ ]
🌵创建"song3" 不创建家目录
[ root@shawn ~ ]
🌵创建"song4" 指定Shell
[ root@shawn ~ ]
🌵创建"song2\5" 指定附属组
[ root@shawn ~ ]
[ root@shawn ~ ]
uid= 1115 ( song5) gid= 1115 ( song5) 组= 1115 ( song5) , 1000 ( xing1)
🌵创建"song6" 指过期时间
[ root@shawn ~ ]
🌵创建系统用户"song7" , Uid在1000 以内
[ root@shawn ~ ]
[ root@shawn ~ ]
uid= 997 ( song7) gid= 995 ( song7) 组= 995 ( song7)
4.usermod : 修改用户信息
与 useradd 选项基本一致, 但这是修改
选项 功能 -u 指定修改用户的UID -g 指定修改用户的主组 -G 指定修改用户附属组,使用逗号分隔多个附属组,覆盖原有的附属组 -a 与 "-G"连用, 让其变成追加附加组,而不是覆盖 -d 指定修改用户家目录 -c 指定修改用户注释信息 -s 指定修改用户的 Bash Shell
🌵将用户"song1" 的主组由"xing1" 改成"xing2"
[ root@shawn ~ ]
[ root@shawn ~ ]
uid= 1111 ( song1) gid= 1117 ( xing2) 组= 1117 ( xing2)
🌵用户"song1" 追加一个附加组"xing1" , "-a" 表示追加, 没有"-a" 则是覆盖
[ root@shawn ~ ]
[ root@shawn ~ ]
uid= 1111 ( song1) gid= 1117 ( xing2) 组= 1117 ( xing2) , 1000 ( xing1)
🌵修改用户"song1" 的过期时间
[ root@shawn ~ ]
选项 功能 -l 指定修改用户的登入名 -L 指定要锁定的用户 -U 指定要解锁的用户
🐼为用户设置密码
🌵交互式
[ root@shawn ~ ]
更改用户 song1 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
🌵非交互式
[ root@shawn ~ ]
🌵"-l" 修改用户登入名
[ root@shawn ~ ]
[ root@shawn ~ ]
uid= 1111 ( SONG1) gid= 1117 ( xing2) 组= 1117 ( xing2) , 1000 ( xing1)
🌵"-L" 锁定用户
[ root@shawn ~ ]
[ root@shawn ~ ]
'''
shawn login: SONG1
Password: #输入了正确的密码
Login incorrect #显示登入不正确
'''
🌵"-U" 解锁用户
[ root@shawn ~ ]
[ root@shawn ~ ]
'''
shawn login: SONG1
Password: #输入了正确的密码
Last failed login: Thu OCt 29.........
[SONG1@shawn ~]$ #登入成功了
'''
5.userdel : 删除用户
🌵删除用户, 但不删除用户家目录和"mail"
[ root@shawn ~ ]
🌵"-r" 可以彻底删除
[ root@shawn ~ ]
三.组管理命令
1.groupadd : 创建组
🌵创建基本组, 不指定GID, 会自动帮你设置一个
[ root@shawn ~ ]
[ root@shawn ~ ]
xing1: x: 1003 :
🌵指定GID
[ root@shawn ~ ]
[ root@shawn ~ ]
xing2: x: 4444 :
🌵创建系统组, GID在1000 以内
[ root@shawn ~ ]
[ root@shawn ~ ]
xing3: x: 995 :
2.groupmod : 修改组
🌵将"xing1" 的GID改成"5555"
[ root@shawn ~ ]
[ root@shawn ~ ]
xing1: x: 5555 :
xing2: x: 4444 :
xing3: x: 995 :
🌵修改组名
[ root@shawn ~ ]
[ root@shawn ~ ]
new_xing3: x: 995 :
3.groupdel : 删除组
如果一个组是一个用户的主组的话, 那么该组不能被删除 删掉用户会默认一起删掉它的主组 能删掉的只能是不是任何用户主组的组
🌵先查看一下"start" 的信息
[ root@shawn ~ ]
uid= 1002 ( start) gid= 1002 ( start) 组= 1002 ( start)
🌵指定追加一个组"xing1" ( 之前创建的) , 然后查看一下
[ root@shawn ~ ]
[ root@shawn ~ ]
uid= 1002 ( start) gid= 1002 ( start) 组= 1002 ( start) , 5555 ( xing1)
🌵删掉这个组"xing1" , 再查看发现没有了
[ root@shawn ~ ]
[ root@shawn ~ ]
uid= 1002 ( start) gid= 1002 ( start) 组= 1002 ( start)
🌵当删除主组"start" 的时候会提示失败
[ root@shawn ~ ]
groupdel:不能移除用户“start”的主组
四.组成员管理命令
1.组的分类
一类是基本组或称主组,用户只能有一个基本组,创建时可通过 -g 指定,如未指定则创建一个默认的组(与用户同名) 二是附加组,基本组不能满足授权要求时,可以创建附加组,将用户加入该组,用户可以属于多个附加组,加入一个组后就拥有了该组的权限
2.gpasswd : 设置组密码及对用户和组的操作
选项 功能 -a 将某个用户加入到某个组 -M 将多个用户加入到一个组 -A 将某个用户设为某个组的组长,那么也有了增和删成员的权限 -d 将用户从组中删除
🌵首先创建一个组"xing1"
[ root@shawn ~ ]
[ root@shawn ~ ]
xing1: x: 5555 :
🌵"-a" 将用户"song" 加入到组"xing1" 中
[ root@shawn ~ ]
正在将用户“song”加入到“xing1”组中
🌵"-M" 将多个用户"shawn" , "start" 将入到组"xing1" 中
[ root@shawn ~ ]
🌵"-A" 将用户"start" 设置为这个组的组长
[ root@shawn ~ ]
🌵查看"xing1" 这个组的成员, 第三段参数为组长
[ root@shawn ~ ]
xing1: !: start: song, shawn, start
🌵"-d" 将用户"song" 从组"xing1" 中删除
[ root@shawn ~ ]
正在将用户“song”从“xing1”组中删除
🌵再次查看组成员, 可以发现没有用户"song"
[ root@shawn ~ ]
xing1: !: start: shawn, start
🐼我们可以为组设置密码,然后让非组用户通过命令"newgrp [组名]" 临时切换到组内
🐼并以输入密码的方式获取用户组的权限和特性
🌵先为组"xing1" 设置一个密码
[ root@shawn ~ ]
正在修改 xing1 组的密码
新密码:
请重新输入新密码:
3.newgrp : 切换主组
🐼首先我们制作一个文件"a.txt"
🐼属主"root" , 属组"xing1"
🐼属主和属组对文件都可读可写
🐼那么你想要修改只能是root或者组员
🌵创建一个"a.txt" , 并查看其信息
[ root@shawn ~ ]
[ root@shawn ~ ]
ll / tmp/ a. txt
- rw- r- - r- - 1 root root 0 10 月 28 23 : 40 / tmp/ a. txt
🌵将属组改为组"xing1" , 并查看
[ root@shawn ~ ]
[ root@shawn ~ ]
ll / tmp/ a. txt
- rw- r- - r- - 1 root xing1 0 10 月 28 23 : 40 / tmp/ a. txt
🌵将属组对文件权限改为可读可写, 并查看信息
[ root@shawn ~ ]
chmod 664 / tmp/ a. txt
[ root@shawn ~ ]
ll / tmp/ a. txt
- rw- rw- r- - 1 root xing1 0 10 月 28 23 : 40 / tmp/ a. txt
🌵将用户切换到"song" , 并对文件进行写操作
[ root@shawn ~ ]
[ song@shawn root] $ echo "I am song" >> / tmp/ a. txt
bash: / tmp/ a. txt: 权限不够
🌵可以发现权限不够, 使用"newgrp" 临时加入到组"xing1" 中
[ song@shawn root] $ newgrp xing1
密码:
🌵再对文件进行写操作, 查看发现可以写进去
[ song@shawn root] $ echo "I am song" >> / tmp/ a. txt
[ song@shawn root] $ cat / tmp/ a. txt
I am song
🌵"exit" 可退出临时的组, 退出后再进行写操作就不行了
[ song@shawn root] $ exit
exit
[ song@shawn root] $ echo "I am song" >> / tmp/ a. txt
bash: / tmp/ a. txt: 权限不够