前言
chmod 770 test.txt
上面的命令的意思是将文档 test.txt 的权限改为 rwxrwx---
,而 770
代表是什么含义呢。本篇文章就来详细介绍 Linux 下档案的权限。
用户角色
在介绍档案权限之前先来介绍 Linux 中有哪几种用户角色。
- owner — 档案拥有者;
- group — 群组;
- other — 其他人,除了档案拥有者和同一群组的其他人。
文档属性
登陆之后使用 ls -al
,得到结果如下图 7 组属性。
第一列:代表文档的类型和权限(本篇文章主要内容);
第二列:代表有多少档案连结到此节点(不做具体阐述);
第三列:代表文档拥有者;
第四列:代表文档所属群组;
第五列:代表文档大小;
第六列:代表文档日期或者最近修改日期
第七列:代表文档名称
第一列中的十个属性,可以分为四组,如下图:
第一组,代表这个档案的类型:
- d: 代表目录;
- -: 代表文档;
- l: 代表连结;
- b: 装置文件里面的可供储存的接口讴备(可随机存取装置);
- c: 装置文件里面的串行端口讴备,例如键盘、鼠标(一次怅读取装置)。
第二,三,四组,分别表示档案拥有者,通群组和其他人对此文档的权限:
- r — 读权限
- w — 写权限
- x — 可执行权限
所以,上图中 .Trash 的文件类型是路径;它的拥有者对它有读写和执行的权限;它的所属群组里的用户对它没有读写和执行的权限;其他人对它没有读写和执行的权限。
权限对目录和文档的意义
权限对目录的意义
r — 表示对此目录具有读取目录结构列表的权限,可以查询该目录下的文件名,可以使用
ls
命令列出该目录的内容列表。-
w — 具有异劢该目彔结构列表的权限,也就是底下这些权限:
- 建立新的档案和目录
- 删除已存在的档案和目录
- 重命名已存在的档案和目录
- 移动目录内的档案和目录
x — 表示能否进入该目录,如果没有此权限将不能进入此目录。
权限对文档的意义
- r — 可以读取该文档的内容;
- w — 可以修改该文档的内容,但不能删除该文档;
- x — 该档案具有可以被系统执行的权限。
改变档案属性和权限
改变所属群组(chgrp)
使用命令chgrp
可以改变档案拥有者。命令具体用法如下:
chrgp groupname dirname/filename
groupname:将要改为的群组名称;
dirname/filename: 档案路径和名称。
改变档案拥有者(chown)
使用命令chown
可以改变档案拥有者。命令具体用法如下:
chown username dirname/filename
username: 将要改为的拥有者的用户名;
dirname/filename: 档案路径和名称。
修改档案权限
使用命令chmod
修改档案权限。修改档案的权限有多种方式。命令格式如下:
chmod mod dirname/filename
mod:想要变更为的权限;
dirname/filename: 档案路径和名称。
数字类型方式
档案的基本权限有九个,分别是 owner/group/other 的 read/write/execute 权限。可以用数字代表各个权限。各个权限对应的数字如下:
- r (read) — 4;
- w (write) — 2;
- x (execute) — 1。
每种角色(owner/group/other)都有自己的三个权限数,把这三个权限数累加就代表此角色的权限。例如;-rwxr-xr–,把它转成数字表示为:
owner = 4 + 2 + 1 = 7;
group = 4 + 0 + 1= 5;
other = 4 + 0 + 0 = 4;
所以,如果我们想让上图中 .Trash 的同群组的用户对其有读的权限,即drwxr-----
,我们就可以使用如下命令:
chmod 740 .Trash
符号类型方式
我们使用u/g/o
分别代表,文档拥有者/群组/其他人,a 代表所有角色。使用r/w/x
分别代表,读/写/执行。使用+/-/=
分别代表,加入/减去/设定。同样的如果我们想让上图中 .Trash 的同群组的用户对其有读的权限,即drwxr-----
,我们就可以使用如下命令:
chmod u=rwx,g=r .Trash
但是,如果我们不知文档原有的权限是什么,只想给同群组的添加读权限,其他不变,我们就不方便使用=
了。可以使用+
,如下:
chmod g+r .Trash
如果只想去掉拥有者的写权限,可以使用-
,如下:
chmod u-w .Trash
注意:chgrp,chown,chmod
都需要 root 身份才能执行