Linux文件属性及权限
文件属性
Linux 是一个多人多任务的环境, 因此文件的权限控制非常重要. Linux中一般将操作文件的身份分为三个类别:owner/group/others
,且三种身份各有read/write/execute
等权限.
使用ls
命令查看当前目录下文件的属性:
ls -al
total 72K
dr-xr-x---. 16 root root 4.0K Mar 18 16:12 .
dr-xr-xr-x. 17 root root 244 Mar 16 14:06 ..
-rw-r--r--. 1 root root 0 Mar 6 11:06 50
-rw-------. 1 root root 1.2K Mar 5 21:20 anaconda-ks.cfg
-rw-------. 1 root root 9.9K Mar 16 14:48 .bash_history
-rw-r--r--. 1 root root 18 May 11 2019 .bash_logout
-rw-r--r--. 1 root root 176 May 11 2019 .bash_profile
-rw-r--r--. 1 root root 176 May 11 2019 .bashrc
drwx------. 14 root root 4.0K Mar 5 15:22 .cache
drwx------. 15 root root 279 Mar 16 14:26 .config
-rw-r--r--. 1 root root 100 May 11 2019 .cshrc
drwx------. 3 root root 25 Mar 5 13:23 .dbus
drwxr-xr-x. 2 root root 6 Mar 5 13:49 Desktop
...
文件属性分为7个部分,从左到右依次是:文件类型和权限,连接数,拥有者,群组,文件容量,修改日期和文件名。
1. 文件的类型与权限(permission)
drwxrwxr-x
我们拆分为d
rwx
rwx
r-x
四个部分,第一部分代表文件类型,类型有:
-
[ d ] 表示目录
-
[ - ] 表示文件
-
[ l ] 表示连结档(link file)
-
[ b ] 表示装置文件里面的可供储存的接口设备(可随机存取装置)
-
[ c ] 表示装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)
剩余的三个部分分别表示文件拥有者可具备的权限,加入此群组账号的权限和非本人且没有加入本群组之其他账号的权限。其中rwx分别表示:[ r ]代表可读(read)、[ w ]代表 可写(write)、[ x ]代表可执行(execute)。如果没有权限,就用减号[ - ]表示。
2. 连接数(i-node)
每个文件都会将他的权限与属性记录到文件系统的 i-node
中,不过我们使用的目录树却是使用文件名来记录,因此每个档名就会连结到一个 i-node
。这个属性记录的就是有多少不同的档名连结到相同的一个 i-node
号码了。
3. 拥有者
表示这个文件(或目录)的拥有者账号
4. 群组
在 Linux 系统下,你的账号会加入于一个或多个的群组中。例如p1,p2,p3均属于 people 这个群组,假设某个文件所属的群组为 people,且该文件的权限为(-rwxrwx---
),则p1,p2,p3三人对于该文件都具有可读、可写、可执行的权限(看群组权限)。 但如果是不属于people群组的其他账号,对于此文件就不具有任何权限了。
5. 文件容量
代表文件的容量大小,默认单位为 bytes。
6. 修改日期
代表文件创建或最后修改的日期。
7. 文件名
如果为隐藏文件,则以.
开头。
更改文件属性和权限
涉及的指令:
chgrp
:改变文件所属群组chown
:改变文件拥有者chmod
:改变文件的权限
1. chgrp(change group)
语法:
chgrp [-R] dirname/filename ...
# 选项与参数:
# -R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件、
# 目录都更新成为这个群组之意。常常用在变更某一目录内所有的文件的情况。
例如,改变文件demo.md的群组为demo:
ls -l
total 8.0K
-rw-r--r--. 1 root root 0 Mar 18 16:24 demo.md
...
chgrp demo demo.md
ls -l
total 8.0K
-rw-r--r--. 1 root demo 0 Mar 18 16:24 demo.md
...
2. chown(change owner)
chown
不但可以改变文件拥有者,也可以改变群组. 语法如下:
chown [-R] 账号名称 文件或目录
chown [-R] 账号名称:组名 文件或目录
# 选项与参数:
# -R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都变更
例如:将demo.md的拥有者改为demo:
ls -l
total 8.0K
-rw-r--r--. 1 root demo 0 Mar 18 16:24 demo.md
...
chown demo demo.md
ls -l
total 8.0K
-rw-r--r--. 1 demo demo 0 Mar 18 16:24 demo.md
...
例如:将demo.md的拥有者和群组都改为root:
chown root:root demo.md
ls -l
total 8.0K
-rw-r--r--. 1 root root 0 Mar 18 16:24 demo.md
...
3. chmod
改变权限有两种方式:数字类型和符号类型
数字类型
rwx
分别代表421,例如当权限为: [-rwxrwx---
] 对应的数字则是:
owner = rwx = 4+2+1 = 7
group = rwx = 4+2+1 = 7
others = — = 0+0+0 = 0
数字类型改变权限语法:
chmod [-R] xyz 文件或目录
# 选项与参数:
# xyz : 就是刚刚提到的数字类型的权限属性,为 rwx 属性数值的相加。
# -R : 进行递归(recursive)的持续变更,亦即连同次目录下的所有文件都会变更
例如:将demo.md的权限都启用:
ls -l
total 8
-rw-r--r--. 1 root root 0 Mar 18 16:24 demo.md
...
chmod 777 demo.md
ls -l
total 8
-rwxrwxrwx. 1 root root 0 Mar 18 16:24 demo.md
...
符号类型
在符号类型改变权限的规则中,我们使用u
,g
,o
来代表user
,group
和owner
三种身份的权限。此外,a
则代表 all
亦即全部的身份, 详见下表:
命令 | 身份 | 操作 | 权限 | 目标 |
---|---|---|---|---|
chmod | u g o a | + (加入) - (除去) = (设定) | r w x | 文件 / 目录 |
例如,将文件demo.md
的权限改为-rw-r--r--
:
chmod u=rw,go=r demo.md
ls -l
total 8
-rw-r--r--. 1 root root 0 Mar 18 16:24 demo.md
...
例如,增加文件demo.md
每个人均可写入的权限:
chmod a+w demo.md
ls -l
total 8
-rw-rw-rw-. 1 root root 0 Mar 18 16:24 demo.md
...
权限的意义
1.对于文件来说,rwx
代表:
-
r (Read):可读取此文件的实际内容, 如读取文本文件的文字内容等
-
w (Write):可以编辑、新增或者是修改该文件的内容(但不含删除该文件)
-
x (eXecute):该文件具有可以被系统执行的权限(类似与window中的exe,bat等)
2.对于目录来说,rwx
代表:
-
r (read contents in directory):表示具有读取目录结构列表的权限,所以当你具有读取(
r
)一个目录的权限时,表示你可以查询该目录下的文件名数据. 所以你就可以利用ls
这个指令将该目录的内容列表显示出来 -
w (modify contents of directory):表示你具有修改该目录结构列表的权限,也就是可以对该目录或者其下的文件进行增删改操作
-
x (access directory):目录的
x
代表的是用户能否进入该目录成为工作目录,所谓的工作目录(work directory)就是你目前所在的目录))