Linux文件权限基本属性图文详解
【概述】
在 Linux 系统中,不同的用户处于不同的地位,拥有不同的权限,为保护系统安全性,Linux 系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。
Linux 系统的每一个文件或目录都有访问权限,这些访问权限决定了哪些用户和组群能访问文件和能执行的操作。
【查看文件权限】
使用ls -l 命令可以显示文件的属性以及文件所属的用户和组。
其基本构成是:文件属性 链接数 所有者 所属用户组 最后修改时间 文件名
1.文件类型
每个文件的属性由左边第一部分的10个字符来确定。
第一个字符代表文件类型,具体字符有:
d | 目录 |
- | 普通文件 |
I | 软链接,即链接文档(link file) |
b | 块设备,装置文件中可供存储的接口设备(可随机存储装置) |
c | 字符设备,装置文件中串行端口设备(一次性读取装置) |
s | 网络套接字(socket) |
p | 管道(piep) |
2.文件权限
文件类型其后的九个字符三个一组,均为 r w x 的三个参数的组合。其中, r 代表可读(read)、 w 代表可写(write)、 x 代表可执行(execute),这三个权限的位置不会改变,若没有权限,仅会出现 - 符号。
以下图为例,从左至右用0-9表示10个字符,第0位确定文件类型,第1-3位确定属主权限拥有该文件的权限(该文件的所有者的权限),第4-6位确定属组权限拥有该文件的权限(所有者的同组用户),第7-9位确定其他用户拥有该文件的权限。
注:
- 读权限,表示可以用一些命令来读取某个文件的内容;写权限,表示可以编辑和修改某个文件;执行权限,通常指可以运行的二进制程序文件或者脚本文件。
- 一个目录同时具有读权限和执行权限才可以打开并查看内部文件,而一个目录要有写权限才允许在其中创建其它文件,这是因为目录文件实际保存着该目录里面的文件的列表等信息。
3.链接数
文件属性后面的数字代表链接到该文件所在的 inode 结点的文件名数目。
4.文件大小
文件大小是以 inode 结点大小为单位来表示的文件大小,可以给 ls 加上 -lh 参数来更直观的查看文件的大小。
5.文件所有者与所属用户组
每个文件都有一特定的所有者,也就是对该文件具有所有权的用户,同时,在 Linux 系统中,用户是按组分类的,一个用户属于一个或多个组,而文件所有者以外的用户又可以分为文件所有者的同组用户和其他用户。
因此,Linux 系统按文件所有者、文件所有者同组用户和其他用户来规定了不同的文件访问权限。
所有者与所属用户组,标明了该文件具所有权的用户及该文件所属的用户组。
【文件属性的更改】
1.更改文件属主
语法:chown [选项] 属主名 文件名
常用选项
-R:递归更改文件属组,即更改某目录文件的属组时,若加上-R,那么该目录下的所有文件的属组都会更改。
如图,名为linuxmi的普通文件的所属主从开始的 linuxidc 改变为 root
注:
chown命令更改文件属主的同时,也可以更改文件属组,语法为:chown [选项] 属主名:属组名 文件名
如图,名为linuxmi的普通文件的所属主从开始的 root 改变为 linuxidc,所属组从开始的 root 变为 docker
2.更改文件属组
语法:chgrp [选项] 用户组名 文件名
选项同 chown 命令的选项相同
如图,名为linuxmi的普通文件的所属组从开始的 docker 改变为 mysql
3.更改文件权限
Linux 文件的基本权限就有九个,分别是 owner / group / others 三种身份各有自己的 read / write / execute 权限。
要想更改权限,有两种方法,一种是用二进制数字表示,一种是用字符表示。
1)用数字更改
用数字来代表各个权限,则:
读,权限是二进制的100,十进制是4;
写,权限是二进制的010,十进制是2;
执行,权限是二进制的001,十进制是1;
即:各权限的对应数字为:r:4,w:2,x:1
每种身份( owner / group / others )各自的三个权限( r / w / x )数字是需要累加的。
例:
当权限为: [ -rwxrwx--- ] 时
分数为:
owner = rwx = 4+2+1 = 7
group = rwx = 4+2+1 = 7
others = --- = 0+0+0 = 0
所以当设定权限的变更时,该文件的权限数字就是770。
变更权限的命令的语法为:chmod [选项] xyz 文件名或目录名
注:xyz : 就是数字类型的权限属性,为 rwx 属性数值的相加
如图,将权限改为777后,所有身份均具有读、写、执行权限。
2)用字符更改
九个权限分别是 user、group、others 三种身份的权限,那么可用 u、g、o 来代表三种身份的权限,此外,用 a 代表 all 表示所有的身份。
则变更权限的命令的语法为:chmod 身份 符号 权限 文件名或目录名
如图,更改权限