【Linux进阶】拒绝Permission denied!彻底搞懂chmod与chown文件权限

简介: 本文深入解析Linux权限管理核心命令`chmod`与`chown`,教你读懂`ls -l`输出,掌握数字权限(如755、644)的含义与应用场景,理解属主与属组的作用,强调最小权限原则,拒绝滥用`chmod 777`,保障服务器安全。

前言

在Linux服务器上部署应用时,你是否遇到过这样的报错:Permission denied(权限被拒绝)?

很多新手遇到这个问题,第一反应就是简单粗暴地执行 chmod 777。虽然这能解决问题,但这就像为了进家门方便,把大门的锁直接拆了一样——极其危险

作为一个专业的开发者,我们必须深刻理解 Linux 的权限体系。今天我们就来彻底拆解 chmodchown 这两个命令。

1. 读懂 ls -l 的天书

在终端输入 ls -l,你会看到类似下面的一串字符:

Bash

drwxr-xr-x 2 root root 4096 Jan 1 12:00 my_folder
-rw-r--r-- 1 root root  123 Jan 1 12:00 config.txt

这串字符 drwxr-xr-x 到底是什么意思?我们把它拆成 4 部分来看:

  1. 第1位(文件类型):
  • d:代表目录 (Directory)
  • -:代表文件
  1. 第2-4位(属主权限 User): 文件拥有者(Owner)能做什么。
  2. 第5-7位(属组权限 Group): 和拥有者同组的用户能做什么。
  3. 第8-10位(其他权限 Others): 其他所有人能做什么。

其中,rwx 的含义如下:

  • r (Read): 读权限。
  • w (Write): 写权限(修改、删除)。
  • x (Execute): 执行权限(对于脚本是运行,对于目录是进入)。

2. chmod:修改权限的神器

chmod (Change Mode) 用于改变文件的读写执行权限。最常用的是**“数字法”**。

Linux 将权限赋予了数字含义,这是一个加法游戏

  • r = 4
  • w = 2
  • x = 1

常见的权限组合:

  • 7 (4+2+1): 读 + 写 + 执行 (最高权限)
  • 6 (4+2): 读 + 写 (不能执行)
  • 5 (4+1): 读 + 执行 (不能修改)
  • 4: 只读

记住这 3 个黄金组合:

1. chmod 755 —— 脚本和程序的标配

  • 解析: 属主(7=RWX),组用户(5=RX),其他人(5=RX)。
  • 场景: 这是一个可执行脚本,或者网站的目录。你可以任意修改,别人只能看和运行,不能乱改。

Bash

chmod 755 start.sh

2. chmod 644 —— 配置文件/网页文件的标配

  • 解析: 属主(6=RW),组用户(4=R),其他人(4=R)。
  • 场景: 比如 nginx.confindex.html。这些文件不需要执行,只需要能被读取即可。

Bash

chmod 644 index.html

3. chmod 600 —— 隐私文件的标配(如SSH密钥)

  • 解析: 属主(6=RW),其他人(0=无权限)。
  • 场景: 你的私钥文件 id_rsa。这是最高机密,除了你自己,谁都不能看,否则SSH会强制报错拒绝连接。

Bash

chmod 600 ~/.ssh/id_rsa

3. chown:物归原主

有时候权限是对的(比如755),但依然报错 Permission denied,为什么? 因为文件的主人不对

比如你用 root 账号上传了网站代码,但 Nginx 服务是用 wwwnginx 用户运行的。Nginx 想要读取文件,发现主人是 root,且 root 没给它权限,自然就报错了。

这时候需要用 chown (Change Owner) 来修改文件的拥有者。

语法: chown 用户:用户组 文件路径

实战场景:/data/wwwroot 目录下的所有文件,归还给 nginx 用户。

Bash

# -R 代表递归(Recursive),连同目录下的所有子文件一起修改
chown -R nginx:nginx /data/wwwroot

4. 警惕:为什么永远不要用 chmod 777

chmod -R 777 /var/www 是很多教程里的“大坑”。

这意味着任何人(包括黑客上传的恶意脚本)都可以在你的服务器上修改、删除、执行这个目录下的文件。如果你的网站有上传漏洞,黑客上传一个木马并执行,你的服务器就沦陷了。

