前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Linux】权限篇(二)

【Linux】权限篇(二)

作者头像
zxctscl
发布2024-01-23 08:34:25
1410
发布2024-01-23 08:34:25
举报
文章被收录于专栏:zxctscl个人专栏zxctscl个人专栏

1. 前言

在之前的一篇博客中分享了关于权限的一些知识,这次紧接上次的进行,有需要了解上次的可以点这个 link

话不多说,继续开始权限篇。

2. 权限

2.1 修改权限

我们需要先知道,一个文件的权限,谁能修改?

一般来说有两个:一个是文件的拥有者,另外一个是root。

要修改文件的权限需要一个命令chmod

举个例子:将a.txt中拥有者的权限中,去掉r。

我们来看一下:

代码语言:javascript
复制
chmod u-r a.txt

也可以同时去掉多个权限,比如:将b.txt中拥有者的rw都去掉

可以同时去掉,当然也可以同时加上:

将a.txt中拥有者的rwx都加上:

这里拥有者u表示,所属组g表示,other用o表示。也可以全部都同时加减全限,此时用all

来看一个所属组的例子:

去掉a.txt中所属组r的权限:

代码语言:javascript
复制
chmod g-r a.txt

如果想同时操作多个对象,也是一样的,举个例子:将a.txt中拥有者去掉r,所属组去掉w。

代码语言:javascript
复制
chmod u-r,g-w a.txt

所以我们可以更改一个人的一个权限,一个人的多个权限,多个人的一个权限,多个人的多个权限,不过组合时用逗号做分离。

如果给所有人都加上同一个权限,可以直接用all。

举个例子:将b.txt中所有人都加上w。

代码语言:javascript
复制
chmod a+w b.txt

总之:

u,g,o位置可以随便写,但不建议。

2.2 有无权限的对比

用普通账号创建一个文件t.txt

去掉文件的所有权限后,执行读文件和向文件写入,发现都不行。

对于普通用户,自身要受到对应权限的约束,即使这个文件是直接的。

当把t.txt中所有的权限全部去掉之后,root还是想写入就能写,想读就能读。

root账号不受权限的约束。

当把账号切换成普通用户时,属于other,没有读写权限,我们发现不能读写t.txt。

所以说普通用户是受到权限的约束的。

总之:权限存在的意义就是保证普通用户的文件的一般安全性。

在身份识别的时候,只识别一次。

更改文件的拥有者,先切换到root账号下。

把文件的拥有者改为root

代码语言:javascript
复制
chown root t.txt

给所属组加上rw权限

当zxctscl不是拥有者时,自动匹配到后面的所属组。

发现所属组仍然可以读写。

把文件的所属组也改为root

代码语言:javascript
复制
 chgrp root t.txt

切换为普通账号时,发现不能读写了:

给other加上rw权限

代码语言:javascript
复制
chmod o+rw t.txt

这时使用普通账户就能继续进行读写。

所以说:访问一个文件时,得先判定相对于这个文件来说是拥有者、所属组还是other,然后再在这个33为一组特定的权限列表里,进行权限识别,然后才能决定到底能不能访问这个文件。

2.3 另外一个修改权限的方法

2.3.1 更改用户角色

用普通账户新建一个文件file.txt

想把文件的拥有者改为rjjjcph,但是不被允许:

所以说在把文件给别人时候,可能权限不允许,但是又要把文件给别人时,如果是普通账户就强制给,加上sudo。而root账号不需要加。

代码语言:javascript
复制
sudo chown rjjjcph file.txt

把指令进行提权,把文件给别人是强制给的。

把所属组也改为rjjjcph:

那么怎么改回去呢?

直接sudo chown

代码语言:javascript
复制
sudo chown zxctscl:zxctscl file.txt

也可以将拥有者改为zxctscl,将所属组改为root

代码语言:javascript
复制
sudo chown zxctscl:root file.txt

那么为什么不需要修改other呢?

但修改了拥有者和所属组,那么other自然也就改变了。

2.3.2 修改文件权限属性

在之前就谈到:

有就对应1,没有就对应0。

所以对于a.txt中的

拥有者: 110 -> 6

所属组:110 -> 6

other:100 -> 4

用8进制表示就是664

