Linux 常用命令 - chmod 【改变文件或目录权限】

简介

“chmod” 这个命令来自于 “change mode” 的缩写,用于更改文件或目录的访问权限。这个命令允许用户设定谁可以读取、写入或执行一个文件。在 Linux 和其他类 Unix 系统中,文件权限对系统安全和用户隐私至关重要。
Linux/Unix 的文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users):
在这里插入图片描述

使用方式

chmod [选项] 模式 文件或目录

常用参数

  • -c:仅在权限被成功修改时才输出操作信息。
  • -v:始终输出操作信息。
  • -R:对目录及目录下的文件递归执行权限修改操作。
  • -f:阻止大多数错误信息的输出。
  • --no-preserve-root:不对根目录/做特殊处理,这也是默认选项。
  • --preserve-root:无法在根目录下执行递归操作。
  • --reference=RFILE:使用参考文件或参考目录(RFILE)的权限来设置目标文件或目标目录的权限。
  • --help:显示帮助信息。
  • --version:显示版本信息。

权限字符说明

权限字符的模式为:[ugoa]*([-+=]([rwxXst]*|[ugo]))+|[-+=][0-7]+

用户类型:

  • u:表示当前用户。
  • g:代表和当前用户在同一个组的用户,以下简称组用户。
  • o:代表其他用户。
  • a:代表所有用户。

权限类型:

  • r:代表读权限以及八进制数 4 。
  • w:代表写权限以及八进制数 2 。
  • x:代表执行权限以及八进制数 1 。
  • X:仅在对应文件是目录或已对一些用户有执行权限的情况下设置执行权限。
  • s:设置特殊模式,如使用权限组合 u+s 设置用户 ID 位(SUID)或 g+s 设置组 ID 位(SGID)。
  • t:设置粘滞位,只有目录或文件的所有者才能删除或重命名目录下的文件。

操作类型:

  • +:为指定的用户类型增加权限。
  • -:为指定的用户类型删除权限。
  • =:为指定用户类型设置对应的权限,删除未提及的权限。

八进制类型:

  • 7:读+写+执行 rwx 111
  • 6:读+写 rw- 110
  • 5:读+执行 r-x 101
  • 4:只读 r-- 100
  • 3:写+执行 -wx 011
  • 2:只写 -w- 010
  • 1:只执行 --x 001
  • 0:无 --- 000

参考示例

1. 设定某个文件的权限为 775

chmod 775 test.txt

更新权限后使用 ls 命令查看文件的权限信息

jay@jaylinuxlenovo:~/test/chmod$ chmod 775 test.txt 
jay@jaylinuxlenovo:~/test/chmod$ ls -l
total 0
-rwxrwxr-x 1 jay jay 0 Jan  1 12:02 test.txt

2. 设定某个文件让所有人都可以读取

chmod a+r test.txt

文件初始权限为 rwx------,更新后为 rwxr--r--

jay@jaylinuxlenovo:~/test/chmod$ ls -l
total 0
-rwx------ 1 jay jay 0 Jan  1 12:02 test.txt
jay@jaylinuxlenovo:~/test/chmod$ chmod a+r test.txt 
jay@jaylinuxlenovo:~/test/chmod$ ls -l
total 0
-rwxr--r-- 1 jay jay 0 Jan  1 12:02 test.txt

3. 设定某个目录及其内部的子文件可以被其他用户读取

chmod -R o+r dir2

目录中文件的权限初始为 rwx------,更新后为 rwx---r--

jay@jaylinuxlenovo:~/test$ ls -l dir2/
total 12
drwx------ 2 jay jay 4096 Dec  6 14:51 dir3
-rwx------ 1 jay jay   27 Dec  6 15:21 test1.txt
-rwx------ 1 jay jay   27 Dec  6 14:52 test2.txt
jay@jaylinuxlenovo:~/test$ chmod -R o+r dir2
jay@jaylinuxlenovo:~/test$ ls -l dir2/
total 12
drwx---r-- 2 jay jay 4096 Dec  6 14:51 dir3
-rwx---r-- 1 jay jay   27 Dec  6 15:21 test1.txt
-rwx---r-- 1 jay jay   27 Dec  6 14:52 test2.txt

4. 去除所有用户的写权限

chmod a-w test.txt 

文件的初始权限为 rwxrwxrwx,更新后为 r-xr-xr-x

jay@jaylinuxlenovo:~/test/chmod$ ls -l
total 0
-rwxrwxrwx 1 jay jay 0 Jan  1 12:02 test.txt
jay@jaylinuxlenovo:~/test/chmod$ chmod a-w test.txt 
jay@jaylinuxlenovo:~/test/chmod$ ls -l
total 0
-r-xr-xr-x 1 jay jay 0 Jan  1 12:02 test.txt

5. 将参考文件的权限赋给指定文件

chmod --reference test2.txt test.txt  

