Linux|详解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是一个宽泛的定义,不可能指定到具体的用户上。
Linux|详解linux权限操作(概念、chown、chmod、chgrp、umask、粘滞位)
文章图片

(二).文件本身属性 文件本身具有类型、读(r)、写(w)、执行(x)的属性。
文件自身的属性在ll指令的第一个栏位。
Linux|详解linux权限操作(概念、chown、chmod、chgrp、umask、粘滞位)
文章图片

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

代表符号 文件类型 代表符号 文件类型
d 目录文件 b 块设备
- 普通文件 c 字符设备
p 管道文件 l 连接文件
类型是栏位的第一个字符。
比如图中a.out就是普通文件,dir就是目录文件。
Linux|详解linux权限操作(概念、chown、chmod、chgrp、umask、粘滞位)
文章图片

值得注意的是,linux系统区分文件类型的方式就是看代表符号,而不是看文件后缀。
2.读(r)
文件能不能被用户读取就是文件的读属性。
3.写(w)
文件能不能被用户修改就是文件的写属性。
4.执行(x)
文件能不能被用户操作就是文件的执行属性。
这里要注意,对于目录文件来说:
读/r 能否查看目录列表
写/w 能否修改目录内容
执行/x 能否进入目录
(三).权限优先级 onwer > group > other
假设一个文件拥有者没有写的权限,而所有组有写权限。即便拥有者在该所有组中,也没有写权限。其他同理。
二.权限表示方法及转化 (一).表示方法 在文件属性第一栏位中,首字符是文件属性,依次每三个分别是拥有者、所属组、其他人。
以目录文件为例:
Linux|详解linux权限操作(概念、chown、chmod、chgrp、umask、粘滞位)
文章图片

其中,每一份都有读、写、执行的权限,-符号表示此类人没有该权限。
以上图为例,意思就是拥有者、所属组有全部权限,其他人没有目录的写权限。
(二).数字转化 文件的自身权限除了rwx的表示方式,也可以用数字来表示。
【Linux|详解linux权限操作(概念、chown、chmod、chgrp、umask、粘滞位)】有权限用1表示,没有权限用0表示。那么:
rwx:111,r-x:101
之后将该二进制数转化成八进制就是最终的数字表示形式。
111->7,101->5
rwxrwxr-x:775
举例:
文本 二进制 最终数字(八进制)
rw-rwx--x 110 111 001 671
-w-r---wx 010 100 011 243
r-xrwx--- 101 111 000 570
三.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)
如有错误,敬请斧正

    推荐阅读