1179 字
6 分钟
Linux 文件权限

权限#

1. 文件权限#

在 Linux/Unix 系统中,每个文件和文件夹都包含一组权限设置,用来决定谁可以访问和操作它。

对于这部分的具体内容,我们已经在用户管理中的用户与用户组详细介绍了

如果,你完全看得懂下面的内容,那么请继续阅读即可,否则,就应该去复习了

Terminal window
drwxr-xr-x 2 elo operator 4096 Dec 1 11:45 /home/elo

2. 修改权限#

我们可以使用 chmod 修改文件权限,chmodchange mode的缩写,其中mode指的就是“文件权限模式”

我们知道,权限有用户的权限、组的权限和其他人的权限,有两种方法可以修改它们:

如果你只希望修改一部分的权限:

比如只给用户加执行权限,或者只给组加写权限),最推荐的还是用符号法,因为它可以“叠加”或“去除”某项权限,而不会影响其它权限。

例如:

Terminal window
chmod u+x file 给用户增加执行权限
chmod g-w file 去掉组的写权限
chmod o+r file 给其他人增加阅读的权限

这样的写法是顾名思义的,只要认识,并且会使用如下的符号就可以了

  1. u:用户(user/owner)

  2. g:组(group)

  3. o:其他人(others)

  4. a:所有人(all)

  5. +:添加权限

  6. -:去除权限

如果你希望同时修改所有权限:

一次性指定所有三组权限,那么推荐的还是数字法

例如:

Terminal window
chmod 755 file
chmod 644 file

相比于符号法,数字法就没有那么顾名思义了,下面,让我们具体介绍其中的规则:

  1. 每种权限是一个数字: r = 4, w = 2, x = 1
  2. 三个数字,例如上面的 755644,从前往后分别代表用户、组、其它
  3. 其中的每个数字,组合权限用加法,例如:rwx = 4+2+1 = 7,那么意味着它拥有读取,修改和执行的权限

所以我们就可以对如上的例子进行解释,例如 chmod 755 file,那意味着给用户设置读写和执行的权限,给组和其他人设置读和执行的权限

随便改权限有可能让敏感文件被所有人修改,如果你在修改权限,请清楚这一点

3. 所有权权限#

除了可以修改文件的权限之外,你还可以修改文件的所有者(用户)和用户组

修改文件的所有者(用户)#

Terminal window
$ sudo chown elo myfile

可以使用 chown(change owner)来修改文件的所有者。

注意:只有 root 用户才能更改文件的所有者。普通用户不能把文件的所有者改成别人。

修改文件的组#

Terminal window
$ sudo chgrp operator myfile

可以使用 chgrp(change group)来修改文件的所属组。

文件的拥有者本人和 root 用户都可以更改文件的组(前提是目标组也是该用户所属的组)。

同时修改所有者和组#

Terminal window
$ sudo chown elo:operator myfile

在用户名后加冒号(:)和组名,可以同时修改文件的拥有者和组

4. umask#

umask,全称是 user file creation mask,意思是用户文件创建权限掩码“

决定了新建文件或目录时,默认“去掉”哪些权限

前面我们学习了数字法修改权限,在 Linux 中,**新建文件的”理论最大权限“**一般是:

  • 文件:666(rw-rw-rw-,所有人读写)

  • 目录:777(rwxrwxrwx,所有人读写执行)

但是,当我们实际创建文件和目录的时候,权限通常不会那么开放,例如,你创建一个文件的时候,默认不希望其他人可以读写它,那么就可以套用一个”umask”,在创建文件的时候,自动取消部分权限

例如,我们可以将 umask 设置为 022,那么:

  • 文件的最大权限是 666

    666 - 022 = 644(rw-r—r—)

    所以新建文件默认只有自己可读写,组和其他人只能读

  • 目录的最大权限是 777

    777 - 022 = 755(rwxr-xr-x)

    新建目录自己可读写执行,组和其他人只能读和执行(可以进入目录)

5. SetuidS#

在用户管理的最后一个部分,我们提到了可以使用 passwd 命令修改密码

作为一个普通用户,你当然可以使用 passwd 命令修改自己的密码。但是密码,正如我们所知,密码是存储在 /etc/shadow 中的,然而这个文件是不支持一个普通用户去修改的,所以你到底可不可以修改自己的密码呢?

我先来引入一个简单的例子:

Linux 文件权限
https://mizuki.mysqil.com/posts/linux/6_permissions/
作者
Elopez
发布于
2025-10-02
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

封面
示例歌曲
示例艺术家
封面
示例歌曲
示例艺术家
0:00 / 0:00