如何使用 Chmod 更改 Linux 上的文件和文件夹权限?
yund56 2025-07-05 04:27 2 浏览
在 Linux 的世界里,权限就是秩序的基础。一个系统的安全性、文件访问策略、用户协作边界,无一不依赖于文件和目录权限的精细控制。而 chmod(Change Mode)命令,正是你手中调整权限的利剑。
这篇文章将从最基础的权限概念讲起,深入剖析 chmod 的使用方式,包括数字表示法、符号表示法、权限继承、批量修改、常见问题,以及实际运维案例,力求让你对权限操作了然于心、运用自如。
一、Linux 权限基础:三种角色 + 三类权限
每个文件和目录在 Linux 中都绑定有以下三种用户角色:
- owner:文件所有者,通常是创建文件的用户。
- group:所属用户组。
- others:系统中其他用户。
每种角色又对应三类基本权限:
权限 | 符号 | 含义 |
读取 | r | 查看文件内容,列出目录内容 |
写入 | w | 修改文件内容,创建/删除目录内文件 |
执行 | x | 执行文件(如脚本),进入目录 |
可以通过 ls -l 查看:
$ ls -l example.sh
-rwxr-xr-- 1 user group 1234 May 29 10:00 example.sh
第一列解释如下:
- rwx r-x r-- │ │ │ └── 其他人权限(others):读取│ │ └───── 用户组权限(group):读取 + 执行│ └──────── 文件所有者权限(owner):读取 + 写入 + 执行└────────── 文件类型(- 为普通文件,d 为目录)
二、数字 VS 符号:chmod 的两种用法
1. 数字表示法(最常用)
每个权限对应一个值:
- r = 4
- w = 2
- x = 1
组合后求和:
权限组合 | 数字表示 |
rwx | 7 |
rw- | 6 |
r-x | 5 |
r-- | 4 |
--- | 0 |
使用示例:
chmod 755 script.sh
解释:
- 7 → 所有者 rwx
- 5 → 用户组 r-x
- 5 → 其他人 r-x
目录建议权限:
- 普通文件:644(rw-r--r--)
- 可执行文件:755(rwxr-xr-x)
- 目录:755 或 700(rwxr-xr-x / rwx------)
2. 符号表示法(更灵活)
语法格式:
chmod [角色][操作][权限] 文件名
- 角色:u(用户)、g(组)、o(其他人)、a(全部)
- 操作:+(添加)、-(删除)、=(赋值)
- 权限:r、w、x
示例:
chmod u+x hello.sh # 给所有者添加执行权限
chmod go-w data.txt # 去掉组和其他人的写权限
chmod a=r file.log # 所有角色仅有读权限
三、应用场景实战
1. 只允许所有者访问的私密文件夹
mkdir secrets
chmod 700 secrets
此时其他用户无法 cd 进入该目录。
2. 给脚本文件添加执行权限
chmod +x deploy.sh
相当于 chmod ugo+x deploy.sh,适用于快速授权。
3. 去掉敏感配置的组写权限
chmod g-w /etc/ssh/sshd_config
避免配置文件被意外修改。
4. 批量修改多个文件权限
chmod 644 *.conf
chmod +x *.sh
配合 find 更强大:
find . -type f -name "*.sh" -exec chmod +x {} \;
四、特殊权限:s、t 和 SGID
除了基本权限外,还有三种特殊模式:
权限位 | 名称 | 作用与应用 |
s(Setuid) | 让执行程序以文件所有者身份运行 | 应用于如 passwd 命令 |
s(Setgid) | 目录中创建的文件继承该组 | 团队协作常用 |
t(Sticky Bit) | 只允许文件拥有者删除 | 应用于 /tmp |
示例:
chmod u+s /usr/bin/somebinary # 设置 setuid
chmod g+s /data/shared # 设置 setgid
chmod +t /tmp # 设置 sticky bit
配合 ls -l 可以看到特殊位:
drwxrwsr-x 2 dev team 4096 May 29 12:00 /data/shared
五、深入理解目录权限组合的行为
权限 | 作用说明 |
r | 能否列出目录中的文件(如 ls) |
w | 能否在该目录中创建/删除/重命名文件 |
x | 能否 cd 进入该目录、访问其中内容 |
示例说明:
- r-x:能进入目录并列出内容,但无法创建文件。
- --x:只能进入目录,但不知道目录内有什么(除非你知道具体文件名)。
快速对照表
chmod 值 | 含义 | 应用场景 |
777 | 所有人可读写执行 | 开发测试环境(不推荐生产使用) |
755 | 所有者全权限,其它只读执行 | 公共脚本或服务程序 |
700 | 所有者独享 | 私人脚本、文件夹 |
644 | 所有者可读写,其它只读 | 配置文件、文档 |
600 | 所有者只读写,其它无权限 | 私密密钥文件(如 .ssh/id_rsa) |
权限陷阱与排错技巧
1. 有执行权限但运行时报“权限被拒绝”?
可能的原因:
- 缺少“x”权限的目录。
- 文件系统挂载为 noexec。
- 文件属于 root,当前用户无权运行。
2. 目录权限设置正确但文件无法创建?
检查是否有 w 权限和 x 权限:
chmod u+wx /path/to/dir
3. 使用 chmod 无效?
文件可能是符号链接,建议使用 -h 参数:
chmod -h 644 symlink
权限即责任,掌握 chmod 是每个 Linux 用户的必修课
在 Linux 中,每一次权限的修改都意味着一次对资源访问策略的定义。chmod 不仅是文件安全的基础工具,更是运维、开发、安全团队日常工作的关键部分。
掌握 chmod,你就拥有了管理整个系统权限秩序的钥匙。
- 上一篇:linux解压文件命令有哪些
- 下一篇:Linux文件系统制作与裁剪
相关推荐
- 如何在Office 中编辑 PDF?附详细化步骤
-
PDF很受欢迎,因为它能在不同的设备和操作系统上仍然保持原有格式。但是,这也意味着直接更改PDF文件比其他格式更难更复杂。值得庆幸的是,Microsoftoffice和UPDF帮你解决这一难题。一...
- 我的 Windows 装机必备软件清单
-
今天给大家分享下我的装机必备软件,都是用了好多年的软件神器。靠谱、好用、无广告,Windows电脑必备软件,收藏这一篇就够了!01.浏览器王者:Chromehttps://www.google.c...
- Docnet Core 是一个轻量级、高性能的 .NET PDF 操作库
-
DocnetCore介绍DocnetCore是一个轻量级、高性能的.NETPDF操作库,依托于PDFium渲染引擎,提供强大的PDF文档解析、渲染、操作等功能。它完全支持.NET...
- 分享三款好用的PDF编辑软件,轻松处理PDF
-
作为一名需要经常和PDF文件打交道的工作者,我来分享一下几款好用的PDF编辑软件,并详细分析了它们的优缺点,希望能帮你找到合适的工具。1.AdobeAcrobatDC作为PDF格式的发明者,Ado...
- PDF文档创建工具软件:novaPDF OEM 11.9 Build 432 for Windows
-
novaPDFOEM是一款实用高效的软件,从头开始设计,让您尽可能轻松地在应用程序中添加PDF打印功能。换句话说,这个实用程序是专门为应用程序开发人员设计的,可以直接在程序安装程序中集成为PDF打印...
- 线性表顺序存储结构求集合的并,交,补,差(源代码附上 超详细)
-
一:算法分析1)用数组A,B,C,E表示集合。假定A={1,3,4,5,6,7,9,10}, B={2,,3,4,7,8,10},E={1,2,3,4,5,6,7,8,9,10}, 输入数组A...
- 分享一套SpringBoot开发博客系统源码,包含完整开发文档和视频
-
基本信息项目名称:eblog摘要:eblog是一个基于Springboot2.1.2开发的博客学习项目,为了让项目融合更多的知识点,达到学习目的,编写了详细的从0到1开发文档。主要学习包括:自定义Fr...
- 通达信指标合集〔源码齐全〕
-
很多朋友问到我哪款指标好用,这里我说一下,之所以有很多不同的指标是因为我们在针对不同的盘面情况的时候使用的指标是不同的,我给到的指标一般来讲就目前的环境来讲都是比较适合的,今天我就把我平时自己常用的指...
- 巅峰对决!Spring Boot VS .NET 6
-
SpringBoot和ASP.NETCore都是企业中流行的Web框架,对于喜欢C#的人会使用ASP.NETCore,而对于Java或Kotlin等基于JVM的语...
- 在asp.net core 中控制访问权限的方法
-
Intro#由于项目需要,需要在基于asp.netmvc的Web项目框架中做权限的控制,于是才有了这个权限控制组件,最初只是支持netframework,后来dotnetcore2.0...
- ASP.NET是否无生存之地?
-
ASP.NET,这个已经很久的技术,总觉得已经被时代淘汰,我们公司是一个10人小公司,几个十年十五年的项目还是用ASP.NET开发的。这两年由于客户的需求变化,我们公司也顺势开始对这些项目重新开发,改...
- Spring Boot + Vue.js 实现前后端分离(附源码)
-
作者:梁小生0101链接:juejin.im/post/5c622fb5e51d457f9f2c2381SpringBoot+Vue.js前后端涉及基本概念介绍,搭建记录,本文会列举出用到环...
- ASP.NET Core 中的 Mapster 使用入门教程
-
在本文中,我们将学习如何在ASP.NETCore应用程序中使用Mapster。首先,我们将了解Mapster是什么以及如何将其安装到.NETCore应用程序中。然后,我们将在使用...
- Asp.net常用方法及request和response-a
-
asp.net教程asp.net常用方法:1、Request.UrlReferrer请求的来源,可以根据这个判断从百度搜的哪个关键词、防下载盗链、防图片盗链,可以伪造(比如迅雷)。(使用全局一般处理...
- ASP.NET Core使用功能开关控制路由访问
-
前言在前面的文章,我们介绍了使用Middleware有条件地允许访问路由(《ASP.NETCore使用Middleware有条件地允许访问路由》)。而对于一些试验性的功能,我们并不希望用密码去控制是...
- 一周热门
- 最近发表
- 标签列表
-
- filter函数js (37)
- filter函数excel用不了 (73)
- 商城开发 (40)
- 影视网站免费源码最新版 (57)
- 影视资源api接口 (46)
- 网站留言板代码大全 (56)
- java版软件下载 (52)
- java教材电子课本下载 (48)
- 0基础编程从什么开始学 (50)
- java是用来干嘛的 (51)
- it入门应该学什么 (55)
- java线上课程 (55)
- 学java的软件叫什么软件 (38)
- 程序开发软件有哪些 (53)
- 软件培训 (59)
- 机器人编程代码大全 (50)
- 少儿编程教程免费 (45)
- 新代系统编程教学 (61)
- 共创世界编程网站 (38)
- 亲测源码 (36)
- 三角函数积分公式表 (35)
- 函数的表示方法 (34)
- 表格乘法的公式怎么设置 (34)
- sumif函数的例子 (34)
- 图片素材 (36)