首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Linux权限

Linux权限

作者头像
用户11719974
发布2025-11-15 09:55:59
发布2025-11-15 09:55:59
740
举报

一、linux中的用户

        linux中的用户有两种,root用户(超级管理员)和普通用户,root的权限是最高的。而普通用户的权限比较低,在做某些操作时需要使用sudo命令来短暂提权。

        但是并不是任何用户都能够提权,如果任何用户都能提权那么root和普通用户就没有权限区分的意义了,而要能够使用sudo提权这个普通用户必须在root的“白名单”里。

比如我们要把名字为us1的用户放入"白名单",可以通过在vim打开/etc/sudoers并添加以下语句:

代码语言:javascript
复制
us1        ALL=(ALL)        ALL

二、权限的理解

权限的本质:能做或不能做某个操作

权限的目的:控制用户行为,防止错误发生

可以把权限简单概括为:权限=角色+目标属性 (1).权限限制的是角色(人)。(2).权限需要具有对应的属性

  • 角色:
  1. 拥有者
  2. 所属组
  3. other
  • 属性:
  1. 读(r)
  2. 写(w)
  3. 执行(x)

接下来我会用普通文件权限与目录权限来对以上角色和属性详细讲解。

三、普通文件权限

首先我们创建一个普通文件,比如:

代码语言:javascript
复制
touch test.txt
  • 拥有者:顾名思义就是这个文件的拥有者,默认情况为该文件的创建用户,但可以使用chown改变。
  • 所属组:与该文件相关的一群用户集合,默认情况为该文件的创建用户,但可以使用chgrp改变。
  • other:拥有者和所属组之外的用户。

权限位:

        权限位分为三块,分别是拥有者的权限、所属组的权限、其他用户的权限。而每个角色都有3个权限位:

第一位:r表示可读,-表示不可读

第二位:w表示可写,-表示不可写

第三位:x表示可执行,-表示不可执行

        我们发现每一个属性只有两种状态:能和否,那么就可以用二进制表示,1表示可执行0表示不可执行。这一点在下面缺省权限的讲解会用到。

而权限是可以由文件的拥有者改变的,如:

代码语言:javascript
复制
//u:拥有者
//g:所有者
//o:other用户
//a:所有用户
//-:去掉权限
//+:加上权限
chmod u-r test //去掉拥有者的r权限
chmod u+r test //加上拥有者的r权限
chmod u-rw test //去掉拥有者的rw权限
chmod u+rwx test //加上拥有者的rwx权限
//下面同理:
chmod g-r test //去掉所有者的r权限
chmod o-r test //去掉other用户的r权限
chmod a-r test //去掉所有用户的r权限
//......

同样文件的角色也是可以改变的,如:

代码语言:javascript
复制
sudo chown us1 test//把test文件的拥有者改为us1
sudo chgrp us1 test//把test文件的所属组改为us1
sudo chown us1:us2 test//把test文件的拥有者改为us1,所属组改为us2

注1:root不受权限约束!

注2:可执行权限!=文件可执行,文件本身是否可读可写可执行是和该文件自身属性有关,它和是否有该文件的可读可写可执行权限是两回事!

四、目录(文件夹)权限

目录中的rwx

  • r:没有r权限则无法查看该目录的内容
  • w:没有w权限则无法在目录内部增删文件。
  • x:没有x文件则无法进入目录。

注:查看目录内容和进入目录是两回事。

所以在创建目录后拥有者的默认权限就有rwx,要不然这个目录就白费了。

        我们有时会遇到这种情况:对于一个文件我们不能读不能写不能执行的情况下,我们竟然可以把这个文件删除!这看上去很不合理的样子,其实不然,这是因为我们在该文件所在的目录下有w权限,所以可以对里面的任何文件进行删除。也就是说无论这个文件是不是自己的只要是在自己的目录下,那就可以随意删除。

五、缺省权限

        如上当我们创建一个文件后,该文件会默认的带一些权限,也会缺失一些权限。它是有以下一些规则的:

        对于普通文件起始权限是666,也就是二进制110 110 110,所以普通文件默认是不带可执行(x)权限的。

        对于目录文件起始权限是777,也就是二进制111 111 111。

当我们理解了起始权限后发现在我们新创建文件后的权限位并不是起始权限。这是因为:

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

umask的理解:

  • umask是什么:umask是一个权限掩码与上面的666和777是同一种性质的八进制数。
  • umask的目的:希望在umask中出现的权限都不应该在最终权限中出现。
  • 为什么要有umask:(1).默认权限,由操作系统(OS)自主决定,使系统可配置,是可以灵活满足需要的一种表现。(2).特殊情况下,配置umask可以控制文件的默认权限,让我们的代码都是可控的。

查看umask:直接输入umask指令,如:

这里我们发现它与上面666和777多了一个位,其实就是第一位,它限制的是特殊权限(如粘滞位)。

临时更改umask:只需要在umask指令后面接上想要更改的值即可。如:

六、粘滞位

        试想一下不同用户之间一起去使用一台云服务器并且需要对同一个目录进行处理,我们就要使这个目录的权限位为rwx rwx rwx,那么就会有一个问题,各用户直接在该目录下进行创建自己的文件进行工作时,自己的文件也许不会被其他用户访问,但是可以被其他用户删除。

        而粘滞位(t)就可以处理这个问题,给一个目录上的角色添加粘滞位则这个目录及里面的内容就不能被对应的角色删除,但依旧可以在里面创建文件。

系统里自带的含有粘滞位的文件

同样如果我们想对某个目录(stu)的other加上粘滞位,则使用如下命令:

代码语言:javascript
复制
chmod o+t stu 
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-04-21,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、linux中的用户
  • 二、权限的理解
  • 三、普通文件权限
  • 四、目录(文件夹)权限
  • 五、缺省权限
  • 六、粘滞位
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档