Linux 权限

目录

一:权限概念

二:文件权限管理

1.文件访问者分类

2.文件类型和访问权限 

 <1>:文件类型

<2>:访问权限

3.文件访问权限的相关设置方法 

 三:目录的权限

粘滞位 --- 添加后,只能删除自己创建的文件

四:总结


一:权限概念

Linux 下有两种用户,超级用户(root),普通用户

  • 超级用户:可以再linux系统下做任何事情,不受限制
  • 普通用户:在linux下做有限的事情。
超级用户的命令提示符是“#”,普通用户的命令提示符是"$"。

命令:

su - [用户名]

功能:切换用户。 

示例,要从 root 用户切换到普通用户 user ,则使用 su user
要从普通用户 user 切换到 root 用户则使用 su root( root 可以省略),此时系统会提示输入 root 用户
的口令。

在这里su和su - 是有区别的,su - 之后我们会处在root目录下,而su 之后我们会保持在原先的目录下。

ctrl D 退出,路径不变

二:文件权限管理

1.文件访问者分类

  • 拥有者
  • 所属组
  • 其他

示例: 

此处,拥有者是 zrsg,所属组也是 zrsg,那么其他指的就是除了 zrsg 以外的人。 

2.文件类型和访问权限 


r --- 读权限

w --- 写权限

x --- 可执行权限  


 <1>:文件类型

  • d:文件夹
  • -:普通文件
  • l:软链接(类似Windows的快捷方式)
  • b:块设备文件(例如硬盘、光驱等)
  • p:管道文件
  • c:字符设备文件(例如屏幕等串口设备)
  • s:套接口文件

<2>:访问权限

  • 读(r/4):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
  • 写(w/2):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
  • 执行(x/10):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
  • “—”表示不具有该项权限

3.文件访问权限的相关设置方法 

chmod 命令

功能:设置文件的访问权限
格式:chmod [参数] 权限 文件名
常用选项:
  • R -> 递归修改目录文件的权限
  • 说明:只有文件的拥有者和root才可以改变文件的权限

chmod 命令的格式:用户表示符 +/-= 权限字符

  • +:向权限范围增加权限代号所表示的权限
  • -:向权限范围取消权限代号所表示的权限
  • =:向权限范围赋予权限代号所表示的权限

用户符号:  

  • u:拥有者
  • g:拥有者同组用
  • o:其它用户
  • a:所有用户

示例:

 对文件 test.txt 添加可执行权限:

对某一个文件 test.txt 的所有用户去掉读权限:

此时,我们对文件内容进行查看:

我们会发现,我们无法查看 test.txt 文件的内容,因为它不具有读权限。

在权限的概念中我们可以得知:超级用户:可以再linux系统下做任何事情,不受限制

那么我们可以切换为 root 账户进行上述测试:

我们发现 root 不受权限的约束。


通过上述的种种测试,我们可以得知,权限是三个三个一组的,要么有要么没有,并且其排列顺序规范,我们可以使用 2 进制来描述 拥有者/所属组/other 的权限,有则表示1,无则表示0。 

此时,我们创建一个新的文件,查看他的默认权限是什么样子的:

通过上述测试结果,我们可以看出,新建的文件 --- file.txt 的默认权限是 664。

我们创建一个新的目录,查看他的默认权限是什么样子的:

通过上述测试结果,我们可以看出,新建的目录 --- test_11_02 的默认权限是 775。


普通文件的起始权限为666

目录文件的起始权限为777

那么为什么我们上述测试所得出结果并不是 666、777呢???

因为在Linux系统中存在权限掩码,最终权限 = 起始权限 去掉 权限掩码中出现的权限

 查看权限掩码:

 

我们可以看到,现在系统中的权限掩码为:0002

那么最终权限的计算是否为 起始权限减去权限掩码中出现的权限,观察测试用例 666 - 002 = 664

777 - 002 = 775 ,直到现在看着没有什么问题,那么接下来我们对 umask 的值进行修改,验证其是否符合减法:

我们再次新建文件 --- newfile.txt ,新建目录 --- test_16_20 ,然后查看文件的权限:

 通过上述测试结果,我们可以看出,新建的文件 --- newfile.txt 的默认权限是 664。

新建的目录 --- test_16_20 的默认权限是 774。

而 666 - 003 = 663 , 777 - 003 = 774 ,我们发现最终权限并不满足减法。

那么新建文件的最终权限究竟是如何计算的呢???

最终权限 = 起始权限 & (~umask)

666 --- 110 110 110 

003 --- 000 000 011 对其进行取反为:111 111 100 

(110 110 110) &(111 111 100) =  110 110 101 --- 664 

修改权限掩码之后,退出重新登陆,权限掩码仍为原来的默认值。

超级用户默认为0022
普通用户默认为0002

 三:目录的权限

  • 可执行权限: 如果目录没有可执行权限, 则无法cd到目录中

  • 可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容

  • 可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件

一个用户拥有目录的写权限,用户就可以删除目录中的文件,不论这个用户是否对目录中的文件具有写权限?

 

为了解决这一问题,我们引入了 --- 粘滞位。 

粘滞位 --- 添加后,只能删除自己创建的文件

当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由
1、超级管理员删除
2、该目录的所有者删除
3、该文件的所有者删除

一个文件一定是属于一个目录的,一个文件属性能不能查看,是由目录的权限决定的。

你能不能删除一个文件,取决于这个文件所处的目录,有没有给你对应的用户 w 权限。


四:总结

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值