指定文件 test.txt 的初始权限与参考文件 test2.txt 不同,再执行更新指令后可以发现指定文件的权限变得与参考文件相同。

jay@jaylinuxlenovo:~/test/chmod$ ls -l
total 0
-rw-rw-r-- 1 jay jay 0 Jan  1 13:02 test2.txt
-r-xr-xr-x 1 jay jay 0 Jan  1 12:02 test.txt
jay@jaylinuxlenovo:~/test/chmod$ chmod --reference test2.txt test.txt 
jay@jaylinuxlenovo:~/test/chmod$ ls -l
total 0
-rw-rw-r-- 1 jay jay 0 Jan  1 13:02 test2.txt
-rw-rw-r-- 1 jay jay 0 Jan  1 12:02 test.txt 

6. 为每个类别的用户单独设置不同的权限

chmod u=rwx,g=rw,o=r test.txt

为当前用户设置所有权限,组用户设置读写权限,其他用户设置读权限。

jay@jaylinuxlenovo:~/test/chmod$ ls -l test.txt 
-r-------- 1 jay jay 0 Jan  1 12:02 test.txt
jay@jaylinuxlenovo:~/test/chmod$ chmod u=rwx,g=rw,o=r test.txt 
jay@jaylinuxlenovo:~/test/chmod$ ls -l test.txt 
-rwxrw-r-- 1 jay jay 0 Jan  1 12:02 test.txt

注意事项

  • 模式中的数字为 8 进制形式。
  • 更改文件或目录权限需要相应的权限,通常需要是文件的所有者或超级用户。
  • 在使用 -R 选项递归地改变目录权限时要特别小心,因为这可能会意外更改子目录和文件的权限。
  • 符号连接的权限无法变更,如果用户对符号连接修改权限,其改变会作用在被连接的原始文件。但如果是在递归模式下,则会忽略符号链接。
  • 粘滞位的作用取决于文件的类型:
    • 对于目录,如果设置了粘滞位,则意味着只有文件的所有者或者目录的所有者才能删除或重命名目录内的文件。这个功能对于像 /tmp 这样的所有用户可写的目录非常有用,因为它允许多个用户访问和写入文件,但防止用户删除或重命名其他用户的文件。这就是所谓的目录“受限删除标记”。
    • 对于常规文件,粘滞位在一些较老的系统上用于将程序文本映像保存在交换设备上,以便程序在运行时能够更快地加载。当然在现代系统中,这个用途通常不再有效。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/954814.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于机器学习的电信用户流失预测与数据分析可视化

完整源码项目包获取→点击文章末尾名片! 背景描述 根据IBM商业社区分享团队描述,该数据集为某电信公司在加利福尼亚为7000余位用户(个人/家庭)提供电话和互联网服务的相关记录。描述用户基本情况,包括每位用户已注册的…

【Sql递归查询】Mysql、Oracle、SQL Server、PostgreSQL 实现递归查询的区别与案例(详解)

