Linux 文件基本属性
Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。
在 Linux中我们可以使用 ls -l
或者 ll
命令来显示一个文件的属性以及文件所属的用户和组,如:
drwxrwxr-x. 2 zong zong 6 4月 30 08:50 work
-rw-rw-r--. 1 zong zong 20480 4月 30 08:50 py.tar
...
实例中,work 文件第一个属性为 d
,d 在 Linux中代表该文件是一个目录文件
在Linux中第一个字符代表这个文件是目录,文件或者链接文件等等
d
: 目录-
: 文件l
: 链接文档b
: 为装置文件里可供储存的接口设备c
: 为装置文件里边的串行端口设备,例如键盘,鼠标
在接下来的参数中,以三个为一组,且均为 rwx
三个参数的组合。其中 r
代表可读"read",w
代表可写"write",x
代表可执行"execute"。需要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现 -
而已。
三种权限的表示方式除了可以使用字母来表示,也可以使用二进制来表示(111),或者使用十进制来表示,最常用的就是字母表示和转换后的十进制表示方式,如图所示:
# 文件权限的不同表示方式
---------------------------------
r-- 4 只读权限
rw- 6 读写权限
rwx 7 所有权限[读写执行]
---------------------------------
-rw-rw-r-- 664 一个文件当前用户读写权限 | 用户组读写权限 | 其它用户只读权限
drw-r--r-- 644 一个目录当前用户读写权限 | 用户组只读权限 | 其它用户只读权限
Linux文件属主和属组
对于文件来说,它都有一个特定的所有者,也就是对该文件具有所有权的用户
同时,在 Linux系统中,用户是按组分类的,一个用户属于一个或多个组
文件所有者以外的用户又可以分为文件所有者的同组用户和其它用户
因此,Linux系统按文件所有者,文件所有者同组用户 和 其它用户 来规定了不同的文件访问权限
对于 root 用户来说,一般情况下,文件的权限对其不起作用
chgrp 更改文件属组
chgrp [-R] 属组名 文件名
-R : 递归更改文件属组。在更改某个目录文件属组时,该目录下所有文件的属组都会更改
chown 更改文件属主,属组
chown [-R] 属主名 文件名
chown [-R] 属主名:属组名 文件名
chmod 更改文件属性
Linux 文件属性有两种设置方法,一种是数字,一种是符号
1. 数字方式修改文件权限
Linux文件的基本权限有九个,分别是 owner / group / others
三种身份各有自己的 read / write / execute
权限
这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,对照表如下:
- r : 4
- w : 2
- x : 1
每种身份各自的三个权限 (r/w/x) 分数是需要累加的,例如当权限为 [-rwxrwx---
],分数则是:
- owner = rwx = 4+2+1 = 7
- group = rwx = 4+2+1 = 7
- other = — = 0+0+0 = 0
所以我们设定权限的时候,该文件的权限数字就是 770 !
变更权限的指令 chmod
语法是这样的:
chmod [-R] xyz 文件或目录
- xyz : 就是上边的数字类型的权限属性,为 rwx 属性数值的相加
- -R : 进行递归的持续变更,连同目录下的所有文件都会变更
示例:
# 给予文件 rwxrwxrwx 权限
chmod 777 文件
# 基于文件 rwxr-xr-- 权限
chmod 754 文件
2. 符号类型修改文件权限
还有一种改变权限的方法,从之前的介绍中我们可以发现,基本上九个权限分别为:
- user
- group
- others
那么我们就可以使用 u,g,o 来代表三种身份的权限
此外, a 则代表 all ,即全部的身份。读写执行的权限可以写成 r,w,x,也就是可以使用下图的方式来看:
示例:
# 给文件设置 rwxr-xr-- 权限
chmod r=rwx,g=rx,o=r 文件
# 将other用户权限设置为 r--
chmod o=r 文件
# 去除所有用户的可执行权限
chmod a-x 文件