Linux 文件基本属性
Linux 系统是一种典型的多用户系统,不同的用户处于不同的地位,并拥有不同的权限。
为了保护系统的安全性,Linux 对不同用户访问同一个文件(包括目录)的权限进行了不同的规定。
在 Linux 中,我们通常使用以下命令来修改文件或目录的所属用户、所属组以及权限:
chown(change owner):修改文件所属用户与组chmod(change mode):修改文件或目录的权限chgrp(change group):修改文件所属组
可以简单理解为:
chown负责确定“谁拥有这个文件”,chmod负责确定“不同用户能够对这个文件做什么”。

一、查看 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 文件权限的 10 个字符
每个文件的属性通常由左边的 10 个字符确定。

可以按照以下方式理解:
-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 系统中的用户按照组进行分类,一个用户可以属于一个或多个组。
因此,文件所有者以外的用户可以进一步分为:
- 文件所属组中的用户
- 其他用户
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:其他用户
每一种身份都有自己的:
readwriteexecute
权限。
因此,Linux 文件基本权限一共有 9 个权限位:
rwx rwx rwx
│ │ │
│ │ └── others
│ └────── group
└────────── owner
Linux 中修改权限主要有两种方式:
- 数字方式
- 符号方式
十一、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 权限管理、服务器运维以及故障排查中非常基础且重要的知识。