广告

运维实战必备:Linux 文件权限全解与 chmod 实操,一看就会

Linux 文件权限基础

权限位与所有者、所属组、其他用户

核心概念:Linux 将访问控制分为三组用户,分别是所有者、所属组和其他用户。每一组都拥有读取、写入、执行三种基本权限,用 r、w、x 来表示

在文件系统中,权限位的九位结构体现为三段三位的组合,通常以“drwxr-xr-x”这类字符串呈现。首字符表示文件类型,后面的三组分别对应 owner、group、others 的权限。

$ ls -l /example/file
-rw-r--r-- 1 user group 1234 Jan 01 12:00 sample.txt

要点总结:r、w、x 的组合决定了谁能做什么,理解这三组权限是进行后续修改的前提。

数字权限与符号权限的对照

数字权限模式用三位数字表示 owner、group、others 的权限总和;每位数字都是 0-7 的值,等效地对应若干个 r、w、x 的组合。

示例中,7 代表 rwx5 代表 r-x6 代表 rw-。通过数字直接修改权限时,七进制计算是核心技巧

chmod 755 file       # owner rwx,group/others rx
chmod 644 file       # owner rw-, group/others r--

在日常运维中,数字模式执行快速、直观,非常适合初学者快速上手。

三种权限与用户组概念

数字权限与符号权限的区别

符号权限通过 u、g、o、a 和 +、-、= 来逐项添加、移除或覆盖权限,粒度更细,易于逐步调整

数字权限则以三位数字一次性给出 owner、group、others 的权限总和,更适合批量配置和脚本化修改

chmod u+rwx,g-w o=r file

要点:组合模式与数字模式各有优势,根据场景选择合适的写法,确保权限最小化。

用户、组与其他的权限应用场景

在实际运维中,所有者通常是应用进程的运行用户,组权限用于同一组别的协作,其他用户通常只有最小必要权限,以降低潜在风险。

常见做法是先应用最小权限原则,随后在需要时逐步放宽,确保服务可用性与安全性并行。

# 让应用用户对日志目录有写权限
chmod 766 /var/log/myapp

权限表示法:数字模式与符号模式

数字模式说明

数字模式的三位结构分别对应 owner、group、others 的权限。每位的数值来自 0-7 的组合,例如 0 表示无权限,7 表示 rwx。

在运维实战中,常用值是 644、755、600 等,这些组合覆盖了大部分应用场景。

chmod 755 /path/app        # 常用于可执行程序
chmod 600 /path/secret.txt   # 仅所有者可读写

要点:理解 7、5、6、4 等数字对应的权限位,是快速读懂权限配置的关键。

符号模式说明

符号模式通过目标对象和运算符来描述权限变更,例如 u、g、o、a 的选择,以及 +、-、= 的行为。

实践中,符号模式适合逐步调整现有权限,而不影响其他位,对日常维护非常友好。

chmod u+x,g-w,o=r /path/script.sh

要点:先锁定目标用户组,再进行权限增减,避免误改其他用户权限。

chmod 实操技巧

常用命令组合

常见组合包括 chmod 755、chmod 644、chmod 700 等,便于快速适配不同应用的需求。

在自动化脚本中,把权限写成变量,便于在不同环境中重用,减少出错概率。

# 快速授权,可执行但仅给定用户
chmod 500 /usr/local/bin/tool

要点:保持权限最小化并遵循服务账户分离,这是稳定可靠的运维基石。

设置默认权限:umask 与新建文件

umask 决定新建文件和目录的默认权限,通常与创建过程的初始权限共同作用,确保未授权的暴露被最小化。

通过合理设置 umask=022 或 027,可以让新建文件保持可读性但限制不必要的写权限。

# 设置默认权限,禁止其他用户写入新建文件
umask 022

要点:了解 umask 的回旋作用,有助于避免新建对象默认就暴露敏感信息。

常见场景下的权限配置案例

Web 服务目录权限

Web 服务器根目录通常需要可执行和可读权限,但要限制写入,以防止目录结构被任意修改。

典型做法是为网站内容目录设置 owner 为网站用户,group 为同组用户,其他人不可写,并为日志目录提供少量写权限。

chown -R www-data:www-data /var/www/html
chmod -R 755 /var/www/html
chmod -R 750 /var/www/logs

要点:分离数据目录与日志目录的权限策略,提升整体安全性。

脚本执行权限与安全性

脚本文件应具备可执行权限,但应限制其他用户的执行能力,尤其是在多用户系统中。

通过 精确设定 u=避免给全体执行权限,可降低被滥用的风险。

chmod 700 /usr/local/bin/deploy.sh

要点:仅给予运行脚本所需的最小权限,是高效且稳健的运维实践。

进一步优化与安全要点

ACL 与扩展权限

ACL(Access Control List) 可以实现更细粒度的权限控制,超出传统 rwx 的简单三组权限。

在复杂场景中,结合 ACL 与基本权限,可为特定用户或服务赋予额外访问权,而不改变全局权限。

setfacl -m u:deploy:r-x /var/www/html
getfacl /var/www/html

要点:谨慎使用 ACL,避免权限冲突和管理复杂度上升,以保持可维护性。

SELinux/AppArmor 考量

SELinux 或 AppArmor 为系统提供强制访问控制,权限不仅限于 rwx、还依赖策略。

在开启这些安全模块时,需要确保策略覆盖实际服务行为,否则即便权限正确也可能被拒绝。

# 查看当前策略状态(示例,具体命令因发行版而异)
sestatus

要点:理解并正确配置安全策略,是提升整体安全性的关键,尤其在生产环境。

广告

操作系统标签