彻底搞懂 Linux 中的权限【详解】

Linux权限管理详解:用户、权限与粘滞位
本文介绍了Linux中的权限系统,包括root用户和普通用户的区别,以及如何通过chmod和umask命令管理文件和目录的权限。特别讨论了目录的可执行权限和粘滞位的概念,粘滞位用于限制其他用户在特定目录中删除文件。

前言

权限无处不在,生活中,游戏有未成年人防沉迷,腾讯非VIP用户不能观看VIP视频等等,所以权限约束的是人,决定一件事是否允许被特定的人做。权限在linux中也是无处不在,访问文件需要权限,进入目录需要权限,更改文件也需要权限,下面就让我们来具体了解linux中的权限

用户

在linux中不同的用户对应不同的权限,默认有两类用户:root用户和普通用户

root(超级用户):在Linux系统下可以做任何事,几乎不受限制

普通用户:只能做权限内的事,所以我们时常会permission denied,就是因为权限不够,需要sudo短暂提升权限

普通用户执行su指令可以切换为root用户,执行sudo指令则短暂提升权限,以root的身份执行sudo后的指令

linux中的命令提示符:

权限管理

「文件本身具有天然的权限属性,读权限、写权限、执行权限」

文件按访问者可分为三类:

1.拥有者:文件的拥有者user

2、所属组:文件时属于哪个组的group

3、其他用户:other

这里的拥有者,所属组,其他用户是一种角色,而root用户、普通用户则是具体的人,就像程序员是一种角色而我们是具体的人

拥有者和其他用户好理解,关于所属组,常用于组内协同,组与组之间互不干扰。拿腾讯的天美和光子来说,这两组是属于竞争关系的,而要在一台服务器上工作开发,就需要两组互不干扰,只能操作组内的文件

「访问权限」

以class文件为例:这里king用户自成一组

linux中第一位标识文件类型

d:目录文件(文件夹)

-:普通文件

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

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

p:管道文件

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

s:套接口文

第2-10位的权限

读:Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限

写:Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限

执行:execute对文件而言,具有执行文件的权限;「对目录来说,具有进入目录的权限」

字符表示:

linux表示说明linux表示   说明
r--只读-w-只写
--x仅可执行rw-可读可写
-wx可写可执行r-x可读可执行
rwx可读可写可执行---无权限

八进制表示:

权限符号8进制2进制
r4100
w2010
x1001
rw6110
rx5101
wx3011
rwx7111
---0000

文件权限的设置

chmod指令

功能:设置文件的访问权限

用法:chmod [参数] [权限] [文件]

「只有文件的拥有者和root用户才能改变文件的权限」

u:拥有者

g:所属组

o:其他用户

a:所有用户

chmod u-rwx 文件名      #去掉文件拥有者的所有权限
chmod g-rwx 文件名      #去掉文件所属组的所有权限
chmod o-rwx 文件名      #去掉文件其他用户的所有权限

chmod a+r 文件名        #增加所有用户的读权限
chmod a+rwx 文件名      #增加所有用户的读写执行权限


chmod u-x,g+x  文件名   #去掉拥有者的执行权限,增加所属组的读权限 

增加class文件拥有者u的执行权限,去掉所属组g的写权限

同时可以用八进制也可以更改相应的权限,将class文件全都改为可读可写不可执行

我们也可以更改文件的拥有者和所属组,这里不需要更改其他用户,因为文件拥有者和所属组的改变就会改变其他用户

chown指令

功能:更改文件拥有者

用法:chown [用户名]  [文件名]

chgrp指令

功能:更改文件所属组

用法:chgrp [所属组名] [文件名]

这里同样需要sudo

拥有者和所属组一起修改,中间加冒号:

默认权限

我们可以发现,两个普通文件访问权限都是一样的,两个目录文件的访问权限也是一样的

在linux中,文件的起始权限:

普通文件:0666(起始权限)

目录文件:0777(起始权限)

但实际上我们上面看到的文件权限不是这个值,普通文件的权限是0664,目录文件的权限是0775,

这是因为创建文件或目录时还要受umask的影响

umask指令

功能:查看或修改文件的掩码

[king@VM-12-11-centos class]$ umask   #普通用户的权限掩码为0002
0002

权限掩码为1对应的起始权限就要变为0

umask还可以更改掩码

[king@VM-12-11-centos ~]$ umask 0003
[king@VM-12-11-centos ~]$ umask       #设置后仅本次登录有效
0003
                    

目录的权限

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

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

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

这里的可执行权限也是常见的考点,「进入目录需要的是可执行权限」

粘滞位

那么问题来了,对一个目录的拥有者而言,允许其他用户在目录内创建修改文件,就需要该目录具有写权限 ,而一旦其他用户具有目录的写权限,就可以随意删除目录内的文件,不论该用户是否具有文件的写权限

针对这样的问题linux引入了「粘滞位」

chmod o+t [目录]

允许other在目录下创建文件,所以目录对other要有w权限,但不允许other删除其他目录,所以需要对目录增加限制,加粘滞位

当一个目录被设置粘滞位后该目录下的文件只能由:

1、root用户删除

2、该文件的拥有者删除

3、目录的拥有者删除

例如我们linux系统下,/目录下的tmp目录就设置了粘滞位,用来存放多用户的临时文件,用户可以更改自己的临时文件,而无法更改其他用户的临时文件

权限总结

「1、目录的可执行权限是表示你可否在目录下执行命令。如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目录, 即使目录仍然有-r 读权限。」

「而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限 ,所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。」

「2、对于一个目录:读权限:查看目录,写权限:在目录下创建删除文件,执行权限:进入目录」

「3、权限约束的是人,决定一件事是否允许被特定的人做」

「4、在设置粘滞位的目录下,其他用户可以创建文件,但不能删除别人的文件」

来源:blog.youkuaiyun.com/weixin_46016019/article/details/122878564

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值