1.Linux 12位权限管理体系
1.1 权限管理概述
- Linux通过rwx3种权限控制系统与保护系统,组成9位权限。
- Linux权限体系中还有3位特殊权限,组合起来就是12位权限体系。
- Linux这简单的rwx控制整个Linux系统的安全,权限与用户共同组成Linux系统的安全防护体系
1.2 Linux权限计算
1)rwx
权限 | 含义 |
r | read 是否可读 |
w | write 是否可写 |
x | execute 是否可执行(一般是命令,脚本) |
2)何为9位权限?
- Linux下面任何一个文件/目录与用户的关系有3中关系。
文件/目录与用户的关系 | 含义 |
所有者 | 这个文件或目录属于某个用户(所有者) |
用户组(家庭) | 这个文件或目录属于某个用户组(家庭) |
其他人(陌生人) | 这个文件或目录不属于某个用户 也不属于这个用户组 |
- 如何快速知晓文件或目录的所有者情况
- 9位权限与用户关系
- 确定你当前是什么用户
- 确认用户与文件关系(所有者,用户组,其他人)
- 根据关系获取对应的权限
3)如何计算权限❣️❣️❣️❣️❣️
权限 | 含义 | 权限对应的数字 |
r | read 是否可读 | 4 |
w | write 是否可写 | 2 |
x | execute 是否可执行(一般是命令,脚本) | 1 |
- | 没有权限 | 0 |
-rw-r--r--. 1 root root 0 7月 18 08:53 oldboy01.txt
420400400
6 4 4
oldboy01.txt的权限是644
-rwxr-xr-x 755
-r--r--r-- 444
-r--rw-rw- 466
644 -rw-r--r--
750 -rwxr-x---
700 -rwx------
600 -rw-------
1.3 权限与文件,目录
1)概述❣️❣️❣️
权限 | 文件 | 目录(教室) |
r | 是否可以读取文件内容 | 是否可以查看目录内容,需要x权限配合 |
w | 是否可以修改文件内容,一般还需要r权限配合 | 是否可以在目录中创建,删除,重命名文件权限,需要x权限配合 |
x | 是否可以执行文件,(命令,脚本),一般还需要r权限配合 | 是否可以进入目录,是否可以访问目录下文件属性 |
2)测试文件权限
- 通过root修改权限,gq用户测试权限
mkdir -p /gq/
echo 'hostname' >/gq/gq.sh
ll /gq/gq.sh
chown gq.gq /gq/gq.sh
chmod u=r /gq/gq.sh
- root用户
- oldboy用户(普通用户)
chmod修改权限
#1.通过数字修改(常用)
chmod 666 oldboy.sh
#2.通过字符修改(精确)
u user所有者
g group 用户组部分
o other 其他人
chmod u-x oldboy.sh
ll oldboy.sh
-rw-r--r--. 1 oldboy oldboy 9 7月 25 10:36 oldboy.sh
chmod u=x oldboy.sh
ll oldboy.sh
---xr--r--. 1 oldboy oldboy 9 7月 25 10:36 oldboy.sh
案例01 给/etc/rc.d/rc.local 增加执行权限
chmod ggo+x /etc/rc.d/rc.local
chmod U+x,g+x,o+x /etc/rc.d/rc.local
chmod a+x /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local #掌握这个即可
a)测试文件的r权限
- root 修改 chmod u=r oldboy.sh
- oldboy 查看
ll oldboy.sh
-r--r--r--. 1 oldboy oldboy 9 7月 25 10:36 oldboy.sh
cat oldboy.sh
hostname
echo id >> oldboy.sh #没有w权限导致的
-bash: oldboy.sh: 权限不够
./oldboy.sh #没有权限导致的
-bash: ./oldboy.sh: 权限不够
b)测试文件的w权限
- root修改 chmod u=w oldboy.sh
- oldboy 查看
ll oldboy.sh
--w-r--r--. 1 oldboy oldboy 9 7月 25 10:36 oldboy.sh
cat oldboy.sh
cat:oldboy.sh: 权限不够
echo id >>oldboy.sh
echo id >>oldboy.sh
echo id >>oldboy.sh
cat oldboy.sh
cat:oldboy.sh: 权限不够
./oldboy.sh
-bash: ./oldboy.sh: 权限不够
- 对于文件来说只有w权限不够,需要有r权限配合
c)测试文件的x权限
- root 修改 chmod u=x oldboy.sh
- oldboy查看
ll oldboy.sh
---xr--r--. 1 oldboy oldboy 9 7月 25 10:36 oldboy.sh
./oldboy.sh
bash: ./oldboy.sh: 权限不够
cat oldboy.sh
cat: oldboy.sh: 权限不够
echo whoami >>oldboy.sh
-bash: oldboy.sh: 权限不够
- x权限需要有r配合
- 增加了rx权限后测试
ll oldboy.sh
-r-xr--r--. 1 oldboy oldboy 9 7月 25 10:36 oldboy.sh
cat oldboy.sh
hostname
id
id
id
pwd
./oldboy.sh
uid=1000(oldboy) gid=1000(oldboy) 组=1000(oldboy) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
uid=1000(oldboy) gid=1000(oldboy) 组=1000(oldboy) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
uid=1000(oldboy) gid=1000(oldboy) 组=1000(oldboy) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
uid=1000(oldboy) gid=1000(oldboy) 组=1000(oldboy) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
/oldboy
/oldboy/oldboy.sh
uid=1000(oldboy) gid=1000(oldboy) 组=1000(oldboy) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
uid=1000(oldboy) gid=1000(oldboy) 组=1000(oldboy) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
uid=1000(oldboy) gid=1000(oldboy) 组=1000(oldboy) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
uid=1000(oldboy) gid=1000(oldboy) 组=1000(oldboy) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
/oldboy
3) 测试目录权限
- 环境
mkdir -p /oldboy/mode-dir/
touch /oldbboy/mode-dir/oldboy{10..20}.txt
chown -R oldboy.oldboy /oldboy/mode-dir/
ll -d /oldboy/mode-dir/
drwxr-xr-x. 2 oldboy oldboy 226 7月 25 11:07 /oldboy/mode-dir/
ll /oldboy/mode_dir/
-rw-r--r--. 1 oldboy oldboy 0 7月 25 11:07 oldboy10.txt
-rw-r--r--. 1 oldboy oldboy 0 7月 25 11:07 oldboy11.txt
-rw-r--r--. 1 oldboy oldboy 0 7月 25 11:07 oldboy12.txt
-rw-r--r--. 1 oldboy oldboy 0 7月 25 11:07 oldboy13.txt
-rw-r--r--. 1 oldboy oldboy 0 7月 25 11:07 oldboy14.txt
-rw-r--r--. 1 oldboy oldboy 0 7月 25 11:07 oldboy15.txt
-rw-r--r--. 1 oldboy oldboy 0 7月 25 11:07 oldboy16.txt
-rw-r--r--. 1 oldboy oldboy 0 7月 25 11:07 oldboy17.txt
-rw-r--r--. 1 oldboy oldboy 0 7月 25 11:07 oldboy18.txt
-rw-r--r--. 1 oldboy oldboy 0 7月 25 11:07 oldboy19.txt
-rw-r--r--. 1 oldboy oldboy 0 7月 25 11:07 oldboy20.txt
- 测试r
chmod u=r mode_dir/
oldboy测试
- 目录的r权限,需要x权限配合
- 测试w
- 没有w权限
[oldboy@Gq oldboy]$ ll -d mode-dir/
dr-xr-xr-x. 2 oldboy oldboy 226 7月 25 11:07 mode-dir/
[oldboy@Gq oldboy]$ ls mode-dir/
oldboy10.txt oldboy12.txt oldboy14.txt oldboy16.txt oldboy18.txt oldboy20.txt
oldboy11.txt oldboy13.txt oldboy15.txt oldboy17.txt oldboy19.txt
[oldboy@Gq oldboy]$ rm -fr mode-dir/*
rm: 无法删除"mode-dir/oldboy10.txt": 权限不够
rm: 无法删除"mode-dir/oldboy11.txt": 权限不够
rm: 无法删除"mode-dir/oldboy12.txt": 权限不够
rm: 无法删除"mode-dir/oldboy13.txt": 权限不够
rm: 无法删除"mode-dir/oldboy14.txt": 权限不够
rm: 无法删除"mode-dir/oldboy15.txt": 权限不够
rm: 无法删除"mode-dir/oldboy16.txt": 权限不够
rm: 无法删除"mode-dir/oldboy17.txt": 权限不够
rm: 无法删除"mode-dir/oldboy18.txt": 权限不够
rm: 无法删除"mode-dir/oldboy19.txt": 权限不够
rm: 无法删除"mode-dir/oldboy20.txt": 权限不够
[oldboy@Gq oldboy]$ touch mode-dir/lidao.txt
touch: 无法创建"mode-dir/lidao.txt": 权限不够
- 给W权限
[oldboy@Gq oldboy]$ ls mode-dir/
oldboy10.txt oldboy12.txt oldboy14.txt oldboy16.txt oldboy18.txt oldboy20.txt
oldboy11.txt oldboy13.txt oldboy15.txt oldboy17.txt oldboy19.txt
[oldboy@Gq oldboy]$ touch mode-dir/lidao.txt
[oldboy@Gq oldboy]$ ls mode-dir/
lidao.txt oldboy11.txt oldboy13.txt oldboy15.txt oldboy17.txt oldboy19.txt
oldboy10.txt oldboy12.txt oldboy14.txt oldboy16.txt oldboy18.txt oldboy20.txt
[oldboy@Gq oldboy]$ \rm -f mode-dir ˇ
[oldboy@Gq oldboy]$ ll mode-dir/
[oldboy@Gq oldboy]$ ll mode-dir/
总用量 0
- 测试X
4)小结
权限 | 文件 | 目录(教室) |
---|---|---|
r | 是否可以读取文件内容 | 是否可以查看目录内容,需要x权限配合 |
w | 是否可以修改文件内容,一般还需要r权限配合 | 是否可以在目录中创建,删除,重命名文件权限,需要rw权限配合 |
x | 是否可以执行文件,(命令,脚本),一般还需要r权限配合 | 是否可以进行入目,是否可以访问目录下文件属性 |
1.4 删除文件需要什么权限?
- oldboy目录删除文件测试
测试环境(root)
mkdir mode-dir
chown oldboy.oldboy mode-dir #这里不加-R
touch mode-dir/root{01 ʡ 10}.txt
问: oldboy能否删除mode-dir下面属于root的文件?
删除文件看文件所在目录权限 mode-dir目录 755,所有者是oldboy
可以删除
温馨提示 :删除/创建文件,需要看文件所在目录的权限.用户对目录是否有rwx权限.
- 删除文件测试案例
当前环境及条件如下:
touch /oldboy/oldboy-all-mode.txt
chmod 777 /oldboy/oldboy-all-mode.txt
chown oldboy.oldboy /oldboy/oldboy-all-mode.txt
ll -d /oldboy/ 目录属于root 755
ll -d /oldboy/
drwxr-xr-x. 5 root root 4096 7月 25 11:21 /oldboy/
问:oldboy能否删除oldboy-all-mode.txt文件???
无法删除
ll -d /oldboy/
drwxr-xr-x. 5 root root 4096 7月 25 11:21 /oldboy/
因为没有w权限 所以无法删除.
ll -d /oldboy/
drwxr-xr-x. 5 root root 4096 7月 25 11:21 /oldboy/
因为没有w权限 所以无法删除.
1.5 Permission denied故障排查 ⭐⭐⭐⭐
- oldboy用户
[oldboy@Gq oldboy]$ cat /etc/shadow
cat: /etc/shadow: 权限不够
[oldboy@Gq oldboy]$ ls -l /root/
ls: 无法打开目录/root/: 权限不够
[oldboy@Gq oldboy]$ echo '#oldboy' Ҵ /etc/passwd
-bash: /etc/passwd: 权限不够
[oldboy@Gq oldboy]$ touch /etc/oldboy-file.txt
touch: 无法创建"/etc/oldboy-file.txt": 权限不够
- 分析权限拒绝的流程
- 缕清用户与文件/目录权限关系,你要知晓你对于这个文件或目录拥有什么权限?
-
分析缺少了什么权限导致的问题 ? 根据操作分析是与文件的权限有关 , 还是目录的权限有关 ?
-
得出结论 , 缺少了文件 xxxx 权限 , 目录的 xxxx 权限导致的故障 .
日常操作 | 需要的权限 |
---|---|
查看文件的内容 | 文件要有r权限 |
编辑或修改文件内容 | 文件要有rw权限。 |
执行脚本/命令 | 文件需要有rx权限 |
查看目录内容 | 目录要有rx权限 |
创建文件,删除文件 | 文件所在目录要有rwx权限 |
重命名 | 文件所在目录要有rwx权限 |
1.6 系统默认权限(了解)
-
Linux 系统通过 umask 命令控制文件和目录的默认权限 .
-
如何控制的 ?
文件: 666 目录: 777 减去umask的值,文件umask如果某一位是奇数,需要减去umask后这一位上+1 文件默认权限: 666 - 022 ------- 644 目录默认权限: 777 - 022 ------- 755 021 文件默认权限: 666 - 021 ------- 645 +1 646 目录默认权限: 777 - 021 ------- 756
1.7 Linux权限控制与系统安全(了解)
1)概述
- 通过权限控制让系统安全:
- 搭建网站来说,服务器权限设置
- 最小化原则:既要保证网站可以正常访问,也要保证网站安全。
- 推荐的网站的权限配置为:
- 文件 644 root root
- 目录 755 root root
- 网站在运行的时候需要用户:这个用户不推荐是root,推荐自己/自动创建虚拟用户www/nginx.
2) 单台机器
- 网站运行的时候是www用户,网站程序代码/app/code/www 目录,为例如何设置权限?
#01 . /app/code/www 目录 文件和目录所有者 root root (查看权限) 文件和目录权限 644 755 #02. /app/code/www/upload 上传目录 文件和目录所有者 www www #如果不修改,则用户无法上传文件到upload目 录下面(touch upload/lidao.avi). 文件和目录权限 644 755 #03. 控制用户上传指定类型的文件 #04. 只能上传,不能执行.
3) 集群
网站权限规划——网站集群 - 通过权限控制让系统安全:
1.8 三个特殊权限
- 目标:知晓特殊权限及例子。
-
特殊权限之 setuidsuid4: 运行这个命令的时候相当于是这个命令的 所有者 的权限 . 例子 passwd 命令
-
特殊权限之 sticky( 粘滞位) 1: 对于包含 sticky 权限的目录 ,每个用户都可以在目录下面创建内容 , 但是每个用户只能管理自己的文件 .
-
特殊权限之 setgidguid2: 运行这个命令的时候相当于是这个命令的用户组 的权限 .
- 如何设置
chmod u+s /bin/rm
chmod o+t /tmp/
/bin/rm原始权限755 增加setuid
chmod 4755 /bin/rm/
chmod 1777 /tmp/
- 核心掌握:
- /bin/passwd和/tmp/s和t含义即可
1.9 Linux特殊属性
- 目的:预防重要文件或命令被修改
- lsattr 查看这种特殊属性
- chatrr 修改这种特殊属性
- a属性 append 只能追加
- i属性 immutable 不朽的,无法被毁灭的。
chattr +a oldboy.txt #-a
chattr +i oldboy.txt #-i