天天不宕机
Linux基础

Linux 文件基本属性

MrLutian,2026-09-30,25 分钟读完

Linux 系统是一种典型的多用户系统,不同的用户处于不同的地位,并拥有不同的权限。

为了保护系统的安全性,Linux 对不同用户访问同一个文件(包括目录)的权限进行了不同的规定。

在 Linux 中,我们通常使用以下命令来修改文件或目录的所属用户、所属组以及权限:

  • chown(change owner):修改文件所属用户与组
  • chmod(change mode):修改文件或目录的权限
  • chgrp(change group):修改文件所属组

可以简单理解为:

chown 负责确定“谁拥有这个文件”,chmod 负责确定“不同用户能够对这个文件做什么”。

Linux 文件权限示意图


一、查看 Linux 文件基本属性

在 Linux 中,可以使用:

ll

或者:

ls -l

查看文件的详细属性,包括文件类型、权限、所有者、所属组、大小、修改时间等。

例如:

[root@www /]# ls -l
total 64
dr-xr-xr-x   2 root root 4096 Dec 14  2012 bin
dr-xr-xr-x   4 root root 4096 Apr 19  2012 boot
……

其中:

dr-xr-xr-x

就是文件的权限属性。


二、文件类型

在 ls -l 输出结果中,第一个字符用于表示文件的类型。

例如:

dr-xr-xr-x
^
文件类型

Linux 中常见的文件类型如下:

字符 类型 说明
d Directory 目录
- Regular File 普通文件
l Link 链接文件
b Block Device 块设备文件,可随机存取设备
c Character Device 字符设备文件,例如键盘、鼠标等

例如:

dr-xr-xr-x

第一个字符是:

d

因此表示这是一个目录文件。


三、r、w、x 权限

文件类型之后的 9 个字符用于表示文件的权限。

例如:

-rwxrwxrwx

其中:

  • r:read,可读
  • w:write,可写
  • x:execute,可执行
  • -:没有对应权限

这三个权限的位置是固定的。

如果拥有对应权限,就显示:

r
w
x

如果没有对应权限,则显示:

-

例如:

-rwxr-xr--

表示:

  • rwx:拥有者具有读、写、执行权限
  • r-x:所属组具有读、执行权限
  • r--:其他用户只有读权限

Linux 文件权限


四、Linux 文件权限的 10 个字符

每个文件的属性通常由左边的 10 个字符确定。

Linux 文件权限结构

可以按照以下方式理解:

-rwxrwxrwx
│├───┤├───┤├───┤
│ owner group others
│
└── 文件类型

从左到右使用 0-9 表示:

位置:  0   1 2 3   4 5 6   7 8 9
       │   └──┬──┘   └──┬──┘   └──┬──┘
       │      │          │          │
       │    属主权限    属组权限    其他用户权限
       │
       └── 文件类型

具体含义:

位置 含义
第 0 位 文件类型
第 1~3 位 文件属主权限
第 4~6 位 文件属组权限
第 7~9 位 其他用户权限

4.1 属主权限

第 1~3 位表示文件所有者拥有的权限。

例如:

-rwx------

其中:

rwx

就是属主权限。


4.2 属组权限

第 4~6 位表示文件所属组用户拥有的权限。

例如:

----rwx---

其中:

rwx

就是属组权限。


4.3 其他用户权限

第 7~9 位表示其他用户拥有的权限。

例如:

-------rwx

其中:

rwx

就是其他用户权限。


五、权限字符的位置

权限字符的位置固定:

位置 权限 字符
第 1、4、7 位 读权限 r
第 2、5、8 位 写权限 w
第 3、6、9 位 执行权限 x

如果拥有权限,就显示对应字符。

如果没有权限,就显示:

-

例如:

-rwxr-xr--

可以拆分成:

- | rwx | r-x | r--
  |     |     |
  |     |     └── others
  |     └──────── group
  └────────────── owner

六、Linux 文件属主和属组

Linux 中的每个文件都有一个特定的所有者,也就是对该文件具有所有权的用户。

同时,Linux 系统中的用户按照组进行分类,一个用户可以属于一个或多个组。

