Linux文件权限chmod chown:Linux文件权限从入门到实操:chm

Linux文件权限从入门到实操:chmod与chown详解


为什么你需要理解Linux文件权限


不论你是刚买服务器建站,还是帮同事修复“Permission denied”错误,Linux文件权限chmod chown 都是绕不开的基础。

一个常见的场景:你上传了网页文件,浏览器却显示403;

或者你运行脚本时提示“无权限写文件”。

这些问题的根源多半是权限设置不当

本文会用最直白的语言,带你一次性搞懂这两个命令,并给出可直接复制的命令示例。


准备工作:你只需要一个终端



  • 一台安装了Linux的服务器或本地虚拟机(推荐CentOS 7/8、Ubuntu 20.04+)

  • 一个非root用户(避免误操作损坏系统),但某些命令需要sudo权限

  • 一个测试用的目录和文件:


  mkdir -p ~/test_permissions && cd ~/test_permissions
touch example.txt

核心操作一:用chmod修改文件权限


1. 权限数字表示法(最常用)


Linux文件权限分为三组:所有者(Owner)所属组(Group)其他人(Others)

每组有三种权限:r=4(读)w=2(写)x=1(执行)

三个组的权限值相加得到一个三位数,例如755表示:所有者rwx(4+2+1=7)、所属组r-x(4+0+1=5)、其他人r-x(4+0+1=5)。


实战命令:


# 给example.txt设置权限:所有者可读写执行,组和其他人只读执行
chmod 755 example.txt

查看效果

ls -l example.txt

输出类似:-rwxr-xr-x 1 user user 0 ...

常用权限组合:



  • 644:文件默认权限(所有者读写,组和其他人只读)

  • 755:目录或可执行文件(所有者全权,其他只读执行)

  • 600:敏感配置文件(仅所有者读写)

  • 777:所有人完全控制(非常危险,仅临时测试使用


2. 权限符号表示法(灵活增删)


如果你想给某个组单独增加或移除权限,用符号法更直观。


# 给所有者增加执行权限
chmod u+x example.txt

给所属组移除写权限

chmod g-w example.txt

同时给所有用户增加读权限

chmod a+r example.txt


符号含义: u=所有者,g=所属组,o=其他人,a=所有人;+添加,-移除,=设置精确值。


3. 递归修改(影响子目录和文件)


如果你要修改一个网站目录下的所有文件,加上 -R 参数:


chmod -R 755 /var/www/html

⚠️ 注意: 递归会让目录下的所有文件都获得执行权限,通常不需要给普通文件执行权限。

建议分开处理:目录755,文件644。


find /var/www/html -type d -exec chmod 755 {} \;
find /var/www/html -type f -exec chmod 644 {} \;

核心操作二:用chown修改文件所有者和所属组


1. 修改所有者


当你需要将文件所有权移交给另一个用户时使用chown


# 将example.txt的所有者改为www-data用户
sudo chown www-data example.txt

同时修改所有者和所属组(冒号后面是组名)

sudo chown www-data:www-data example.txt


2. 仅修改所属组


如果你只想更改组而不动所有者:


sudo chown :www-data example.txt

3. 递归修改目录及内容


与chmod类似,用-R递归:


sudo chown -R www-data:www-data /var/www/html

高频问题与避坑指南


❌ 问题1:chmod后文件变成绿色或无法运行?



  • 原因:绿色表示可执行文件,如果你给一个文本文件加了x权限,它会显示为绿色,但无法“执行”。这不是错误,只是显示习惯。如果你不需要执行权限,去掉即可:chmod -x 文件名


❌ 问题2:明明chmod了,网站还是403?



  • 排查步骤



  1. 检查目录的x权限(ls -ld),用户必须对目录有x权限才能进入。

  2. 检查父目录权限,例如 /var/www 如果其他人没有rx,就无法访问下级。

  3. 确认Web服务器运行的用户(如www-data)在文件所有者或组范围内。


命令:ps aux | grep nginxps aux | grep apache 查看运行用户。


❌ 问题3:不小心用了chmod 777,如何恢复?



  • 临时方案:如果你是默认文件,通常普通文件用644,目录用755。

  • 快速恢复脚本


  find /path -type f -exec chmod 644 {} \;
find /path -type d -exec chmod 755 {} \;

❌ 问题4:chown提示“不允许的操作”



  • 原因:只有root或sudo用户才能更改文件所有者。请在前面加上sudo

  • 注意:即使你是文件所有者,也不能把文件“给”别人(chown给别人),这是Linux安全机制。


效果验证:从新人的视角确认操作成功



  1. 验证权限变更


   ls -l example.txt

关注第一列“-rwxr-xr-x”,依次对应所有、组、其他人的权限


  1. 验证所有者变更


   ls -l example.txt

第三列是所有者,第四列是所属组


  1. 模拟用户测试:用另一个用户尝试读取/写入文件,确认权限生效。


   # 切换到另一个用户(前提你有该用户密码)
su - another_user
cat ~/test_permissions/example.txt


  1. 网站目录最终检查命令


   sudo find /var/www/html -not -perm 644 -type f | head -10
sudo find /var/www/html -not -perm 755 -type d | head -10

若有输出,说明存在不符合预期的权限,需要修正。


写在最后


Linux文件权限chmod chown 是每天都会用到的技能。

建议你先在测试目录里反复练习,理解数字法的组合逻辑,再应用到正式环境。

遇到“Permission denied”不要慌,优先确认当前用户、文件所有者、目录权限这三个要素。

如果你正在处理网站文件迁移后的权限问题,按本文步骤走一遍,只要操作正确,95%的问题都能解决。

分享到:
上一篇
WP网站速度优化实战:宝塔面板下WordPress网站速度优化实战,三步让页面加
下一篇
Docker Compose模板大全:从入门到实战的完整指南
1
系统公告

泽御云五一特惠活动🔥

泽御云持证合规运营,资质齐全可查,长久稳定! 五一限时多重福利同步开启: ✅ 香港 2 核 2G 云服务器超值拼团,低价入手团长免费 ✅ 4 核 4G 多机房年付拼团,性价比拉满 ✅ 内蒙古新区限时 7 折(zeyuyunnmg)特惠,专属优惠码锁价续费 ✅ 全站通用 75 折优惠,老用户充值享专属赠金 官方站点:zeyuyun.com 合规资质齐全|售后有保障|活动限时错过不再有
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意