文章目录 Mysql 5.7 递归查询Mysql 8 实现递归查询Oracle递归示例SQL Server 递归查询示例PostgreSQL 递归查询示例 更多相关内容可查看 Mysql 5.7 递归查询 MySQL 5.7 本身不直接支持标准 SQL 中的递归查询语法(如 WITH RECURSIVE 这种常见的递归查询方式&#xf…

接上篇基于Alertmanager 配置钉钉告警

Alertmanager 是一个用于处理和管理 Prometheus 警报的开源工具。它负责接收来自 Prometheus 服务器的警报,进行去重、分组、静默、抑制等操作,并通过电子邮件、PagerDuty、Slack 等多种渠道发送通知。 主要功能 去重:合并相同或相似的警报&…

Qt应用之MDI(多文档设计)

qt creator 版本6.8.0 MinGW 64bit 由此模块可以扩展成设计一个qt文本编辑器。 界面如下 部分功能展示如下 新建文件 打开文件 mdi模式、级联模式和平铺模式 界面和程序构建过程。 1.如图所需.cpp和.h文件 2.mainwindow.ui和tformdoc.ui界面布局如下 不懂什么是Action如何…

软件授权管理中的软件激活向导示例

软件激活向导示例 在软件许可中,提供许可应该是简单和安全的。这适用于想要在中央许可证服务器上创建新许可证的软件开发人员,也适用于需要在其设备上获得许可证的最终用户。如果所讨论的系统有互联网连接,或是暂时的连接,就可以…

GB44495-2024 汽车整车信息安全技术要求 - V2X部分前置要求

背景 GB 44495-2024《汽车整车信息安全技术要求》中关于V2X(车与外界通信)的部分,主要关注于通信安全要求,旨在确保车辆在与外部设备进行数据交互时的信息安全。其测试大致可分为消息层(数据无异常)、应用…

phpstudy靶场搭建问题

前言: 靶场搭建遇到的问题,记录一下,可能是基础不牢吧,老是遇到奇奇怪怪的问题 思路: 跟着网上的搭建走一遍 内容: 目录 搭建pikachu遇到的问题 搭建pikachu遇到的问题 其实并不是第一次搭建&#x…

【Excel】【VBA】双列排序:坐标从Y从大到小排列之后相同Y坐标的行再对X从小到大排列

Excel VBA 双列排序 功能概述 这段VBA代码实现了Excel中的双列排序功能,具体是: 跳过前3行表头先按C列数据从大到小排序在C列值相同的情况下,按B列从大到小排序排序时保持整行数据的完整性 流程图 #mermaid-svg-XJERemQluZlM4K8l {font-fa…

Hive SQL必刷练习题:留存率问题

首次登录算作当天新增,第二天也登录了算作一日留存。可以理解为,在10月1号登陆了。在10月2号也登陆了,那这个人就可以算是在1号留存 今日留存率 (今日登录且明天也登录的用户数) / 今日登录的总用户数 * 100% 解决思…

C++基础入门(二)

目录 前言 一、重载 1.函数重载 2.运算符重载 二、构造函数 1.什么是构造函数 2.带参数的构造函数 3.使用初始化列表 4.this关键字 5.new关键字 三、析构函数 1.什么是析构函数 四、静态成员变量 1.静态成员的定义 2.静态成员变量的作用 五、继承 1.继承基本概…

Redis 中 TTL 的基本知识与禁用缓存键的实现策略(Java)

目录 前言1. 基本知识2. Java代码 前言 🤟 找工作,来万码优才:👉 #小程序://万码优才/r6rqmzDaXpYkJZF 单纯学习Redis可以看我前言的Java基本知识路线!! 对于Java的基本知识推荐阅读: java框架…

基于unity的多人家装应用的设计与实现

摘要 本课题根据主流家装应用存在的问题和结合了Unity3D引擎所具有的优势,在主流家装应用的基础上弥补了常见的缺憾,实现了一种新型的交互更强的家装展示系统。 本系统主要通过将家具模型资源和材质等资源导入Unity3D平台中,通过C#代码开发&a…

Three.js+Vue3+Vite应用lil-GUI调试开发3D效果(三)

前期文章中我们完成了创建第一个场景、添加轨道控制器的功能,接下来我们继续阐述其他的功能,本篇文章中主要讲述如何应用lil-GUI调试开发3D效果,在开始具体流程和步骤之前,请先查看之前的内容,因为该功能必须在前期内容…

采用海豚调度器+Doris开发数仓保姆级教程(满满是踩坑干货细节,持续更新)

一、采用海豚调度器Doris开发平替CDH Hdfs Yarn Hive Oozie的理由。 海豚调度器Doris离线数仓方案与CDH Hive在多个方面存在显著差异,以下是对这两种方案的对比分析: 1. 架构复杂性 CDH Hive:基于Hadoop生态,组件众多&#…

50.【8】BUUCTF WEB HardSql

进入靶场 随便输输 上order by ????????,被过滤了,继续找其他也被过滤的关键字 #,-- -,-- 都不行,尝试其他特殊字符后发现and,union,select,空格,都被过滤了 如下 我就不知…

Redis 3.2.1在Win10系统上的安装教程

诸神缄默不语-个人CSDN博文目录 这个文件可以跟我要,也可以从官网下载:https://github.com/MicrosoftArchive/redis/releases 这个是微软以前维护的Windows版Redis安装包,如果想要比较新的版本可以从别人维护的项目里下(https://…

mac配置 iTerm2 使用lrzsz与服务器传输文件

mac配置 1. 安装支持rz和sz命令的lrzsz brew install lrzsz2. 下载iterm2-send-zmodem.sh和iterm2-recv-zmodem.sh两个脚本 # 克隆仓库 git clone https://github.com/aikuyun/iterm2-zmodem ~/iterm2-zmodem# 进入到仓库目录 cd ~/iterm2-zmodem# 设置脚本文件可执行权限 c…

9.7 visual studio 搭建yolov10的onnx的预测(c++)

1.环境配置 在进行onnx预测前,需要搭建的环境如下: 1.opencv环境的配置,可参考博客:9.2 c搭建opencv环境-CSDN博客 2.libtorch环境的配置,可参考博客:9.4 visualStudio 2022 配置 cuda 和 torch (c)-CSDN博客 3.cuda环境的配置…

YOLOv8从菜鸟到精通(二):YOLOv8数据标注以及模型训练

数据标注 前期准备 先打开Anaconda Navigator,点击Environment,再点击new(new是我下载anaconda的文件夹名称),然后点击创建 点击绿色按钮,并点击Open Terminal 输入labelimg便可打开它,labelimg是图像标注工具,在上篇…

STM32-keil安装时遇到的一些问题以及解决方案

前言: 本人项目需要使用到STM32,故需配置keil 5,在配置时遇到了以下问题,并找到相应的解决方案,希望能够为遇到相同问题的道友提供一些解决思路 1、提示缺少(missing)version 5编译器 step1:找…