因此,文件所有者以外的用户可以进一步分为:

  1. 文件所属组中的用户
  2. 其他用户

Linux 根据这三种身份规定不同的文件访问权限:

owner
  ↓
文件所有者

group
  ↓
文件所属组用户

others
  ↓
其他用户

例如:

[root@www /]# ls -l
total 64
drwxr-xr-x 2 root  root  4096 Feb 15 14:46 cron
drwxr-xr-x 3 mysql mysql 4096 Apr 21  2014 mysql
……

对于 mysql 目录:

drwxr-xr-x 3 mysql mysql 4096 Apr 21 2014 mysql
             │     │
             │     └── 属组
             └──────── 属主

其中:

  • 属主是 mysql
  • 属组是 mysql
  • 属主具有 rwx 权限
  • 属组具有 r-x 权限
  • 其他用户具有 r-x 权限

因此:

rwx r-x r-x
│   │   │
│   │   └── others
│   └────── group
└────────── owner

对于 root 用户来说,一般情况下,普通文件权限限制对其不起作用。


七、更改文件属性

Linux 中常用以下命令修改文件的所属组、所属用户和权限:

  • chgrp:修改文件所属组
  • chown:修改文件所有者,也可以同时修改所属组
  • chmod:修改文件权限

八、chgrp:更改文件所属组

8.1 基本语法

chgrp [-R] 属组名 文件名

参数说明

参数 说明
-R 递归修改目录及其下面所有文件的所属组

例如,对一个目录使用 -R:

chgrp -R developers /data/project

则该目录下的相关文件和子目录也会进行所属组修改。


九、chown:更改文件所有者

chown 用于修改文件所有者,也可以同时修改文件所属组。

9.1 只修改所有者

语法:

chown [-R] 所有者 文件名

9.2 同时修改所有者和所属组

语法:

chown [-R] 所有者:属组名 文件名

其中:

-R

表示递归修改。


9.3 修改文件所有者

进入 /root 目录:

cd ~

将 install.log 的拥有者修改为 bin:

[root@www ~]# chown bin install.log
[root@www ~]# ls -l
-rw-r--r--  1 bin  users 68495 Jun 25 08:53 install.log

可以看到:

bin

已经成为该文件的属主。


9.4 同时修改所有者和所属组

将 install.log 的拥有者和所属组都修改为 root:

[root@www ~]# chown root:root install.log
[root@www ~]# ls -l
-rw-r--r--  1 root root 68495 Jun 25 08:53 install.log

此时:

属主:root
属组:root

十、chmod:修改文件权限

chmod 用于修改文件或目录的权限。

Linux 文件基本权限分为三类身份:

  • owner:文件所有者
  • group:文件所属组
  • others:其他用户

每一种身份都有自己的:

  • read
  • write
  • execute

权限。

因此,Linux 文件基本权限一共有 9 个权限位:

rwx rwx rwx
│   │   │
│   │   └── others
│   └────── group
└────────── owner

Linux 中修改权限主要有两种方式:

  1. 数字方式
  2. 符号方式

十一、chmod 数字方式

11.1 权限与数字的对应关系

Linux 中可以使用数字表示权限:

权限 数值
r 4
w 2
x 1

每种身份的权限需要进行累加。

例如:

rwx

对应:

4 + 2 + 1 = 7

11.2 权限计算示例

假设文件权限为:

-rwxrwx---

则:

owner = rwx = 4 + 2 + 1 = 7
group = rwx = 4 + 2 + 1 = 7
others = --- = 0 + 0 + 0 = 0

因此权限数字为:

770

也就是说:

-rwxrwx---

等价于:

770

十二、chmod 命令语法

基本语法:

chmod [-R] xyz 文件或目录

参数说明:

参数 说明
xyz rwx 权限对应的数字之和
-R 递归修改目录及其子目录、文件的权限

12.1 chmod 777 示例

假设 .bashrc 当前权限为:

-rw-r--r--

查看文件:

[root@www ~]# ls -al .bashrc
-rw-r--r--  1 root root 395 Jul  4 11:45 .bashrc

执行:

