详解linux权限操作(概念、chown、chmod、chgrp、umask、粘滞位)

权限是linux学习的重点之一,今天小编来跟大家一起学习吧。

目录

一.概念

(一).人为操作(owner、group、other)

(二).文件本身属性

1.类型

2.读(r)

3.写(w)

4.执行(x)

(三).权限优先级

二.权限表示方法及转化

(一).表示方法

(二).数字转化

三.chmod命令

四.chown命令

(一).只改变拥有者:

(二).同时改变拥有者、所属组:

(三).只改变所属组:

五.chgrp命令

六.umask命令

七.粘滞位


一.概念

首先我们要知道,权限操作分为两大部分:人为操作和文件本身属性。

(一).人为操作(owner、group、other)

这里可以分为三个部分:拥有者(owner)所属组(group)其他人(other)

1.拥有者owner是这个文件的主人。

2.所属组group是这个文件所在的组,这个组里的所有成员都可以共享该文件

3.其他人other既不是拥有者,也不属于文件所属组成员,是“局外人”。

当我们输入ll指令时便可以查看文件的拥有者(第三列)和所属组(第四列)。

注意:其他人并不会在文件属性中出现,因为other是一个宽泛的定义,不可能指定到具体的用户上。

(二).文件本身属性

文件本身具有类型、读(r)、写(w)、执行(x)的属性。

文件自身的属性在ll指令的第一个栏位。

1.类型

文件类型可大致分为六种。

代表符号文件类型代表符号文件类型
d目录文件b块设备
-普通文件c字符设备
p管道文件l连接文件

 类型是栏位的第一个字符。

比如图中a.out就是普通文件,dir就是目录文件。

值得注意的是,linux系统区分文件类型的方式就是看代表符号,而不是看文件后缀。 

2.读(r)

文件能不能被用户读取就是文件的读属性。

3.写(w)

文件能不能被用户修改就是文件的写属性。

4.执行(x)

文件能不能被用户操作就是文件的执行属性。

这里要注意,对于目录文件来说:

读/r能否查看目录列表
写/w能否修改目录内容
执行/x能否进入目录

(三).权限优先级

onwer > group > other

假设一个文件拥有者没有写的权限,而所有组有写权限。即便拥有者在该所有组中,也没有写权限。其他同理。 

二.权限表示方法及转化

(一).表示方法

在文件属性第一栏位中,首字符是文件属性,依次每三个分别是拥有者所属组其他人

以目录文件为例:

其中,每一份都有读、写、执行的权限,-符号表示此类人没有该权限。

以上图为例,意思就是拥有者、所属组有全部权限,其他人没有目录的写权限。 

(二).数字转化

文件的自身权限除了rwx的表示方式,也可以用数字来表示。

有权限用1表示,没有权限用0表示。那么:

rwx:111,r-x:101

之后将该二进制数转化成八进制就是最终的数字表示形式。

111->7,101->5

rwxrwxr-x:775

举例:

文本二进制最终数字(八进制)
rw-rwx--x110 111 001671
-w-r---wx010 100 011243
r-xrwx---101 111 000570

三.chmod命令

改变文件的读写执行属性。

方式:chmod [指令1,指令2,指令3...] [目标文件]

指令:

首先写要修改的对象。

拥有者u其他人o
所属组g全体a

其次确定权限增加还是减少。

增加+
减少-
直接赋予=

最后确定相应权限(r、w、x、-)。

举几个例子:

chmod u+w file.c赋予拥有者写权限
chmod u-wx,o+w file.c剥夺拥有者写、执行权限,赋予其他人写权限
chmod u=r-x,g-r,o=rwx file.c赋予拥有者读、执行权限,剥夺所有组读权限,赋予其他人全部权限。
chmod a-r,u+r file.c剥夺除拥有者外所有人的读权限

当然,我们也可以通过数字的形式直接操作权限。

举几个例子:

rwxrwxrwx  ->  rw---x-w-chmod 612 file.c
rw-rw-rw-  ->  r--r--r--chmod 444 file.c
rwxrw-r--  ->  rwxrwxr--chmod 774 file.c

四.chown命令

改变文件拥有者、所属组。

只能root执行,普通用户需要sudo许可。

(一).只改变拥有者:

方式:chown [新拥有者] [目标文件]

形式:chown newuser file.c

(二).同时改变拥有者、所属组:

方式:chown [新拥有者:新所属组] [目标文件]

形式:chown newuser:newgroup file.c

(三).只改变所属组:

方式:chown [:新所属组] [目标文件]

形式:chown :newgroup file.c

五.chgrp命令

改变文件的所属组

只能root执行,普通用户需要sudo许可。

方式:chgrp [新所属组] [目标文件]

形式:chgrp newgroup file.c

六.umask命令

查看/改变权限掩码 

方式:

umask 查看权限掩码
umask [新权限掩码]修改权限掩码

通过umask命令,我们可以直接改变文件的初始化权限。 

首先,我们需要知道,linux为不同类型的文件赋予了不同的初始权限。也赋予了初始umask值(权限掩码值)。

而文件的 最终权限 = 初始权限 & (~ umask值)

即,初始权限和umask值取反的按位与。

假设一个文件的初始权限为777,umask值为002。

那么文件的真实权限就是 777 & (~002)=  777 & 775 = 775

具体步骤如下:

1.八进制777 & (~002)
2.转为二进制111 111 111 & (~000 000 010)
3.取反111 111 111 & 111 111 101
4.按位与111 111 101
5.转回八进制775

七.粘滞位

粘滞位是用来确保用户在公共目录下,其他人不能删除自己的文件。

粘滞位只能在目录上操作。

方式:

chmod +t [目标目录]目录添加粘滞位
chmod -t [目标目录]目录消去粘滞位

因为在公共目录下,即便我们没有给other任何权限,他也可以对文件进行删除操作,这十分危险,所以,粘滞位应运而生。

当一个目录设置粘滞位后,它和它内部文件只能由root用户、目录拥有者、文件拥有者删除。

 

  • “代码跑起来我们再聊。”——沃德·坎宁汉(Ward Cunningham)

如有错误,敬请斧正

  • 9
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

就要 宅在家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值