18 文件权限管理

187次阅读
没有评论

共计 3432 个字符,预计需要花费 9 分钟才能阅读完成。

一. 基本权限介绍

1. 基本权限类型

  • r : 4 : 可读
  • w : 2 : 可写
  • x : 1 : 可执行

2. 权限归属

  • u : 属主
  • g : 属组
  • o : 其他人

3. 设置权设置属主, 属组

  • 命令: chown
  • 选项: -R 递归设置
🌲同时设置属主和属组
[root@shawn song]# ll /home/song/a.txt 
---------- 1 root root 12 10 月 29 17:22 /home/song/a.txt
[root@shawn song]# chown song.song !$
chown song.song /home/song/a.txt
[root@shawn song]# ll !$
ll /home/song/a.txt
---------- 1 song song 12 10 月 29 17:22 /home/song/a.txt

🌲只设置属主
[root@shawn song]# chown root !$
chown root /home/song/a.txt
[root@shawn song]# ll !$
ll /home/song/a.txt
---------- 1 root song 12 10 月 29 17:22 /home/song/a.txt

🌲只设置属组
[root@shawn song]# chown .root !$
chown .root /home/song/a.txt
[root@shawn song]# ll !$
ll /home/song/a.txt
---------- 1 root root 12 10 月 29 17:22 /home/song/a.txt

4. 修改 u, g, o, 对应的权限

  • 命令: chmod
  • 选项: -a 所有, -R 递归

  • 加减法

🌲单独加减一个权限和多个一起加减都可以
[root@shawn song]# ll
总用量 4
---------- 1 root root 12 10 月 29 17:22 a.txt

🌲写在一起加一些权限(也可以单独拎一个 "u+xw")
[root@shawn song]# chmod u+rw,g+rx,o+wx a.txt 
[root@shawn song]# ll a.txt 
-rw-r-x-wx 1 root root 12 10 月 29 17:22 a.txt

🌲写在一起减一些权限
[root@shawn song]# chmod u-w,g-wx,o-x a.txt 
[root@shawn song]# ll a.txt 
-r--r---w- 1 root root 12 10 月 29 17:22 a.txt
  • 赋值法
🌲"a" 代表所有权限一起设置
[root@shawn song]# ll
总用量 4
-r--r---w- 1 root root 12 10 月 29 17:22 a.txt
[root@shawn song]# chmod a=rwx a.txt 
[root@shawn song]# ll a.txt 
-rwxrwxrwx 1 root root 12 10 月 29 17:22 a.txt

🌲逐个赋值
[root@shawn song]# chmod u=x,g=x a.txt 
[root@shawn song]# ll a.txt 
---x--xrwx 1 root root 12 10 月 29 17:22 a.txt

🌲或者多个一起赋值
[root@shawn song]# chmod uo=r,g=w a.txt 
[root@shawn song]# ll a.txt 
-r---w-r-- 1 root root 12 10 月 29 17:22 a.txt
  • 数字法
🌲"u"=4,  "g"=2,  "0"=1
[root@shawn song]# ll a.txt 
-r---w-r-- 1 root root 12 10 月 29 17:22 a.txt

🌲"777" 开放所有权限
[root@shawn song]# chmod 777 a.txt 
[root@shawn song]# ll a.txt 
-rwxrwxrwx 1 root root 12 10 月 29 17:22 a.txt

🌲"000" 不开放权限
[root@shawn song]# chmod 000 a.txt 
[root@shawn song]# ll a.txt 
---------- 1 root root 12 10 月 29 17:22 a.txt

🌲可以按需求设置
[root@shawn song]# chmod 421 a.txt 
[root@shawn song]# ll a.txt 
-r---w---x 1 root root 12 10 月 29 17:22 a.txt

二. 权限对文件与目录的意义

1. 对文件的意义

  • r : 读取文件的内容
  • w : 修改文件内容
  • x : 可以把文件当成一个命令 / 程序运行

2. 对目录的意义

  • r : 可以浏览该目录下的子目录名和子文件名字
  • w : 创建, 删除, 移动文件
  • x : 可以进入该目录, 只要我们要操作目录下的内容, 一定要对该目录有 x 权限

3. 操作文件夹下的文件内容

  • 🍡查看一个文件内容至少需要具备的条件
  • 🍡沿途所有文件夹的 x 权限
  • 🍡对目标文件的 r 权限

18 文件权限管理

  • 🍡修改一个文件内容至少需要具备的条件
  • 🍡沿途所有文件夹的 x 权限
  • 🍡对目标文件的 w 权限

18 文件权限管理

  • 🍡执行一个自己制作的命令文件至少需要具备的条件
  • 🍡沿途所有文件夹的 x 权限
  • 🍡对目标文件的 r 以及 x 权限