[root@www ~]# chmod 777 .bashrc

再次查看:

[root@www ~]# ls -al .bashrc
-rwxrwxrwx  1 root root 395 Jul  4 11:45 .bashrc

此时:

-rwxrwxrwx

对应:

777

即:

owner  = rwx = 7
group  = rwx = 7
others = rwx = 7

12.2 chmod 754 示例

如果希望权限变成:

-rwxr-xr--

那么:

owner = rwx = 4 + 2 + 1 = 7
group = r-x = 4 + 0 + 1 = 5
others = r-- = 4 + 0 + 0 = 4

所以权限数字为:

754

即:

chmod 754 文件名

十三、chmod 符号方式

除了数字方式之外,还可以使用符号方式修改文件权限。

Linux 中三种身份分别可以用以下字符表示:

符号 含义
u user,文件所有者
g group,文件所属组
o others,其他用户
a all,所有身份

权限可以使用:

符号 含义
r read,读
w write,写
x execute,执行

权限操作符:

操作符 含义
+ 添加权限
- 删除权限
= 设置权限

因此可以组合成:

chmod [u/g/o/a] [+/−/=] [r/w/x] 文件或目录

十四、使用符号方式设置权限

假设需要将文件权限设置为:

-rwxr-xr--

可以执行:

chmod u=rwx,g=rx,o=r 文件名

例如:

# 创建 test1 文件
touch test1

# 查看 test1 默认权限
ls -al test1

-rw-r--r-- 1 root root 0 Nov 15 10:32 test1

# 修改 test1 权限
chmod u=rwx,g=rx,o=r test1

# 查看修改后的权限
ls -al test1

-rwxr-xr-- 1 root root 0 Nov 15 10:32 test1

最终:

-rwxr-xr--

对应:

owner  = rwx
group  = r-x
others = r--

十五、使用 - 删除权限

如果只想删除某项权限,而不影响其他已经存在的权限,可以使用 -。

例如,要删除所有用户的执行权限:

chmod a-x test1

查看结果:

ls -al test1

结果:

-rw-r--r-- 1 root root 0 Nov 15 10:32 test1

这里:

a

表示所有用户:

user + group + others

而:

-x

表示删除执行权限。


十六、Linux 文件权限速查

16.1 权限数字

r = 4
w = 2
x = 1

常见权限:

数字 权限 含义
0 --- 无权限
1 --x 执行
2 -w- 写
3 -wx 写 + 执行
4 r-- 读
5 r-x 读 + 执行
6 rw- 读 + 写
7 rwx 读 + 写 + 执行

16.2 常见三位权限

755 = rwxr-xr-x
644 = rw-r--r--
700 = rwx------
750 = rwxr-x---
770 = rwxrwx---
777 = rwxrwxrwx

十七、常用命令总结

命令 作用 示例
ls -l 查看文件详细属性 ls -l
ll 查看文件详细属性(常见别名) ll
chgrp 修改所属组 chgrp users file
chown 修改所有者 chown root file
chown user:group 同时修改所有者和所属组 chown root:root file
chmod 修改文件权限 chmod 755 file
chmod -R 递归修改权限 chmod -R 755 dir

十八、总结

Linux 文件权限的核心可以概括为:

文件类型
   +
owner 权限
   +
group 权限
   +
others 权限

例如:

-rwxr-xr--
│├───┤├───┤├───┤
│ owner group others
│
└── 文件类型

其中:

  • 第 1 个字符表示文件类型
  • r 表示读
  • w 表示写
  • x 表示执行
  • u 表示文件所有者
  • g 表示文件所属组
  • o 表示其他用户
  • a 表示所有用户

修改文件属性时:

# 修改所属组
chgrp group file

# 修改所有者
chown user file

# 同时修改所有者和所属组
chown user:group file

# 使用数字方式修改权限
chmod 755 file

# 使用符号方式修改权限
chmod u=rwx,g=rx,o=r file

# 删除所有用户的执行权限
chmod a-x file

掌握 ls -l、chown、chgrp 和 chmod,是 Linux 权限管理、服务器运维以及故障排查中非常基础且重要的知识。