1. Linux12位权限管理体
1.1 权限管理概述
- Linux通过rwx3种权限控制系统与保护系统,组成9位权限.
- Linux权限体系中还有3位特殊权限,组合起来就是12位权限体系.
- Linux这简单的rwx控制整个Linux系统的安全,权限与用户共同组成Linux系统的安全防护体系.
1.2 Linux权限计算
2.0 rwx
权限 | 含义 |
---|---|
r | read 是否可读 |
w | write 是否可写 |
x | execute 是否可执行(一般是命令,脚本) |
2.1 何为9位权限?
- Linux下面任何一个文件/目录与用户的关系有3种关系
文件/目录与用户的关系 | 含义 |
---|---|
所有者 | 这个文件或目录属于某个用户(所有者)。你自己 |
用户组(家庭) | 这个文件或目录属于某个用户组(家庭)。家人。 |
其他人(陌生人) | 这个文件或目录不属于某个用户 也不属于这个用户组。隔壁老王 |
- 如何快速知晓文件或目录的所有者情况
- 9位权限与用户关系
- 确定你当前是什么用户
- 确认用户与文件关系(所有者,用户组,其他人)
- 根据关系获取对应的权限
2.2 如何计算权限
人们为了更加方便的使用权限,于是给每个权限字母设置了一个对应的数字,通过数字表示对应的权限。
权限 | 含义 | 权限对应的数字 |
---|---|---|
r | read 是否可读 | 4 |
w | write 是否可写 | 2 |
x | execute 是否可执行(一般是命令,脚本) | 1 |
- | 没有权限 | 0 |
-rw-r--r--. 1 root root 0 7月 18 08:53 oldboy01.txt
420 400 400
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-------
2.3 修改权限
chmod命令: change mode 使用数字或字母形式修改权限。
chown命令: change owner 修改文件所有者,用户组。
# 修改oldboy.txt的权限为755.
chmod 755 oldboy.txt # 修改oldboy.txt所有者和用户组为oldboy(存在)。
chown oldboy.oldboy oldboy.txt
chmod 基于字符形式的权限设置:
chmod u+rw oldboy.txt
ll oldboy.txt
chmod u+rw,g+r,o+r oldboy.txt
ll oldboy.txt
-rw-r--r--. 1 1888 1888 0 8月 22 17:27 oldboy.txt
- 案例:给/etc/rc.d/rc.local(所有位置)增加执行权限
# chmod u+x,g+x,o+x /etc/rc.d/rc.local
# chmod ugo+x /etc/rc.d/rc.local
# chmod a+x /etc/rc.d/rc.localchmod +x /etc/rc.d/rc.local 最后的必会。
-R 改所有(危险)
chmod字符形式说明:主要掌握增加执行权限即可,其他情况一般使用数字形式即可。
2. 权限与文件,目录
1. 概述
权限 | 文件 | 目录(教室) |
---|---|---|
r | 是否可以读取文件内容 | 是否可以查看目录内容,需要x权限配合 |
w | 是否可以修改文件内容,一般还需要r权限配合. | 是否可以在目录中创建,删除,重命名文件权限,需要x权 限配合 |
x | 是否可以执行文件,(命令,脚本),一般还需要r权限 配合. | 是否可以进入目录,是否可以访问目录下文件属性 |
2. 测试文件权限
- 通过root修改权限,oldboy用户测试权限
mkdir -p /oldboy-mode/
echo 'hostname' > /oldboy-mode/oldboy.sh
ll /oldboy-mode/oldboy.sh
chown oldboy.oldboy /oldboy-mode/oldboy.sh
chmod 777 /oldboy-mode/oldboy.sh
- root用户整体测试读,写,执行
[root@myvps oldboy-mode]# ll oldboy.sh
-rwxrwxrwx. 1 1888 1888 9 9月 9 16:22 oldboy.sh
# 读取权限
[root@myvps oldboy-mode]# cat oldboy.sh
hostname
# 写入权限
[root@myvps oldboy-mode]# echo 'whoami' >>oldboy.sh
# 执行权限
[root@myvps oldboy-mode]# /oldboy-mode/oldboy.sh
myvps
root
[root@myvps oldboy-mode]# ./oldboy.sh
myvps
root
前提要有x
-
root 用户-修改权限
root 修改 chmod u=r oldboy.sh
![image-20240909215404738](1. Linux12位权限管理体.assets/image-20240909215404738.png)
- oldboy 查看
![image-20241013214942262](1. Linux12位权限管理体.assets/image-20241013214942262.png)
[oldboy@myvps oldboy-mode]$ cat oldboy.sh
hostname
whoami
pwd
whoami
[oldboy@myvps oldboy-mode]$ ll
总用量 4
-r-----r--. 1 1888 1888 27 10月 13 15:55 oldboy.sh
[oldboy@myvps oldboy-mode]$ echo 'pwd' >>oldboy.sh # 没有 w权限导致的
-bash: oldboy.sh: 权限不够
[oldboy@myvps oldboy-mode]$ ./oldboy.sh # 没有 x权限导致的
-bash: ./oldboy.sh: 权限不够
- root 修改 chmod o=w oldboy.sh
- oldboy 查看
oldboy@myvps oldboy-mode]$ ll 用量 4
--w-------. 1 oldboy oldboy 27 10月 13 15:55 oldboy.sh
[oldboy@myvps oldboy-mode]$ cat oldboy.sh
cat: oldboy.sh: 权限不够
[oldboy@myvps oldboy-mode]$ echo 'pwd' >> oldboy.sh
[oldboy@myvps oldboy-mode]$ echo 'pwd' >> oldboy.sh
[oldboy@myvps oldboy-mode]$ echo 'pwd' >> oldboy.sh
[oldboy@myvps oldboy-mode]$ echo 'pwd' >> oldboy.sh
[oldboy@myvps oldboy-mode]$ echo 'pwd' >> oldboy.sh
[oldboy@myvps oldboy-mode]$ echo 'pwd' >> oldboy.sh
[oldboy@myvps oldboy-mode]$ echo 'pwd' >> oldboy.sh
[oldboy@myvps oldboy-mode]$ echo 'pwd' >> oldboy.sh
[oldboy@myvps oldboy-mode]$ ./oldboy.sh
-bash: ./oldboy.sh: 权限不够
得出小结论:
核心:对于文件来说只有w权限不够,需要有r权限配合.
如果文件只有w只能通过追加方式写入,如果vi/vim写入会清空文件内容只留最新的(:wq!)。
- root 修改 chmod u=x oldboy.sh
- oldboy 查看
[oldboy@myvps oldboy-mode]$ ll
总用量 4
---x------. 1 oldboy oldboy 30 10月 13 16:27 oldboy.sh
[oldboy@myvps oldboy-mode]$ cat oldboy.sh
cat: oldboy.sh: 权限不够
[oldboy@myvps oldboy-mode]$ echo 'hostname' >>oldboy.sh
-bash: oldboy.sh: 权限不够
[oldboy@myvps oldboy-mode]$ ./oldboy.sh
bash: ./oldboy.sh: 权限不够
[oldboy@myvps oldboy-mode]$
小结论:
x权限需要 r 配合
- 增加了rw权限后测试
[root@myvps oldboy-mode]# chmod u+r oldboy.sh
[root@myvps oldboy-mode]# ll
总用量 4
-r-x------. 1 oldboy oldboy 30 10月 13 16:27 oldboy.sh
[oldboy@myvps oldboy-mode]$ ll
总用量 4
-r-x------. 1 oldboy oldboy 30 10月 13 16:27 oldboy.sh
[oldboy@myvps oldboy-mode]$ cat oldboy.sh
echo oldboy linux
pwd
whoai[oldboy@myvps oldboy-mode]$ ./oldboy.sh
oldboy linux
/oldboy-mode
./oldboy.sh:行3: whoai: 未找到命令
[oldboy@myvps oldboy-mode]$ echo '996' >>oldboy.sh
-bash: oldboy.sh: 权限不够
3.测试目录权限
- 环境
环境准备:
mkdir -p /oldboy-mode/oldboydir/
touch /oldboy-mode/oldboydir/oldboy{10..20}.txt
chown -R oldboy.oldboy /oldboy-mode/oldboydir/[root@myvps ~]# cd /oldboy-mode/
[root@myvps oldboy-mode]# ll
总用量 4
drwxr-xr-x. 2 root root 243 10月 13 17:32 oldboydir
[root@myvps oldboy-mode]# cd oldboydir/
[root@myvps oldboydir]# ll
总用量 0
-rw-r--r--. 1 root root 0 10月 13 17:32 oldboy10.txt
-rw-r--r--. 1 root root 0 10月 13 17:32 oldboy11.txt
-rw-r--r--. 1 root root 0 10月 13 17:32 oldboy12.txt
-rw-r--r--. 1 root root 0 10月 13 17:32 oldboy13.txt
-rw-r--r--. 1 root root 0 10月 13 17:32 oldboy14.txt
-rw-r--r--. 1 root root 0 10月 13 17:32 oldboy15.txt
-rw-r--r--. 1 root root 0 10月 13 17:32 oldboy16.txt
-rw-r--r--. 1 root root 0 10月 13 17:32 oldboy17.txt
-rw-r--r--. 1 root root 0 10月 13 17:32 oldboy18.txt
-rw-r--r--. 1 root root 0 10月 13 17:32 oldboy19.txt
-rw-r--r--. 1 root root 0 10月 13 17:32 oldboy20.txt
1) 测试 r
chmod u=r mode-dir/
oldboy 测试看目录本身信息加ll -d 目录名
目录小结论:
目录的r权限查看目录下内容,如果只有r目录下文件的属性信息无法查看提示"?",目录的r权限需要x权限配合.、对于目录x权限表示是否能够进入目录权限,是否能够查看与修改目录下文件的 属性信息 权限。
-
测试 w
-
没有w权限
2) 测试w
- 没有w权限
[oldboy@oldboy-king-v2 oldboy]$ ll -d mode-dir/
dr-xr-xr-x. 2 oldboy oldboy 226 7月 25 11:07 mode-dir/
[oldboy@oldboy-king-v2 oldboy]$ ls mode-dir/
oldboy10.txt oldboy12.txt oldboy14.txt oldboy16.txt oldboy18.txt oldboy20.txt
[oldboy@oldboy-king-v2 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@oldboy-king-v2 oldboy]$ touch mode-dir/lidao.txt
touch: 无法创建"mode-dir/lidao.txt": 权限不够
目录小结论:
目录的w权限表示在目录下面创建,删除,重命名文件,只有w还不够,需要?配合。
对于目录x权限表示是否能够进入目录权限,是否能够查看与修改目录下文件的 属性信息 权限
实际应用建议:如果要对某个目录拥有“写”权限,则授予目录rwx即可。
4.系统默认权限(了解)
-
Linux系统通过umask命令控制文件和目录的默认权限.
-
如何控制的?
文件:666
目录:777
减去umask的值,文件umask如果某一位是奇数,需要减去umask后这一位上+1
文件默认权限:666
- 022
-------644目录默认权限:777
- 022
-------755021
文件默认权限:666
- 021
-------645
+1646目录默认权限:777
- 021
-------756
- 小结
- Linux默认权限通过umask控制即可.
5. ( 3个特殊权限)
- 目标: 知晓特殊权限及例子.
-
特殊权限之set uid = suid 4 : 运行这个命令的时候相当于是这个命令的所有者的权限. 例子passwd命 令.
-
特殊权限之sticky(粘滞位) 1 : 对于包含sticky权限的目录,每个用户都可以在目录下面创建内容,但是每个用户只能管理自己的文件.
-
特殊权限之set gid = guid 2 : 运行这个命令的时候相当于是这个命令的用户组的权限
-
如何设置
chmod u+s /bin/rmchmod o+t /tmp//bin/rm原始权限755 增加setuid
chmod 4755 /bin/rmchmod 1777 /tmp/
- 核心掌握:
- /bin/passwd和/tmp/s和t含义即可.
6. Linux特殊属性
- 目的:预防重要文件或命令被修改
- lsattr 查看这种特殊属性
- chatrr 修改这种特殊属性
- a属性 append 只能追加
- i属性 immutable 不朽的,无法被毁灭的.
chattr +a oldboy.txt #-achattr +i oldboy.txt #-i
3.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. 只能上传,不能执行.