对于解释型的执行文件需要 "r"+"x", 而二进制执行文件只需要 "x"

18 文件权限管理

4. 操作文件夹下面的子文件与子文件夹(不是操作文件内容)

  • 🍡在目录下创建, 删除, 移动文件至少需要具备的条件
  • 🍡沿途所有文件夹的 x 权限
  • 🍡对目标文件夹的 wx 权限

18 文件权限管理

  • 🍡浏览一个目录下的子目录与子文件名至少需要具备的条件
  • 🍡沿途所有文件夹的 x 权限
  • 🍡对目标文件夹的 rx 权限

18 文件权限管理

三. 文件管理权限之特殊权限

1.SUID

  • 作用
🌲只能给可执行的文件加(命令)
🌲设置有 "s" 权限的命令
🌲普通用户使用时会临时变成该命令的属主
🌲也就是获得该命令的属主权限
  • 修改密码passwd
在 Linux 中,用户密码都在 "/etc/shadow" 中, 我们可以看到它对于其他人是没有权限的

18 文件权限管理

然而普通用户却可以使用 "passwd" 修改密码, 我们来看看这个命令

18 文件权限管理

⛅我们发现它在属主权限里多了个 "s" 权限, 这就是所谓的 " 尚方宝剑 "
⛅当普通用户使用带有这种权限的命令时
⛅普通用户会暂时获得这个命令属主的所有权限
⛅也就是成为了这个命令的主人(一般是 root,root 不受权限压制)
  • 实验
让我们为 "cat" 命令加上 "s" 权限看看会发生什么

🌟首先我们使用 root 创建一个文件, 并设置内容

18 文件权限管理

🌟将 test.txt 对其他人的权限变成 0

18 文件权限管理

🌟我们切换普通用户 song 来 cat 下 test.txt, 发现无权限,

🌟再看看 cat 命令是没有 SUID 权限的

18 文件权限管理

🌟来使用 root 帮 cat 添加一下 SUID 权限

18 文件权限管理

🌟我们再使用普通用户 song 来 cat 下 /test.txt , 发现尚方宝剑奏效了

18 文件权限管理

2.SGID

  • 当 SGID 作用于普通文件时
和 SUID 类似,在执行该文件时,用户将获得该文件所属组的权限
  • 当 SGID 作用于目录时
当一个用户在一个具有 "s" 权限的初始目录下创建子目录以及子子目录时
这些所有的子目录与子子目录所在的属组都将是初始目录所在的属组

18 文件权限管理

3.SBIT

  • 作用
目前只对目录有效果
用来阻止非文件的所有者删除具有 "SBIT" 权限文件夹下的文件
比如 "tmp" 目录就是这种目录
权限信息中最后一位 t 表明该目录被设置了 SBIT 权限
SBIT 对目录的作用是: 当用户在该目录下创建新文件或目录时
仅有自己和 root 才有权力删除,主要作用于一个共享的文件夹

18 文件权限管理

  • 演示

🌟我们可以自己创建一个这样的目录

18 文件权限管理

🌟使用三个不同的用户在此目录下分别创建三个文件

18 文件权限管理

18 文件权限管理

🌟分别切换到不同用户来做删除操作

18 文件权限管理

18 文件权限管理

🌟由此我们可以看出每个用户只能对自己所创建的文件进行删除

四. 权限管理之 umask (了解)

1. 作用

  • 我们无论是用 root , 还是 UID > 199 的系统用户 / 普通用户创建的文件或者目录
  • 它们的 默认权限 都是由 umask 来决定的

2. 文件与目录权限的计算

  • Linux 文件默认的权限为 666, 目录权限为 777
  • 但会收受到 umask 大小的影响

🌟文件权限计算方法: 偶数位直接相减,奇数位相减后加 1

文件起始权限 umask 值 运算 计算后的文件权限
666 002 相减 644
666 033 相减后奇数为加 1 644
666 325 相减后奇数为加 1 442

🌟目录权限计算方法: 直接相减

目录起始权限 umask 值 运算 目录计算后权限
777 022 相减 755
777 033 相减 744
777 325 相减 452

🌟UID > 199 的系统用户或者普通用户

默认 "umask": 0002
文件权限:664
目录权限:775

🌟ROOT 用户

默认 "umask": 0022
文件权限:644
目录权限:755

3. 设置 umask 的方法

须知 umask 越小, 权限就越大

  • 临时设置命令
# umask 000
  • 永久设置命令
# vim /etc/profile
⛅或者
# vim /etc/bashrc
⛅内容是一致的

18 文件权限管理

正文完
 
shawn
版权声明:本站原创文章,由 shawn 2023-06-16发表,共计3432字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)