原则:永远只给刚好够用的权限(Least Privilege)。

总结

  • chmod 管的是“能做什么”(读、写、执行)。
  • chown 管的是“谁能做”(你是主人吗?)。
  • r=4, w=2, x=1,口诀记心间。
  • 善用 755 (脚本/目录) 和 644 (普通文件),远离 777
相关文章
|
6月前
|
数据安全/隐私保护
贴吧自动发帖工具, 贴吧自动评论脚本,顶贴回复发帖插件
这个代码实现了贴吧自动发帖、自动回复、获取帖子列表等功能。主要使用了requests库进行网络请求
|
1天前
|
人工智能 Java 微服务
微服务保护方案
Spring Cloud微服务中,服务保护机制对保障系统稳定性至关重要,主要包括熔断、降级、超时、线程隔离和限流。熔断快速失败避免雪崩,降级提供默认响应保证核心功能,超时防止长时间等待,线程隔离限制故障影响范围,限流控制流量峰值,共同提升系统容错与可用性。
微服务保护方案
|
1天前
|
Java Maven 数据库
Activiti工程搭建
本教程介绍如何在IntelliJ IDEA中创建Maven工程并安装ActiBPM插件,包含插件下载、版本兼容性修复及配置方法,最后引入Activiti相关依赖,完成流程引擎环境搭建。
Activiti工程搭建
|
1天前
|
监控 Java Sentinel
Sentinel安装与集成
介绍如何切换hmall-micro项目至dev_02分支并提交代码,强调多分支并行开发模式。随后讲解Sentinel服务保护框架的安装与配置,包括控制台部署、本地运行及项目集成,实现微服务熔断降级,并通过簇点链路监控接口。
Sentinel安装与集成
|
2天前
|
缓存 前端开发 安全
数据同步原理
Soul网关通过推拉模式实现配置数据同步,支持WebSocket、HTTP长轮询和Zookeeper三种策略。管理员在后台变更配置后,事件被发布并根据同步策略推送到网关,实现秒级更新。HTTP长轮询借鉴Apollo与Nacos设计,结合异步Servlet机制,确保准实时且高效。
数据同步原理
|
1天前
|
存储 算法 BI
xxljob本地运行
本文介绍XXL-JOB分布式任务调度框架的部署与使用,涵盖源码获取、服务端数据库配置、客户端注册及任务调度配置,支持多种路由策略与分片广播,助力高效实现定时任务管理。
 xxljob本地运行
|
1天前
|
Java Sentinel 微服务
实现降级
本文介绍如何在Spring Cloud微服务中通过Sentinel实现Feign接口的降级处理。重点采用`FallbackFactory`方式,在调用方(如cart-service)为`ItemClient`接口编写降级逻辑,捕获远程调用异常并返回兜底数据。需配置Feign启用Sentinel,定义降级类实现`FallbackFactory`接口,并在`@FeignClient`中指定`fallbackFactory`。最终通过停止item-service进行测试,验证购物车页面在商品信息获取失败时仍可降级展示,保障系统稳定性。适用于服务熔断与容错场景。
实现降级
|
2天前
|
Java Linux 开发工具
Linux
本文介绍如何将一个简单的SpringBoot应用打包并部署到Linux服务器。包括项目搭建、JAR包打包、JDK安装配置、应用上传与启动,以及通过心跳接口验证服务是否正常运行的完整流程,适用于Java应用的Linux部署入门学习。
|
1天前
|
Java Shell 开发工具
【Git入门】Git常用命令大全:从add到push,一图胜千言
本文深入浅出地讲解Git核心概念与常用命令,涵盖工作区、暂存区、本地仓库和远程仓库三大区域,梳理从配置、克隆、提交到同步的完整流程,并介绍撤销修改、查看历史、.gitignore等实用技巧,助力开发者高效协作。
|
1天前
|
SQL 监控 druid
【性能优化】拒绝性能瓶颈!数据库连接池配置详解与调优实战
本文深入讲解数据库连接池核心原理与调优技巧,涵盖HikariCP和Druid配置要点,解析四大关键参数、黄金连接数公式及Druid监控功能,助你科学设置连接池,避免性能瓶颈。