Linux 档案权限详解

时间:2022-05-18 12:19:17

前言

chmod 770 test.txt

上面的命令的意思是将文档 test.txt 的权限改为 rwxrwx---,而 770代表是什么含义呢。本篇文章就来详细介绍 Linux 下档案的权限。

用户角色

在介绍档案权限之前先来介绍 Linux 中有哪几种用户角色。

  • owner — 档案拥有者;
  • group — 群组;
  • other — 其他人,除了档案拥有者和同一群组的其他人。

文档属性

登陆之后使用 ls -al,得到结果如下图 7 组属性。

Linux 档案权限详解

第一列:代表文档的类型和权限(本篇文章主要内容);
第二列:代表有多少档案连结到此节点(不做具体阐述);
第三列:代表文档拥有者;
第四列:代表文档所属群组;
第五列:代表文档大小;
第六列:代表文档日期或者最近修改日期
第七列:代表文档名称

第一列中的十个属性,可以分为四组,如下图:

Linux 档案权限详解

第一组,代表这个档案的类型:

  • d: 代表目录;
  • -: 代表文档;
  • l: 代表连结;
  • b: 装置文件里面的可供储存的接口讴备(可随机存取装置);
  • c: 装置文件里面的串行端口讴备,例如键盘、鼠标(一次怅读取装置)。

第二,三,四组,分别表示档案拥有者,通群组和其他人对此文档的权限:

  • r — 读权限
  • w — 写权限
  • x — 可执行权限

所以,上图中 .Trash 的文件类型是路径;它的拥有者对它有读写和执行的权限;它的所属群组里的用户对它没有读写和执行的权限;其他人对它没有读写和执行的权限。

权限对目录和文档的意义

权限对目录的意义

  • r — 表示对此目录具有读取目录结构列表的权限,可以查询该目录下的文件名,可以使用ls命令列出该目录的内容列表。

  • w — 具有异劢该目彔结构列表的权限,也就是底下这些权限:

    1. 建立新的档案和目录
    2. 删除已存在的档案和目录
    3. 重命名已存在的档案和目录
    4. 移动目录内的档案和目录
  • 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 身份才能执行