在Linux操作系统中,文件权限是保障系统安全与数据管理的核心机制,与Windows等系统不同,Linux采用基于用户和组的权限模型,通过精细化的权限控制实现对文件和目录的访问管理,理解文件权限不仅有助于系统管理员高效管理服务器资源,也是普通用户安全使用Linux系统的基础,本文将从权限的基本概念、表示方法、修改命令、高级特性及实践应用等方面,全面解析Linux中的文件权限机制。

文件权限的基本概念
Linux系统中的每个文件和目录都关联三类所有者:用户所有者(User)、组所有者(Group)和其他用户(Others),每类所有者都具备三种基本权限:读取(Read)、写入(Write)和执行(Execute),这三类权限共同构成了文件权限的基础,确保不同用户对资源的访问范围得到明确限制。
- 读取权限(r):允许用户查看文件内容或列出目录中的文件列表,对于目录而言,读取权限意味着可以使用
ls命令查看目录下的文件名,但无法访问目录内部文件的详细信息。 - 写入权限(w):允许用户修改文件内容或删除、重命名目录中的文件,需要注意的是,目录的写入权限并不直接控制文件的修改,而是决定用户是否能在目录中创建、删除或移动文件。
- 执行权限(x):允许用户执行文件(如脚本、二进制程序)或进入目录(使用
cd命令),对于普通文件,执行权限意味着系统将其视为可运行程序;对于目录,执行权限是访问目录内文件的必要条件,缺少执行权限时,即使有读取权限也无法查看目录内容。
Linux还引入了特殊权限(如SUID、SGID、Sticky Bit)和访问控制列表(ACL),以应对更复杂的权限管理需求,这些将在后续章节详细讨论。
权限的表示方法
Linux通过字符和数字两种方式表示文件权限,字符表示法更直观,数字表示法则便于批量操作。
字符表示法
使用ls -l命令可查看文件的详细权限信息,
-rw-r--r-- 1 user group 0 Jan 1 12:00 example.txt
输出结果的首字符表示文件类型(为普通文件,d为目录,l为链接文件等);后续9字符分为三组,分别对应用户所有者、组所有者和其他用户的权限,每组3字符依次为读取(r)、写入(w)、执行(x),若某位权限被拒绝,则显示为,如上述示例中,用户所有者具备读写权限(rw-),组用户和其他用户仅具备读权限(r–)。
数字表示法
Linux将每种权限映射为数字:读取(r)=4,写入(w)=2,执行(x)=1,将每类用户的权限数字相加,即可得到3位数字表示的总权限。
rwx= 4+2+1 = 7(完全权限)rw-= 4+2+0 = 6(读写权限)r-x= 4+0+1 = 5(读执行权限)r--= 4+0+0 = 4(仅读权限)
rwxr-xr--对应的数字表示为754,即用户所有者完全权限,组用户读执行权限,其他用户仅读权限。
修改文件权限的命令
Linux提供了chmod(修改权限)、chown(修改所有者)、chgrp(修改组所有者)三个核心命令,用于管理文件权限和所有者信息。
chmod命令:修改权限
chmod命令支持字符和数字两种语法,格式为chmod [选项] 权限模式 文件/目录。

-
字符语法:通过
u(用户所有者)、g(组用户)、o(其他用户)、a(所有用户)表示对象,(添加权限)、(移除权限)、(设置权限)表示操作。chmod u+x script.sh:为用户所有者添加执行权限。chmod g-w file.txt:移除组用户的写入权限。chmod a=rwx dir:为所有用户设置完全权限。
-
数字语法:直接通过3位数字设置权限,
chmod 755 script.sh:设置用户所有者权限为7(rwx),组用户和其他用户权限为5(r-x)。chmod 644 file.txt:设置用户所有者权限为6(rw-),组用户和其他用户权限为4(r–)。
chown命令:修改所有者
chown命令用于修改文件的用户所有者和组所有者,格式为chown [选项] 所有者:组 文件/目录。
chown user file.txt:修改文件的用户所有者为user。chown user:group file.txt:同时修改用户所有者和组所有者。chown -R user dir:递归修改目录及其内部所有文件的所有者(-R选项表示递归操作)。
chgrp命令:修改组所有者
chgrp命令专门用于修改文件的组所有者,格式为chgrp [选项] 组 文件/目录。
chgrp group file.txt:修改文件的组所有者为group。chgrp -R group dir:递归修改目录及其内部所有文件的组所有者。
特殊权限与高级特性
除了基本权限,Linux还支持特殊权限,用于实现更精细化的控制。
SUID(Set User ID)
SUID权限仅对可执行文件有效,当用户执行具有SUID权限的文件时,将以文件所有者的身份运行,而非执行者自身,典型示例是passwd命令,普通用户执行时需以root权限修改密码文件,因此passwd命令被设置了SUID权限(显示为s而非x),设置SUID权限的命令为chmod u+s file或chmod 4755 file。
SGID(Set Group ID)
SGID权限可应用于文件和目录,对于文件,执行文件时将以文件组所有者的身份运行;对于目录,目录中新创建的文件将自动继承目录的组所有者,常用于团队协作场景,确保目录内文件的组所有者统一,设置SGID权限的命令为chmod g+s dir或chmod 2755 dir。
Sticky Bit
Sticky Bit权限仅对目录有效,作用是限制用户删除目录中的文件,即使某用户对目录具备写入权限,也只能删除自己拥有的文件,而无法删除其他用户的文件(root用户除外),典型示例是/tmp目录,所有用户均可创建临时文件,但无法删除他人文件,设置Sticky Bit的命令为chmod +t dir或chmod 1777 dir。
访问控制列表(ACL)
ACL是对传统权限模型的扩展,允许为用户或组设置更精细的权限,而不仅仅是三类所有者,使用setfacl和getfacl命令管理ACL:

setfacl -m u:user:rw file.txt:为指定用户user设置读写权限。getfacl file.txt:查看文件的ACL权限。
文件权限的实践应用
合理配置文件权限是Linux系统安全的关键,以下为常见场景的实践建议:
用户目录权限
普通用户的家目录权限通常设置为700或750,确保只有用户本人或所属组成员可访问,避免隐私泄露。
chmod 700 /home/user
共享目录权限
团队共享目录可设置775权限,允许组成员读写执行,其他用户仅读执行,若需限制删除文件,可添加Sticky Bit:
chmod 2775 /shared/dir
系统关键文件
系统关键文件(如/etc/passwd、/etc/shadow)应严格限制权限。/etc/shadow仅允许root用户读取和写入:
chmod 600 /etc/shadow
脚本与程序
可执行脚本需设置执行权限,但需注意避免赋予不必要的写入权限,防止恶意修改:
chmod 755 script.sh
Linux文件权限机制通过用户、组和其他用户的三层权限模型,结合读取、写入、执行三种基本权限,实现了灵活且精细的资源访问控制,掌握chmod、chown、chgrp等命令的使用,理解特殊权限和ACL的作用,并结合实际场景合理配置权限,是保障Linux系统安全稳定运行的基础,无论是个人用户还是系统管理员,都应充分重视文件权限管理,遵循最小权限原则,避免因权限配置不当导致的安全风险。















