Linux权限的概念

0.目录

1.Linux用户分类

2.Linux用户切换

3.Linux权限

01.文件对访问者的分类

02.文件类型和访问权限

03.文件权限值的表示方法

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

05.可执行权限

06.文件掩码

07.目录权限

4.关于权限的总结


1.Linux用户分类

在Linux环境下一共有两种用户:

  • 用户(root):可以在linux系统下做任何事情,不受限制。
  • 普通用户:在Linux下做有限的事情,也就是受权限的限制。
  • 超级用户与普通用户的命令提示符也有所不同,如下图所示:


2.Linux用户切换

root用户的提示符是'#',普通用户是'$',root用户可以通过su[用户名]任意切换到普通用户而不需要输入密码,而普通用户切换到root需要输入密码,如下图所示:


3.Linux权限

01.文件对访问者的分类

  • 文件或目录的拥有者:user
  • 文件或目录的拥有者的所属组:group
  • 其他访问者:others

02.文件类型和访问权限

   我们现在如下图所示创建一个文件:

        

其中前面的yqh是拥有者,第二个yqh是所属组。

那么前面那一串是什么呢?首先第一个字符表示文件类型:-是普通文件,d是目录(也就是文件夹)

以下是一些常见文件类型:

然后剩下的九个字符,三三分组,分别是拥有者权限、所属组权限、其他访问者权限。


03.文件权限值的表示方法

  • r:读权限
  • w:写权限
  • x:执行权限
  • -:无权限

Linux中的文件权限按照rwx排列,如果没有对应的权限就显示-,比如说r-x,那么这个文件,就拥有读权限和执行权限,而没有写权限。

既然文件的权限是根据rwx来排列的,我们就可以用一个2进制的数字来表示状态,有权限用1表示,没权限用0表示,比如说r-x那么转换成2进制就是101,因为文件只有三个权限,所以这个二进制序列就可以用一个八进制数表示101转换成八进制后就是5,所以我们就可以用0~7表示所有的权限:


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

既然我们知道了权限是怎么表示的,那么我们是否可以设置权限呢?答案是当然可以的!

我们可以使用chmod指令:

  • 功能:设置文件或目录的权限
  • 用法:chmod [参数] 权限 文件名

用户表示符+/-=权限字符:

  • +:向权限范围增加权限代号所表示的权限
  • -:向权限范围取消权限代号所表示的权限
  • =:向权限范围赋予权限代号所表示的权限
用户符号:  
  • u:拥有者
  • g:拥有者同组用
  • o:其它用户
  • a:所有用户

示例:

chmod o-r text.txt

执行完上述指令以后,就将o(others)的读权限给取消了,当然我们上面说过可以用八进制表示权限,所以我们可以用八进制数字对权限进行修改。

chmod 337 text.txt

这里我们将权限设置为了337,这里的others就拥有了所有权限。


05.可执行权限

由上述操作我们可以看到,我们可以给普通文件可执行权限,那么是不是意味着这个文件可执行了呢?

我们执行了之后发现并不可以,为什么呢?其实很好理解,我打个比方:我们在高中时期都有考清华的权限,但是有了权限不意味着一定考的上。放到文件上也一样,它有了可执行的权限,不意味着它可以执行。


06.文件掩码

我们这里创建了一个新的文件tt,我们发现它的默认权限是664,创建了一个新的目录d1它的权限默认是775,那么664,775就是文件默认的权限吗??其实不是,其实文件的默认权限是666,目录的默认权限是777,这个664和775是默认权限与掩码进行运算之后的结果。

我们可以通过 umask 来查看掩码:

我们看到这里的掩码是0002,那么这个664和775是怎么算出来的呢?其实是mask &(~umask) 计算出来的。我们也可以通过umask [数字]对掩码进行修改:

我们这里对掩码进行修改后,我们发现创建文件时,tt的默认权限就变成r了。我们也可以看到如果掩码为0,文件的默认权限是666,目录的权限是777,验证了我们之前的观点。


07.目录权限

为了掩饰下面的内容,我这里创建一个新的用户zs,并把他的家目录的权限给予其他人:

这样子操作之后yqh就可以去zs的目录下操作。

我们先用zs账号创建一个文件,并写入hello:

我们可以看到,others是只有r权限的,我们这里切换到yqh账号。

我们可以看到,yqh只有读权限,没有写权限,所以cat指令是被允许的,但是echo指令是被拒绝的。现在有个问题就来了,root是不是也算others,那么他能不能对该文件操作呢?

这里我们可以看到,root对文件进行写操作,所以root不受权限限制,这些权限是限制普通用户的,超级用户的权限在它之上。


这里我们yqh生气了,不让我写,我给你文件删了,然后系统就真的给这个文件删了,这合理么?这不合理,你连写权限都没有,为什么能删??我们怎么解决这个问题呢?Linux中引入了一个粘滞位的概念:

chmod +t zs

这里我们对zs目录添加了粘滞位+t,我们看到文件权限对others的权限从x变成了t,我们这时候zs再创建文件,yqh还能删么?

我们可以看到,yqh已经不能删除这个文件了。所以这里加了粘滞位+t之后,这个目录下的文件就只能被root和拥有者删除了。


4.关于权限的总结

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

今天对于Linux权限的介绍就到这里,有什么疑问欢迎评论区讨论!

  • 22
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值