当前位置: 首页 > news >正文

【Linux】深入理解 Linux 的 chmod 指令


我一直都在流浪
可我不曾见过海洋
我以为的遗忘
原来躺在你手上
我努力微笑坚强
寂寞筑成一道围墙
也敌不过夜里
最温柔的月光
                     🎵 林宥嘉《残酷月光》


在 Linux 系统中,文件和目录的权限管理是非常重要的一环。chmod 是用于改变文件和目录权限的命令。通过 chmod,我们可以设置谁可以读取、写入或执行文件。本文将详细介绍 chmod 指令的使用方法、常见场景以及最佳实践,帮助你在实际工作中更加高效地管理文件权限。

基本概念

Linux 系统中的每个文件和目录都有一组权限,分别用于定义文件所有者、文件所属组以及其他用户的访问权限。这些权限分为三类:

  • 读权限 ®:允许查看文件内容。
  • 写权限 (w):允许修改文件内容。
  • 执行权限 (x):允许执行文件。
    每个文件的权限可以通过 ls -l 命令查看,例如:
-rwxr-xr--

这里,文件的权限分为三部分:

  • 文件所有者权限:rwx
  • 文件所属组权限:r-x
  • 其他用户权限:r–

chmod 的基本语法

chmod [选项] 模式 文件
```
- 选项:如 -R 表示递归修改目录及其子目录中的所有文件。
- 模式:设置权限的方式,可以是符号表示法或数字表示法。
- 文件:要修改权限的文件或目录。
使用符号表示法设置权限
符号表示法使用 u、g、o、a 来表示用户、组、其他用户和所有用户,使用 +、-、= 来添加、移除或设置权限。例如:`u`:文件所有者
`g`:文件所属组
`o`:其他用户
`a`:所有用户
## 添加权限```bash
chmod u+x filename
```
例子:为文件所有者添加执行权限```bash
chmod u+x script.sh
```
## 移除权限```bash
chmod g-w filename
```
例子:移除组写权限```bash
chmod g-w report.txt
```
## 设置权限```bash
chmod o=r filename
```
例子:将其他用户的权限设置为只读```bash
chmod o=r document.txt
```
## 使用数字表示法设置权限
数字表示法使用三位八进制数字来表示权限,每位数字分别对应用户、组和其他用户的权限。每位数字由 r、w、x 权限值相加得到:r = 4
w = 2
x = 1
例如,rwxr-xr-- 的权限表示为 755:用户:rwx = 4 + 2 + 1 = 7
组:r-x = 4 + 1 = 5
其他用户:r-- = 4
常见的权限设置:`777`:所有人都有读、写、执行权限
`755`:用户有读、写、执行权限,组和其他用户有读、执行权限
`644`:用户有读、写权限,组和其他用户有读权限
## 设置文件权限```bash
chmod 755 filename
```
例子:将 script.sh 的权限设置为 755```bash
chmod 755 script.sh
```
## 设置目录权限```bash
chmod 755 directory
```
例子:将 myfolder 的权限设置为 755```bash
chmod 755 myfolder
```
## 递归修改目录权限
使用 -R 选项可以递归地修改目录及其子目录中的所有文件和目录的权限:```bash
chmod -R 755 directory
```
例子:递归修改 myproject 目录的权限```bash
chmod -R 755 myproject
```
## 示例用法
为所有用户添加执行权限```bash
chmod a+x filename
```
将所有文件的权限设置为用户可读写,其他用户只读```bash
chmod 644 *
```
## 递归移除目录中所有文件的执行权限```bash
chmod -R a-x directory
```
## 总结
chmod 指令是 Linux 中用于管理文件和目录权限的基本工具。通过掌握符号表示法和数字表示法,你可以灵活地设置和修改权限,以确保系统的安全性和文件的可访问性。希望本文能帮助你更好地理解和使用 chmod 指令。

相关文章:

  • 音视频-常用的分析工具介绍-连续补充
  • 基于Django的美团药品数据分析与可视化系统,有多用户功能,可增删改查数据
  • 产品经理交接规范及流程
  • vue3的api风格
  • 【学习笔记】后端(Ⅰ)—— NodeJS(Ⅰ)
  • 鸿蒙HarmonyOS开发:tabs结合tabContent实现底部tabBar导航栏页面布局
  • 再谈Google I/O 2024:开发者必看亮点
  • Redis-
  • pytorch-20 lstm实践
  • python输出水仙花数两种方法
  • 垃圾溢满堆放识别检测
  • Hugging Face的TrainingArguments常用参数学习
  • 【高阶数据结构】跳表
  • Leecode---112:路径总和(是否存在和为target路径)
  • 表现层框架设计之表现层设计模式_3.MVVM模式
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • 《剑指offer》分解让复杂问题更简单
  • 【css3】浏览器内核及其兼容性
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • export和import的用法总结
  • Invalidate和postInvalidate的区别
  • JAVA_NIO系列——Channel和Buffer详解
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • Javascript编码规范
  • Java多线程(4):使用线程池执行定时任务
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • Mocha测试初探
  • Perseus-BERT——业内性能极致优化的BERT训练方案
  • React-redux的原理以及使用
  • socket.io+express实现聊天室的思考(三)
  • springMvc学习笔记(2)
  • 关于extract.autodesk.io的一些说明
  • 跨域
  • 一个完整Java Web项目背后的密码
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • 鱼骨图 - 如何绘制?
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • #Linux(帮助手册)
  • $.ajax,axios,fetch三种ajax请求的区别
  • (09)Hive——CTE 公共表达式
  • (1)Android开发优化---------UI优化
  • (C语言)二分查找 超详细
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (十六)串口UART
  • (四) Graphivz 颜色选择
  • (转)从零实现3D图像引擎:(8)参数化直线与3D平面函数库
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • .gitignore文件使用
  • .Net Core缓存组件(MemoryCache)源码解析
  • .net mvc 获取url中controller和action
  • .net web项目 调用webService
  • .net 调用海康SDK以及常见的坑解释
  • .net 验证控件和javaScript的冲突问题
  • .Net(C#)常用转换byte转uint32、byte转float等
  • .net8.0与halcon编程环境构建