Linux 文件权限是控制文件和目录访问的核心机制,决定用户可以对文件执行的操作。本文将以简明的技术语言介绍 Linux 文件权限的组成、查看方式、修改方法及实际应用,适合初学者了解基础知识。
- 文件权限的定义
Linux 文件权限定义了三类用户的访问权限:
- 所有者(User):创建文件的用户。
- 组(Group):与文件关联的用户组。
- 其他用户(Others):除所有者和组成员外的用户。
每类用户有三种权限:
- 读(r, read):允许读取文件内容或列出目录内容。
- 写(w, write):允许修改文件内容或在目录中创建/删除文件。
- 执行(x, execute):允许运行可执行文件或进入目录。
- 查看文件权限
使用 ls -l 命令查看文件或目录权限。例如:
bash
ls -l
输出:
-rwxr-xr-x 1 alice alice 1234 Jun 25 12:00 myfile.sh
-
第一个字符(-):表示文件类型,- 为普通文件,d 为目录。
-
后续 9 个字符分为三组:
- 第 2-4 位(rwx):所有者权限,读+写+执行。
- 第 5-7 位(r-x):组权限,读+执行。
- 第 8-10 位(r-x):其他用户权限,读+执行。
权限也可用数字表示:
- 读(r)= 4,写(w)= 2,执行(x)= 1,无权限 = 0。
- 每组权限的数字为三者之和。例如,rwx = 4+2+1 = 7,r-x = 4+1 = 5。 因此,rwxr-xr-x 对应数字 755。
- 修改文件权限
使用 chmod(change mode)命令修改权限,支持两种模式:
字母模式
通过 u(所有者)、g(组)、o(其他用户)和 +(添加)、-(移除)、=(设定)调整权限。例如:
-
给其他用户添加写权限:
bash
chmod o+w myfile.sh原权限 rwxr-xr-x(755)变为 rwxr-xrwx(777)。
-
移除组的执行权限:
bash
chmod g-x myfile.sh原权限 rwxr-xr-x(755)变为 rwxr--r-x(745)。
数字模式
用三位数字直接设置权限。例如:
bash
chmod 655 myfile.sh
权限变为 rw-r-xr-x:
- 所有者:6(读+写,4+2)
- 组:5(读+执行,4+1)
- 其他用户:5(读+执行,4+1)
- 删除文件的权限要求
删除文件需要对文件所在目录有写(w)和执行(x)权限,即使文件本身没有写权限。例如,目录权限为 rwxr-xrwx(777),任何用户都可删除目录中的文件。
- 权限设置注意事项
-
避免 777 权限:rwxrwxrwx 允许所有用户读、写、执行,存在安全风险,仅用于临时共享。
-
谨慎使用 root 权限:通过 sudo 修改权限时,需确保不会影响系统文件安全。
-
使用组或 ACL:多人协作时,可通过组权限或访问控制列表(ACL)精确分配权限。例如:
bash
setfacl -m u:bob:rw myfile.sh授予用户 bob 读写权限。
- 实际应用:PHP 程序权限设置
以运行 PHP 程序为例,假设程序在 /var/www/html/myapp,由 webroot 用户执行:
-
设置目录权限,允许 webroot 读写执行:
bash
chmod -R 755 /var/www/html/myapp chown -R webroot:webroot /var/www/html/myapp -
允许其他用户读取但不可修改:
bash
chmod -R 755 /var/www/html/myapp