所以可以用8进制来表示权限。

举个例子:把所有人的所有权限都加上

代码语言:javascript
复制
chmod 777 a.txt

只想保留u和g的rw就是660:

代码语言:javascript
复制
chmod 660 a.txt

总之第二种修改文件权限属性的方法就是

代码语言:javascript
复制
chmod 八进制 filename

3. 第一个属性列

在window中是通过文件的后缀来判断文件类型。

Linux并不是通过文件后缀来判断的,那么它是怎么区别的呢?

通过第一个属性列来区分。

d:文件夹

-:普通文件

l:软链接(类似Windows的快捷方式)

b:块设备文件(例如硬盘、光驱等)

p:管道文件

c:字符设备文件(例如屏幕等串口设备)

s:套接口文件

常见的就是-和d.

mkdir创建的目录,就是以d开头。

磁盘:

显示器就是字符设备:

Linux系统不以文件后缀作为区分文件类型,但并不是代表gcc不需要。

所以说Linux!=gcc

也就是说Linux不区分文件类型,但是Linux上面的工具可能会区分。

所以我们可以对Linux的文件使用后缀。

4. 目录权限

如果我们进入一个目录,那么需要什么权限呢?

先去掉拥有者目录的r,结果显示能进入目录:

所以进入一个目录与r无关

但是不能查看指定目录内的信息

加上r,去掉w,看看能不能进入一个目录?

发现是可以进入目录的。

但是不能创建一个文件。

加上r,去掉w,看看能不能进入一个目录?

发现不能进入目录了。

总之:

目录的r权限:用户能否查看指定目录内的信息。

目录的w权限:决定用户是否能在指定目录内新建、修改、删除文件。

目录的x权限:决定用户能否进入一个目录

5. 默认权限

在Linux创建文件的时候,为什么好像有默认权限?为什么就是我们所看到的这样?

创建普通文件时,起始权限是:0666,去掉x

创建目录文件时,起始权限是:0777,包含x

我们使用umask来看看默认值,不同的平台可能会有不同,这个是正常的。

这个默认值代表创建文件时,要从起始权限中,过滤掉。

我们也可以修改默认值:

此时新的文件权限默认权限就改变了。

来计算一下普通文件,显示的权限怎么来的:

先将umask按位取反,在将666与取反之后的进行按位与,最后得到的就是664,刚好就是rw-r–r–

6. 粘滞位

为什么普通用户能够删除别人的文件(包括root),这个是合理的吗?

其实删除一个文件和目录所处在谁的目录下有关系。

要想实现文件共享,就不能在用户的家目录里面。在root根目录下创建一个共享文件。

要想其它用户能够访问它,就得让其它用户加上w权限。

zxctscl和rjjjcph共享文件信息:

在rjjjcph建一个文件,在zxctscl能够看见。

但是zxctscl不能往里面写入,此时在rjjjcph给o加上w权限,这时zxctscl就能写入了。

zxctscl写入的rjjjcph也能看见。

但是可能有其它用户看见这个共享文件,权限已经放开了,其它用户也可以读写。如果其它用户把这个共享文件删除了,那么zxctscl和rjjjcph文件共享就受到了干扰。

这时新增加一个权限位,这个权限位允许任何一个用户新建文件,但只能尤文件的所有者自己去删除,或者是root删,其它人不能删。

粘滞位都是给o设置的。

此时给100_shared加上粘滞位:

代码语言:javascript
复制
chmod +t 100_shared/

zxctscl新建一个文件,此时Tom想要删除,是不被允许的。

当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由

一、超级管理员删除

二、该目录的所有者删除

三、该文件的所有者删除

关于权限的总结:

  1. 目录的可执行权限是表示你可否在目录下执行命令。
  2. 如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)
  3. 而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限
  4. 所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。

有错误请指出,大家一起进步吧!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-01-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 前言
  • 2. 权限
    • 2.1 修改权限
      • 2.2 有无权限的对比
        • 2.3 另外一个修改权限的方法
          • 2.3.1 更改用户角色
          • 2.3.2 修改文件权限属性
      • 3. 第一个属性列
      • 4. 目录权限
      • 5. 默认权限
      • 6. 粘滞位
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档