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 这样的所有用户可写的目录非常有用,因为它允许多个用户访问和写入文件,但防止用户删除或重命名其他用户的文件。这就是所谓的目录“受限删除标记”。
    • 对于常规文件,粘滞位在一些较老的系统上用于将程序文本映像保存在交换设备上,以便程序在运行时能够更快地加载。当然在现代系统中,这个用途通常不再有效。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux系统离线部署MySQL详细教程(带每步骤图文教程)

1、登录官网下载对应的安装包 MySQL :: Developer Zone 2、将压缩包上传到服务器上,这里直接上传到/usr/local路径上 使用sftp工具上传到/usr/local目录上 3、解压压缩包 tar -xf mysql-8.0.39-linux-glibc2.17-x86_64.tar.xz 4、将mysql-8.0.39-linux-glibc2.17…

PyTorch使用教程(1)—PyTorch简介

PyTorch是一个开源的深度学习框架,由Facebook人工智能研究院(FAIR)于2016年开发并发布,其主要特点包括自动微分功能和动态计算图的支持,使得模型建立更加灵活‌。官网网址:https://pytorch.org。以下是关于…

Linux浅谈——管道、网络配置和客户端软件的使用

目录 一、管道 1、管道符 2、过滤功能 3、特殊功能 4、扩展处理 5、xargs命令扩展 二、网络配置 1、ifconfig查看网络信息 2、配置文件详解 网卡配置文件位置 3、systemctl查看网卡状态 4、systemctl启动/重启/停止网卡 三、客户端软件 1、什么是SSH 2、常用SSH终…

arcgis中生成格网矢量带高度

效果 1、数据准备 (1)矢量边界(miain.shp) (2)DEM(用于提取格网标高) (3)DSM(用于提取格网最高点) 2、根据矢量范围生成格网 模板范围选择矢量边界,像元宽度和高度根据坐标系来输入,我这边是4326的,所以输入的是弧度,输出格网矢量gewang.shp 3、分区统计 …

IEC103 转 ModbusTCP 网关

一、产品概述 IEC103 转 ModbusTCP 网关型号 SG-TCP-IEC103 ,是三格电子推出的工业级网关(以下简 称网关),主要用于 IEC103 数据采集、 DLT645-1997/2007 数据采集, IEC103 支持遥测和遥 信,可接…

Android BottomNavigationView不加icon使text垂直居中,完美解决。

这个问题网上千篇一律的设置iconsize为0,labale固定什么的,都没有效果。我的这个基本上所有人用都会有效果。 问题解决之前的效果:垂直方向,文本不居中,看着很难受 问题解决之后:舒服多了 其实很简单&…

【蓝桥杯】43687.赢球票

题目描述 某机构举办球票大奖赛。获奖选手有机会赢得若干张球票。 主持人拿出 N 张卡片(上面写着 1⋯N 的数字),打乱顺序,排成一个圆圈。 你可以从任意一张卡片开始顺时针数数: 1,2,3 ⋯ ⋯ 如果数到的数字刚好和卡片上的数字…

(01)FreeRTOS移植到STM32

一、以STM32的裸机工程模板 任意模板即可 二、去官网上下载FreeRTOS V9.0.0 源码 在移植之前,我们首先要获取到 FreeRTOS 的官方的源码包。这里我们提供两个下载 链 接 , 一 个 是 官 网 : http://www.freertos.org/ , 另…

金融项目实战 05|Python实现接口自动化——登录接口

目录 一、代码实现自动化理论及流程 二、脚本实现的理论和准备工作 1、抽取功能转为自动化用例 2、搭建环境(测试工具) 3、搭建目录结构 三、登录接口脚本实现 1、代码编写 1️⃣api目录 2️⃣script目录 2、断言 3、参数化 1️⃣编写数据存储文件:jso…

C# .NetCore 使用 Flurl.Http 与 HttpClient 请求处理流式响应

AI对话接口采用流式返回&#xff1a; 1、使用Flurl处理返回的数据流 using Flurl; using Flurl.Http; [HttpPost] public async Task<string> GetLiushiChatLaw() { //1、请求参数&#xff0c;根据实际情况 YourModel request new YourModel();string allStr …

