详解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权限操作(概念、chown、chmod、chgrp、umask、粘滞位)_第1张图片

(二).文件本身属性

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

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

详解linux权限操作(概念、chown、chmod、chgrp、umask、粘滞位)_第2张图片

1.类型

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

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

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

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

详解linux权限操作(概念、chown、chmod、chgrp、umask、粘滞位)_第3张图片

值得注意的是,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--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)

如有错误,敬请斧正

你可能感兴趣的:(Linux,linux,服务器,运维,linux指令,linux命令)