目录
账号和权限管理
账号管理
1. 基本概念
Linux安全模型
3A认证
Authentication:验证用户身份。认证
Authorization:不用用户设置不同权限,授权
Accouting|Audition:审计
当用户登录成功后,系统会自动给用户分配令牌token,令牌包括用户标识和组成员等信息
双因子认证:当用户通过账号和密码登录时,还会验证验证码,这就是双因子认证
Linux是通过用户身份对资源访问进行控制
2. 用户
2.1 基本概念
用户账号
管理员
普通用户
程序用户
UID
用户标识号,唯一,相当于用户身份证
uid可以重复;我们可以创建同一个uid,两个不同的用户名,等于这一个人有两个名字大名和小名,建议不要创建重复的uid,避免出现混乱
GID
组标识号,唯一
linux中都是通过User id(UID)来唯一标识用户的
超级用户 管理员
超级用户,root用户是linux操作系统中的默认的超级用户账号,对本级拥有所有权限,类似与windows中的admin用户
建议:当进行系统管理、维护任务时,才建议使用root用户;日常建议使用普通用户
uid为0
问题:超级管理员是否安装用户名称来定义?
不是,uid=0的用户为超级管理员
程序用户
如bin、ftp、mysql,这些用户一般不允许登录到系统,仅用于维持系统或某个程序的正常运行
cnetos 6 1-499
centos 7 1-999
作用:让程序以用户的方式运行,但是不给登录
普通用户
centos 6 500--60000(值可以调整)
centos 7 1000-60000(值可以调整)
普通用户需要由root用户或者其他管理员用户创建,拥有的权限受到一定限制,处理问题受到限制,一般只在用户自己的目录中拥有完整权限
组账号
基本组(私有组)
附加组(公共组)
组可以理解为小组,是多个用户的集合,统一开通或分配相同的权限
[root@localhost ~]# useradd p1
[root@localhost ~]# id p1 # 查看用户的信息
uid=1001(p1) gid=1001(p1) 组=1001(p1)
[root@localhost ~]#
当我们创建一个用户时,会生成一个和用户同名的组id,并且这个组id为基本组
windows中,我们创建一个用户属于user组
基本组
建立账号时,若灭有指定账户所属的组时,系统会自动建立一个和用户名相同的组,这个组就是私有组(基本组),该组默认只能容纳一个用户
在用户所属组的第一个组称为基本组,它在/etc/passwd文件中指定
基本组:有且仅有一个
默认新建用户时,自动添加同名的组
附加组(公共组)
除了第一个组外的其他组为附加组或公共组,它在/etc/group文件中指定
用户与组的关系
用户表示员工,组表示职位
用户肯定有一个主职位,0或多个兼职位
用户的主要组:用户必须属于一个且仅有一个主要组,linux中默认创建用户时,自动创建和用户名同名的组,作为该用户的主要组;由于此组中只有一个用户,又称为私有组
用户的附加组:一个用户可以属于0或多个附属组,也就是附加组
who
# 查看当前登录的用户信息
[root@localhost ~]# who # 查看当前登录的用户信息
root pts/0 2023-10-30 09:59 (192.168.32.1)
[root@localhost ~]#
[root@localhost ~]# whoami # 查看当前用户
root
[root@localhost ~]#
[root@localhost ~]# who -b # 上次系统启动时间
系统引导 2023-10-30 08:29
[root@localhost ~]#
[root@localhost ~]# who -d # 显示已死的进程
[root@localhost ~]#
2.2 用户账号文件
存放用户信息的文件路径 /etc/passwd
[root@localhost ~]# tail -n 1 /etc/passwd
u1:x:1001:1001::/home/u1:/bin/bash
以":"冒号作为分隔符
u1 用户名
x 密码占位符
1001 uid
1001 gid
:: 中间是空的,这位表示备注信息
/home/u1 家目录的路径
/bin/bash 默认使用的shell解释器类型
/sbin/nologin
不能登录
为什么程序不以root用户登录,而是以程序用户的方式登录呢
因为你不知道该程序中是否有漏洞,root用户权限太高了,为了安全考虑,以程序用户登录
2.3 用户密码文件
存放用户密码的文件路径 /etc/shadow
wy:$6$U9dDFPQ.zXNmsX.w$9uB9yn0YMRNL2NK1DJt4m32o2u/rwxGHK53l4OZSzIaGAKa7w4I8Z8Jpaca9BSM/1U8iTcNmkvuGePE5d22Fm0::0:99999:7:::
sshd:!!:19653::::::
以":"冒号作为分隔符
1.wy 用户名
2.$6$U9dDFPQ.zXNmsX.w$9uB9yn0YMRNL2NK1DJt4m32o2u/rwxGHK53l4OZSzIaGAKa7w4I8Z8Jpaca9BSM/1U8iTcNmkvuGePE5d22Fm0 # 以某种加密算法的密码,(一般用sha512)加密
centos 7 没有这种算法
centos 6或8 可以通过工具生成密码
*或!! 没有设置密码,密码被锁定,无法登录用户
:空: 密码为空,不需要密码,可以直接登录
3.19653 最近一次修改密码的时间,它是以1970年1月1日开始计算,这是linux诞生的第一年
使用date计算实际修改时间
date -d "1970-1-1 19653 days"
[root@localhost ~]# date -d "1970-1-1 19653 days"
2023年 10月 23日 星期一 00:00:00 CST
[root@localhost ~]#
4.0 最小修改密码间隔时间
0表示没有间隔时间限制
3表示如果现在修改密码,三天后才能再次修改密码
5.99999 密码有效期,99999/365=273,有效期为273年,可以认为是永久期限
6.7 密码到期提醒,7表示密码将要到期的前7天提醒你
7. 密码过期后的宽限天数,表示密码过期后还能使用多久,到期后,该账号会被锁定,无法登录
8. 账号失效时间,从1970-1--1开始算起,如果账号在该字段规定时间之外时,不论密码是否过期,都将无法使用该账号;该字段通过用于收费服务系统中;用途:当公司有项目时,创建的用户,当项目结束时,账号失效
9. 保留字段
2.4 创建用户账号 useradd
原理
一般来说,使用命令修改文件内容(/etc/passwd)都是临时性的,直接修改配置文件内容是永久性的
但是,我们在使用直接修改配置文件的这种方式时,容易把内容修改错,为了解决这个问题,所以系统中有些命令可以实现修改配置文件的作用,这样不容易出错
- 创建用户,本质上就是在/etc/passwd、/etc/shadow文件的末尾添加该用户的账号信息
- 创建用户时,若未指明用户的宿主目录,则在/home目录下自动创建和用户账号同名的宿主目录,还可以在该用户目录中创建各种初始配置文件
- 在创建用户时,若没有指明用户所属的组,则自动创建与该用户同名的基本组(私有组)账号,该组账号信息保存在/etc/group和/etc/shadow文件中
格式
useradd [选项] 用户名
选项
-u 指定用户的UID号,要求该UID号未被其他用户使用
-d 指定用户的宿主目录位置(与-M一起使用时,-d不生效)
-M 不创建宿主目录,即使/etc/login.defs中已设定要建立宿主目录
-s 指定用户的登录shell解释器类型,默认为/bin/bash、/sbin/nologin
-e 指定用户的账户失效时间可使用yyyy-mm-dd的日期格式
-g 指定用户的基本组名(或使用GID号)
-G 指定用户的附加组名(或使用GID号)
-r 创建系统用户(=程序用户),随机生成程序用户
-c 备注信息
用法
# 创建u1用户,指定uid为2000,备注为u1
useradd u1 -u 2000 -c u1
[root@localhost opt]# useradd u1 -u 2000 -c u1
[root@localhost opt]# tail -n 1 /etc/passwd
u1:x:2000:2000:u1:/home/u1:/bin/bash
[root@localhost opt]#
# 创建u2用户,u2为系统用户,备注为u2
[root@localhost opt]# useradd u2 -r -c u2
[root@localhost opt]# tail -n 2 /etc/passwd
u1:x:2000:2000:u1:/home/u1:/bin/bash
u2:x:990:985:u2:/home/u2:/bin/bash
[root@localhost opt]#
#创建u3用户,指定宿主目录为/opt/u3-home,指定shell为/sbin/nologin,指定账号失效时间为2023-10-31
[root@localhost opt]# useradd u3 -d /opt/u3-home/ -s /sbin/nologin -e 2023-10-31
useradd:警告:此主目录已经存在。
不从 skel 目录里向其中复制任何文件。
正在创建信箱文件: 文件已存在
[root@localhost opt]# tail -n 3 /etc/passwd
u1:x:2000:2000:u1:/home/u1:/bin/bash
u2:x:990:985:u2:/home/u2:/bin/bash
u3:x:2001:2001::/opt/u3-home/:/sbin/nologin
[root@localhost opt]#
# 创建u4用户,添加基本组为u1
useradd u4 -g u1
[root@localhost opt]# useradd u4 -g u1
[root@localhost opt]# id u4
uid=2002(u4) gid=2000(u1) 组=2000(u1)
# 创建u5用户,添加附加组u2
[root@localhost opt]# useradd u5 -G u2
[root@localhost opt]# id u5
uid=2003(u5) gid=2003(u5) 组=2003(u5),985(u2)
[root@localhost opt]#
# 创建u6用户,设置uid为2004,设置宿主目录为/opt/u6-home,设置shell编辑器为/bin/bash,设置账号失效时间为2023-10-31,设置基本组为u3,设置附加组为u1,设置备注u6
useradd u6 -u 2004 -d /opt/u6-home -s /bin/bash -e 2023-10-31 -g u3 -G u1 -c u6
[root@localhost opt]# useradd u6 -u 2004 -d /opt/u6-home -s /bin/bash -e 2023-10-31 -g u3 -G u1 -c u6
[root@localhost opt]# tail -n 1 /etc/passwd
u6:x:2004:2001:u6:/opt/u6-home:/bin/bash
[root@localhost opt]# tail -n 1 /etc/shadow
u6:!!:19660:0:99999:7::19661:
[root@localhost opt]# id u6
uid=2004(u6) gid=2001(u3) 组=2001(u3),2000(u1)
useradd作用
- 新建用户
- 修改新建用户的属性
/etc/skel 家目录的模版路径 ,用户的个性化模板
2.5 设置用户密码 passwd
选项
-d 清空指定用户的密码,使得用户不需要密码即可登录系统
-l 锁定用户账号
-S(大写s) 查看用户账号状态
-u 解锁用户账号密码
用法
passwd 默认修改当前用户的密码
[root@localhost opt]# passwd # 人机交互式,修改密码
更改用户 root 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
[root@localhost opt]#
# 免交互修改密码
echo "123" | passwd root --stdin
[root@localhost opt]# echo "123" | passwd root --stdin
更改用户 root 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@localhost opt]#
# 清空用户密码,使得该用户可以不需要密码登录系统(免密登录),一般不建议这么做,不安全
[root@localhost opt]# passwd wy -d # 清空密码
清除用户的密码 wy。
passwd: 操作成功
[root@localhost opt]# su wy # 免密登录
[wy@localhost opt]$
[root@localhost opt]# tail -n 10 /etc/shadow
wy::19660:0:99999:7::: # wy::19660 密码为空,免密登 录
# 锁定、查看、解锁用户账号状态
[root@localhost opt]# passwd wy -l # passwd -l 锁定用户
锁定用户 wy 的密码 。
passwd: 操作成功
[root@localhost opt]# passwd wy -S
wy LK 2023-10-30 0 99999 7 -1 (密码已被锁定。)
[root@localhost opt]# passwd -u wy
解锁用户 wy 的密码。
passwd: 操作成功
[root@localhost opt]# passwd -S wy
wy PS 2023-10-30 0 99999 7 -1 (密码已设置,使用 SHA512 算法。)
[root@localhost opt]#
[root@localhost opt]# passwd u1 -u
解锁用户 u1 的密码。
passwd: 警告:未锁定的密码将是空的。
passwd: 不安全的操作(使用 -f 参数强制进行该操作)
[root@localhost opt]# passwd u1 -uf # -f 强制
解锁用户 u1 的密码。
passwd: 操作成功
[root@localhost opt]#
2.6 修改已有用户的密码信息 chage
用法
chage u1 # 人机交互式更改用户属性,可以更改多个属性
# 修改用户的单个属性
chage u1 -m 3
u1::19660:0:99999:7:::
[root@localhost opt]# chage u1 -m 3
u1::19660:3:99999:7:::
2.7 修改用户账号已有属性 usermod
选项
-u 修改uid
-d 修改宿主目录
-e 修改账号失效时间
-s 修改shell
-g 修改基本组
-G 修改附加组
-l 修改用户名
-L 修改用户状态为锁定
-U 修改用户状态为解锁
用法
# 修改uid
[root@localhost opt]# usermod u1 -u 2006
u1:x:2006:2000:u1:/home/u1:/sbin/nologin
# 修改已有用户的用户名
usermod -l 新用户名 旧用户名
[root@localhost opt]# usermod -l u1-1 u1
[root@localhost opt]# tail -n 6 /etc/passwd
u1-1:x:2006:2000:u1:/home/u1:/sbin/nologin
2.8 删除用户账号 userdel
选项
-r 连家目录一块删除
用法
# 删除用户,-r连其家目录一起删除
[root@localhost home]# ls
p1 u1 u4 u5 wy wy11 wy22
[root@localhost home]# userdel u5 -r
[root@localhost home]# ls
p1 u1 u4 wy wy11 wy22
[root@localhost home]#
3. 用户账号的初始配置文件
下面三个文件从/etc/skel复制而来
开机启动运行
.bashrc(当前用户生效,局部生效)
.bashprofile(当前用户生效,局部生效)
/etc/profile(全部用户生效,全局生效)
关机运行
.bash_logout
4. 组
4.1 组账号文件
/etc/group 保存组账号基本信息
/etc/gshadow 保存组账号的密码
[root@localhost home]# tail /etc/group
u1:x:2000:u6
u1 组账号名
x 密码占位符
2000 gid,组id
u6 组成员,可以有多个,这是附加组的成员
4.2 添加组账号 groupadd
格式
groupadd [-g --gid] 组账号名
用法
# groupadd -g 添加组账号
[root@localhost home]# groupadd -g 1001 market
market:x:1001:
[root@localhost home]# groupadd --gid 1002 store
store:x:1002:
4.3 添加/删除组成员 gpasswd
格式
gpasswd [选项] 用户名 组账号名
选项
-a(add) 添加一个用户成员
-d(delete) 删除一个用户成员
-M 定义组成员列表,以逗号分割,批量添加成员
用法
# 添加一个组成员
[root@localhost home]# gpasswd -a u4 u1
正在将用户“u4”加入到“u1”组中
u1:x:2000:u6,u4
# 删除一个组成员
[root@localhost home]# gpasswd -d u4 u1
正在将用户“u4”从“u1”组中删除
u1:x:2000:u6
# 批量添加组成员
gpasswd -M u4,u3 u1
[root@localhost home]# gpasswd -M u4,u3,u2 u1
[root@localhost home]# tail /etc/group
u1:x:2000:u4,u3,u2
4.4 删除组账号 groupdel
格式
groupdel 组账号名
用法
# 删除组
[root@localhost home]# groupdel market
4.5 查询账号信息
4.5.1 查询用户所属的组 groups
格式
groups [用户名]
用法
[root@localhost home]# groups # 查看当前用户所属的组
root
[root@localhost home]# groups u2 # 查看u2用户所属的组
u2 : u2 u1
4.5.2 查询用户身份标识 id
格式
id [用户名]
用法
[root@localhost home]# id # 查看当前用户的标识信息
uid=0(root) gid=0(root) 组=0(root)
[root@localhost home]# id u2 # 查看u2的标识信息
uid=990(u2) gid=985(u2) 组=985(u2),2000(u1)
4.6 查询账号信息
4.6.1 finger
作用
查询用户账号的详细信息,但是需要安装
格式
finger [用户名]
用法
[root@localhost yum.repos.d]# finger # 查看当前用户账号的详细信息
Login Name Tty Idle Login Time Office Office Phone Host
root root pts/1 Oct 30 22:42 (192.168.32.1)
[root@localhost /]#
[root@localhost yum.repos.d]# finger u2 # 查看u2账号的详细信息
Login: u2 Name: u2
Directory: /home/u2 Shell: /bin/bash
Never logged in.
No mail.
No Plan.
[root@localhost /]#
4.6.2 w
[root@localhost yum.repos.d]# w # 查看已登录到主机的用户的信息
22:59:30 up 12:49, 2 users, load average: 0.05, 0.06, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.32.1 22:57 1:36 0.08s 0.08s -bash
root pts/1 192.168.32.1 22:42 2.00s 0.20s 0.00s w
[root@localhost /]#
4.6.3 who
[root@localhost /]# who # 查询已登录到主机的用户信息
root pts/0 2023-10-30 22:57 (192.168.32.1)
root pts/1 2023-10-30 22:42 (192.168.32.1)
[root@localhost /]#
4.6.4 users
用法
[root@localhost /]# users # 查询已登录到主机的用户信息
root root # 查看当前一共登录了几个用户
[root@localhost /]# # 相当于打开了几个终端
4.6.5 whoami
用法
[root@localhost /]# whoami # 查看当前用户是谁
root
[root@localhost /]#
权限管理
1. 基本概念
文件或目录的访问权限
读 read r 文件:允许查看文件内容
目录:显示目录列表
写 write w 文件:允许修改文件内容
目录:允许在目录中新建、移动、删除文件或子目录
执行 exe x 文件:允许运行程序,一般对于可执行程序而言,一般是绿色的
目录:允许切换目录
一个文件的权限需要区别三类人
1 文件的所有者 属主 用户账号
2 文件的所在组 属组 组账号
3 其他人 other 其他用户
rwx rwx rwx
属组 属组 其他
"-" 表示没有权限
rwx rw-x r--
这个是象征性表示,不代表你没有真正的权限,看实际情况
root用户最大,即使什么权限都没有,还是可以正常操作
-rw-r--r--. 1 root root 2.1K 10月 26 23:11 passwd
- 表示普通文件
rw- 文件所有者拥有读写权限
r-- 文件所在组拥有读权限
r-- 其他用户拥有读权限
1 该文件只有1个硬连接
root 文件所有者
root 文件所在组
2.1K 文件大小
10月 26 23:11 文件最后一次修改时间
passwd 文件名
真 1
假 0
r w x
0 0 1 1
0 1 0 2
1 0 0 4
0 1 1 3
1 0 1 5
1 1 1 7
目录的执行权限
x是目录的最小权限,目录必须有x,就算目录有其他权限,没有x权限,也无法进行操作
一个普通文件可以被删除,和这个文件本身权限有关么?
这个文件可不可以删除,只和存放该文件的目录有关
2. 更改文件或目录的权限 chmod
格式
chmod [选项] 值 文件或目录名
选项
-R 递归修改指定目录下所有子文件的权限
[ugoa]
a all
u user
g group
o other
777
[+-=]
用法
#修改文件的权限为777
[root@localhost test]# chmod 777 11
[root@localhost test]# ll
-rwxrwxrwx 1 root root 10485760 10月 29 21:51 11
# 修改文件的权限为000
[root@localhost test]# chmod 000 11
[root@localhost test]# ll
总用量 20496
---------- 1 root root 10485760 10月 29 21:51 11
chmod a=x test
chmod a+rwx test
面试题
执行 cp /etc/issue /data/dir/ 所需要的最小权限是什么?
cp x
etc x
issue r
data x
dir wx
3. 更改文件的归属chown
作用
改变文件的属主和属组,改变文件权限
选项
-R 递归修改指定目录下所有子文件的归属(属主和属组)
用法
# 更改11的归属为u2,u2.u2
[root@localhost test]# chown u2.u2 11
[root@localhost test]# ll
---------- 1 u2 u2 10485760 10月 29 21:51 11
# u2:u2
[root@localhost test]# chown u2:u2 a
[root@localhost test]# ll
-rw-r--r-- 1 u2 u2 2 10月 30 08:30 a
chown .lisi test
chown lisi test
4. mask
作用
决定了文件初始权限
文件最大权限 666
文件夹最大权限 777
文件权限是偶数,文件默认没有执行权限
用法
# 查看当前反掩码
[root@localhost test]# umask
0022
[root@localhost test]#
# 修改当前的反掩码
[root@localhost test]# umask 013
[root@localhost test]# umask
0013
[root@localhost test]#
umask 当前反掩码 0022
第一个0 三种特殊权限
5. 三种特殊权限
5.1 suid 属主
passwd 多了一个s权限
任何人使用这个命令的时候,当做这个命令的属主,我是这个文件的拥有者
chmod u+s /usr/bin/vim # 给vim添加s权限,表示我是vim的属主,vim执行任何文件,我就是任何文件的拥有者
chmod u-s /usr/bin/vim # 给vim删除s权限
sgid 属组
chmod g+s /usr/bin/vim # 给vim添加s权限,表示我是vim的属组,vim执行任何文件,我就是任何文件的属组
chmod g-s /usr/bin/vim # 给vim删除s权限
5.2 guid
5.3 sticky 粘贴位
只能对文件夹使用
当给目录设置 sticky位,只有文件 的所有者或root用户可以删除该文件
面试题
/tmp权限中多了一个t权限
除了文件所有者、超级管理员外,其他人不能删除文件
/tmp
tmp文件夹的作用是存放所有用户的临时文件夹
chmod o+t /opt/aa
chmod o-t /opt/aa
6. 访问控制列表 ACL
选项
-m 更改文件的访问控制列表
-x 删除指定用户的访问控制列表
-b 直接清空acl访问控制列表
用法
# 给 lisi 添加读写权限
setfacl -m u:lisi:rw passwd
u 用户
lisi 指定用户名
rw 权限
passwd 文件名
# 查看文件的访问控制列表
getfacl passwd
# 删除acl规则
setfacl -x u:zhangsan passwd
# 清空acl访问控制列表
setfacl -b passwd
总结
系统用户的类型
1 普通用户
2 管理员
3 程序用户
uid范围
centos 6
普通用户 500-60000
系统用户 1-499
centos 7
普通用户 1000-60000
系统用户 1-999
基本组 有且唯一
附加组 可有可无,可有多个
/etc/passwd 用户信息
/etc/shadow 密码信息
useradd
-s
/bin/bash
/sbin/nologin
-u
-M
-d
-e
-g
-G
-r
passwd
-d
-l
-S
-u
usermod
-l
-L
-U
groupadd
gpasswd
-a
-d
-M
finger
w
users
who
id
chmod
rwx
-R
chown
-R
umask
三种特殊权限
访问acl控制表
标签:opt,管理,账号,u1,用户,权限,root,localhost From: https://www.cnblogs.com/wuyao-bk/p/17810657.html