南京地铁路线和站点2021-2030含规划线路shp数据arcmap地铁图坐标wgs84无偏移内容分析测评

南京地铁路线与站点数据是地理信息系统&#xff08;GIS&#xff09;中常用的一种数据格式&#xff0c;主要用来表示城市轨道交通网络。在本压缩包中&#xff0c;包含的是2021年至2030年&#xff0c;包括规划线路的南京地铁信息&#xff0c;数据类型为Shapefile&#xff08;shp&…

Web3D交互展示:重塑产品展示的新维度

在当今数字化时代&#xff0c;如何高效、直观地展示产品成为企业营销的关键一环。传统的二维图片和视频展示虽然在一定程度上能够传达产品信息&#xff0c;但往往缺乏沉浸感和互动性&#xff0c;难以满足消费者日益增长的体验需求。在此背景下&#xff0c;Web3D交互展示应运而生…

JVM远程调试原理剖析

一、如何开启JVM远程调试 当一个 Java 应用启动时&#xff0c;JVM 会根据启动参数配置其运行环境。使用 -agentlib:jdwp 参数启动远程调试功能&#xff0c;JVM 会初始化调试代理。 agentlib:jdwptransportdt_socket,servery,suspendn,address*:5005 -jar your_application.jar…

人工智能之深度学习-[1]-了解深度学习

深度学习 深度学习&#xff08;Deep Learning&#xff09;是机器学习&#xff08;Machine Learning&#xff09;的一种方法&#xff0c;它通过模拟人脑的神经网络结构来进行学习和推理。深度学习使用多层神经网络来分析和建模数据&#xff0c;尤其擅长处理大量数据和复杂模式的…

【C语言】_字符串追加/连接函数strcat

目录 1. 函数声明与功能 2. 使用示例 3. 注意事项 4. 模拟实现 4.1 第一版&#xff1a;判空返回值对标strcatconst保证不可修改 4.2 第二版&#xff1a;优化\0的单独拼接 1. 函数声明与功能 char * strcat ( char * destination, const char * source ); strcat函数功能…

【C#深度学习之路】如何使用C#实现Yolo8/11 Segment 全尺寸模型的训练和推理

【C#深度学习之路】如何使用C#实现Yolo8/11 Segment 全尺寸模型的训练和推理 项目背景项目实现推理过程训练过程 项目展望写在最后项目下载链接 本文为原创文章&#xff0c;若需要转载&#xff0c;请注明出处。 原文地址&#xff1a;https://blog.csdn.net/qq_30270773/article…

【机器学习】制造业转型:机器学习如何推动工业 4.0 的深度发展

我的个人主页 我的领域&#xff1a;人工智能篇&#xff0c;希望能帮助到大家&#xff01;&#xff01;&#xff01;&#x1f44d;点赞 收藏❤ 引言 在当今科技飞速发展的时代&#xff0c;制造业正经历着前所未有的变革&#xff0c;工业4.0的浪潮席卷而来。工业4.0旨在通过将…

半导体数据分析: 玩转WM-811K Wafermap 数据集(三) AI 机器学习

前面我们已经通过两篇文章&#xff0c;一起熟悉了WM-811K Wafermap 数据集&#xff0c;并对其中的一些数据进行了调用&#xff0c;生成了一些统计信息和图片。今天我们接着继续往前走。 半导体数据分析&#xff1a; 玩转WM-811K Wafermap 数据集&#xff08;二&#xff09; AI…

ClickHouse-CPU、内存参数设置

常见配置 1. CPU资源 1、clickhouse服务端的配置在config.xml文件中 config.xml文件是服务端的配置&#xff0c;在config.xml文件中指向users.xml文件&#xff0c;相关的配置信息实际是在users.xml文件中的。大部分的配置信息在users.xml文件中&#xff0c;如果在users.xml文…

Elasticsearch:Jira 连接器教程第一部分

作者&#xff1a;来自 Elastic Gustavo Llermaly 将我们的 Jira 内容索引到 Elaasticsearch 中以创建统一的数据源并使用文档级别安全性进行搜索。 在本文中&#xff0c;我们将回顾 Elastic Jira 原生连接器的一个用例。我们将使用一个模拟项目&#xff0c;其中一家银行正在开发…