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

chmod命令

chmod 是 Linux/Unix 系统中用于修改文件或目录访问权限的命令,其名称源自 "change mode" 的缩写。文件权限决定了不同用户对文件的操作权限(读、写、执行),chmod 命令通过调整这些权限来控制系统安全性。

一、权限的基本概念

在 Linux 中,每个文件 / 目录的权限对应三类用户:

  • u(user):文件的所有者(创建者)
  • g(group):文件所属组的成员
  • o(others):除所有者和所属组成员外的其他用户
  • a(all):代表 u+g+o(所有用户)

每类用户可拥有三种基本权限:

  • r(read,读权限):允许查看文件内容(对目录而言,允许列出目录中的文件)
  • w(write,写权限):允许修改文件内容(对目录而言,允许创建 / 删除其中的文件)
  • x(execute,执行权限):允许运行文件(对目录而言,允许进入该目录)

二、权限的表示方法

chmod 支持两种权限设置方式:数字模式(简洁高效)和符号模式(灵活直观)。

1. 数字模式(八进制表示)

每种权限对应一个数字,通过数字之和表示用户的权限组合:

  • r 对应 4
  • w 对应 2
  • x 对应 1
  • 无权限对应 0

权限用三位数字表示(分别对应 u、g、o 的权限),例如:

  • 755:u=7(4+2+1=rwx),g=5(4+1=rx),o=5(rx)
  • 644:u=6(4+2=rw),g=4(r),o=4(r)
  • 700:u=7(rwx),g=0(无),o=0(无)
2. 符号模式(符号表示)

通过符号组合精确指定权限修改规则,格式为:chmod [用户] [操作符] [权限] 文件/目录

  • 用户(可选)u(所有者)、g(所属组)、o(其他)、a(所有,默认)
  • 操作符
    • +:添加权限
    • -:移除权限
    • =:设置权限(覆盖原有权限)
  • 权限rwx

三、常用选项

chmod 支持多种选项,常用的有:

  • -R(recursive):递归修改目录及其子目录中所有文件的权限(操作目录时常用)
  • -v(verbose):显示权限修改的详细过程
  • -c(change):仅显示实际被修改的文件权限(比 -v 简洁)
  • --reference=文件:以指定文件的权限为模板,复制权限到目标文件 / 目录

四、示例用法

假设当前目录有文件 test.txt 和目录 docs/,以下是常见操作:

1. 数字模式示例
  • 给 test.txt 设置权限:所有者可读可写,所属组和其他用户仅可读chmod 644 test.txt(对应权限:-rw-r--r--- 表示普通文件)

  • 给 docs/ 设置权限:所有者可读可写可进入,所属组和其他用户仅可读可进入chmod 755 docs/(对应权限:drwxr-xr-xd 表示目录)

  • 递归设置 docs/ 及其子内容:仅所有者有全部权限,其他人无权限chmod -R 700 docs/

2. 符号模式示例
  • 给 test.txt 的所有者添加执行权限chmod u+x test.txt

  • 移除 test.txt 中其他用户的读权限chmod o-r test.txt

  • 给 docs/ 的所属组设置可读可写可进入权限(覆盖原有权限)chmod g=rwx docs/

  • 给所有用户添加写权限(等价于 a+wchmod +w test.txt

  • 复制 file1 的权限到 file2chmod --reference=file1 file2

五、注意事项

  1. 权限与安全性:过高的权限(如 777,所有用户可读写执行)可能导致安全风险,应遵循 “最小权限原则”。
  2. 目录权限特殊性:目录的 x 权限表示 “可进入目录”,若缺少 x,即使有 r 也无法查看目录内容;目录的 w 权限允许删除其中的文件(即使不是文件所有者)。
  3. 执行权限:脚本或程序需要 x 权限才能直接运行(如 ./script.sh),否则需通过解释器调用(如 bash script.sh)。
  4. 权限修改者:只有文件的所有者或 root 用户才能使用 chmod 修改权限。

通过 chmod 命令,用户可以精确控制文件 / 目录的访问范围,是 Linux 系统权限管理的核心工具之一。

http://www.dtcms.com/a/394451.html

相关文章:

  • kernel 6.6中新增的EEVDF特性
  • MATLAB M代码解释器设计与C++实现
  • nivida jetson orinnx torch环境搭建
  • Java进阶教程,全面剖析Java多线程编程,线程的生命周期,笔记11
  • Javase 基础加强 —— 12 网络编程
  • 【04】EPGF 架构搭建教程之 工具环境变量的配置
  • Oracle -运维学习路线 --学习篇1
  • 三个余弦:平方和凑成1时会发生什么
  • 碧蓝航线装备参数探究——关于金色之耻
  • Golang圖書館
  • linux命令--迭代积累
  • Unity2D-物理系统
  • 崩铁 预言算牌 解谜
  • 解锁AI巨型模型训练:DeepSpeed ZeRO Offload 全面指南
  • python语言中的常用容器(集合)
  • Python 程序控制流程综合编程
  • Java进阶教程,全面剖析Java多线程编程,同步方法,笔记13
  • 1.6 虚拟机 (答案见原书 P33)
  • 【C++练习】26.在 C++ 中,不使用 “strcpy“ 函数将一个字符串复制到另一个字符串
  • 【分布式技术】Baerer token刷新机制详细解读
  • 第十三章 Ant与Jenkins的集成
  • 通义万相正式开源Wan2.2-Animate动作生成模型
  • 课后作业-2025-09-21
  • 比 IDEA 容器自动化部署更轻量便捷的工具
  • 知识图谱技术对自然语言处理深层语义分析的影响与启示研究
  • Javase 高级技术 —— 01 反射
  • Linux 孤儿进程与进程的优先级和切换和调度
  • QML学习笔记(七)QML的基本数据类型
  • 基于51单片机电子钟闹钟12/24小时制LCD显示
  • 小程序开发全解析:从结构到API