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 文件