Linux系统的文件权限机制是系统安全体系的核心组成部分,每个文件和目录都关联着对应的访问权限规则,控制着不同用户对其的读、写、执行操作权限。合理的权限配置能够限制未授权用户的访问行为,防止敏感文件被非法篡改或读取,是防范系统入侵、数据泄露的重要手段。

Linux文件权限基础概念
Linux中每个文件或目录的权限分为三类用户身份:文件所有者(u)、所属组用户(g)、其他用户(o)。每类身份对应三种权限:读(r,对应数值4)、写(w,对应数值2)、执行(x,对应数值1)。我们可以通过ls -l命令查看文件的权限信息,示例如下:
# 查看当前目录下文件权限 ls -l # 输出示例 -rw-r--r-- 1 root root 1024 10月 1 12:00 test.txt
上述输出中,第一列的-rw-r--r--就是权限标识,第一个字符-表示普通文件,d表示目录。后续9个字符每3个为一组,分别对应所有者、所属组、其他用户的权限,这里表示所有者有读写权限,所属组和其他用户只有读权限。
常用权限调整工具使用方法
1. chmod命令调整权限
chmod用于修改文件或目录的权限,支持字符模式和数字模式两种设置方式。
字符模式示例:
# 给test.txt的所有者添加执行权限 chmod u+x test.txt # 移除其他用户对test.txt的写权限 chmod o-w test.txt # 给所有用户添加读权限 chmod a+r test.txt
数字模式示例:
# 设置test.txt权限为所有者读写执行,所属组读执行,其他用户读执行,对应数字755 chmod 755 test.txt # 设置目录data的权限为所有者读写执行,所属组和其他用户无权限,对应数字700 chmod 700 data/
2. chown命令修改所有者和所属组
chown用于修改文件或目录的所有者和所属组,需要root权限执行。
# 将test.txt的所有者改为user1 chown user1 test.txt # 将test.txt的所有者改为user1,所属组改为group1 chown user1:group1 test.txt # 递归修改data目录及其下所有文件的所有者为user1 chown -R user1 data/
3. umask设置默认权限
umask用于设置新建文件和目录的默认权限掩码,默认umask值通常为022,表示新建文件权限为666减去022得到644,新建目录权限为777减去022得到755。我们可以根据需要调整umask值:
# 查看当前umask值 umask # 临时设置umask为027,新建文件权限为640,新建目录权限为750 umask 027 # 永久设置umask,可写入/etc/profile或用户家目录的.bashrc文件 echo "umask 027" >> ~/.bashrc
不同场景的权限优化建议
- 系统关键配置文件如
/etc/passwd、/etc/shadow等,建议权限设置为644或400,仅允许root用户修改,避免普通用户篡改。 - Web服务相关的网站目录,建议所有者设置为Web服务运行用户,目录权限设置为755,文件权限设置为644,敏感配置文件如数据库配置可设置为600,仅允许所有者读取。
- 用户家目录建议权限设置为700,避免其他用户访问家目录下的私有文件。
- 可执行程序如果不需要普通用户修改,建议权限设置为755,仅root可修改内容。
- 临时目录如
/tmp建议设置粘滞位,防止用户删除其他用户的临时文件,设置命令为chmod +t /tmp。
权限调整注意事项
调整权限前建议先备份重要文件,避免误操作导致文件无法访问。不要随意给文件或目录设置777权限,这会允许所有用户读写执行,带来极大的安全风险。修改系统文件权限前,先确认该文件的默认权限和用途,避免修改后导致系统服务无法正常运行。如果需要批量调整权限,建议先小范围测试,确认效果后再全量执行。