Linux基本功系列之chmod命令实战

news2024/12/25 2:07:01

在这里插入图片描述

文章目录

  • 一. chmod命令介绍
  • 二. 语法格式及常用选项
  • 三. 参考案例
    • 3.1 对全部用户增加写的权限
    • 3.2 所有用户减去读的权限
    • 3.3 给文件的所有者和所有组加上读写权限
    • 3.4 设置所有用户为读写执行的权限
    • 3.5 文件拥有着为rwx,所属组为rw,其它为r
    • 3.6 去掉所有者的rw权限
    • 3.7 将test目录下所有文件都变成读写执行的权限
    • 3.8 设置所有者为读写,其他为读
  • 总结

前言🚀🚀🚀
想要学好Linux,命令是基本功,企业中常用的命令大约200多个,不管是写shell脚本还是管理操作系统,最常用的命令必须要牢牢掌握,像我们以前学乘法口诀一样,烂熟于心,唯有如此,才能打牢基础。
💓 知识最重要的是记忆
💓 入门须知: 想要人生从容,必须全力以赴,努力才是你最终的入场券🚀🚀🚀
💕 最后: 努力成长自己,愿我们都能在看不到的地方闪闪发光 ,一起加油进步🍺🍺🍺

一. chmod命令介绍

chmod命令来自于英文词组”change mode“的缩写,其功能是用于改变文件或目录权限的命令。

默认只有文件的所有者和管理员root可以设置文件权限,普通用户只能管理自己文件的权限属性。

设置权限时可以使用数字法,亦可使用字母表达式,对于目录文件建议加入-R参数进行递归操作,意味着不仅对于目录本身,也对目录内的子文件/目录都进行新权限的设定。

二. 语法格式及常用选项

常用参数:
我们可以使用 --help查看所有参数的使用。

[root@mufenggrow ~]# chmod --help
用法:chmod [选项]... 模式[,模式]... 文件...
 或:chmod [选项]... 八进制模式 文件...
 或:chmod [选项]... --reference=参考文件 文件...
Change the mode of each FILE to MODE.
With --reference, change the mode of each FILE to that of RFILE.

  -c, --changes          like verbose but report only when a change is made
  -f, --silent, --quiet  suppress most error messages
  -v, --verbose          output a diagnostic for every file processed
      --no-preserve-root  do not treat '/' specially (the default)
      --preserve-root    fail to operate recursively on '/'
      --reference=RFILE  use RFILE's mode instead of MODE values
  -R, --recursive        change files and directories recursively
      --help		显示此帮助信息并退出
      --version		显示版本信息并退出

从chmod的帮助文档中,我们发现 chmod的常用参数为:

在这里插入图片描述

三. 参考案例

修改权限的方式有两种:

第一种: 使用字符的设定进行修改

语法:chmod [对谁操作] [操作符] [赋于什么权限] 文件名

u----> 用户user,表示文件或目录的所有者
g---->用户组group,表示文件或目录所属的用户组
o---->其它用户others
a---->所有用户all

第二种: 使用八进制数字表示权限

数字型文件权限:

r=4 可读权限
w=2 可写权限
x=1 执行权限
没有任何权限为:0

我们一起看一下常见的权限操作:

3.1 对全部用户增加写的权限

读的权限为r,对所有用户增加读权限,意味着: 所有者,所有组,其他用户都设置为读的权限。

我们使用 字符设定来进行修改:

[root@mufenggrow test]# touch a.txt
[root@mufenggrow test]# ll a.txt
-rw-r--r--. 1 root root 0 121 16:17 a.txt
[root@mufenggrow test]# chmod a+w a.txt
[root@mufenggrow test]# ll a.txt
-rw-rw-rw-. 1 root root 0 121 16:17 a.txt
[root@mufenggrow test]# 

可以看到,原本所有组和其他用户只有读的权限,使用chmod后,a.txt所有用户都具有了写权限。

3.2 所有用户减去读的权限

根据3.1的写法,我们可以猜测,减去读的权限为 a-r, 接下来我们测试下:

[root@mufenggrow test]# ll a.txt
-rw-rw-rw-. 1 root root 0 121 16:17 a.txt
[root@mufenggrow test]# chmod a-r a.txt
[root@mufenggrow test]# ll a.txt
--w--w--w-. 1 root root 0 121 16:17 a.txt
[root@mufenggrow test]# 

可以看到,现在a.txt文件之后写权限了。

3.3 给文件的所有者和所有组加上读写权限

读写权限为 rw
所有者和所有组为: gu
意味着我们要使用 chmod gu+rw,接下来我们测试下:

[root@mufenggrow test]# ll a.txt
--w--w--w-. 1 root root 0 121 16:17 a.txt
[root@mufenggrow test]# chmod ug+rw a.txt
[root@mufenggrow test]# ll a.txt
-rw-rw--w-. 1 root root 0 121 16:17 a.txt
[root@mufenggrow test]# 

3.4 设置所有用户为读写执行的权限

读写执行为: rwx
所有用户可以用: a=rwx

[root@mufenggrow test]# ll a.txt
-rw-rw--w-. 1 root root 0 121 16:17 a.txt
[root@mufenggrow test]# chmod a=rwx a.txt
[root@mufenggrow test]# ll a.txt
-rwxrwxrwx. 1 root root 0 121 16:17 a.txt

3.5 文件拥有着为rwx,所属组为rw,其它为r

我们来分析下这个题目:
所有组 为rwx ,意味着 u=rwx
所有组为 g=rw
其他为r ,以为着 o=r

所以我们应该执行:

[root@mufenggrow test]# chmod u=rwx,g=rw,o=r a.txt
[root@mufenggrow test]# ll a.txt
-rwxrw-r--. 1 root root 0 121 16:17 a.txt
[root@mufenggrow test]# 

这里出现多个的时候,一定要加逗号分割开。

3.6 去掉所有者的rw权限

去掉所有这点rw权限,这里我们使用的操作符是 -

所有这是U ,最终答案为: U-rw

root@mufenggrow test]# ll a.txt
-rwxrw-r--. 1 root root 0 121 16:17 a.txt
[root@mufenggrow test]# chmod u-rw a.txt
[root@mufenggrow test]# ll a.txt
---xrw-r--. 1 root root 0 121 16:17 a.txt
[root@mufenggrow test]# 

从结果可以看到,a.txt文件的所有者的读写权限都被去掉了。

3.7 将test目录下所有文件都变成读写执行的权限

此时,所有文件都变为读写执行,即: a=rwx
涉及到所有文件,我们用到参数 -R

[root@mufenggrow test]# touch {1..3}.txt
[root@mufenggrow test]# ll 
总用量 0
-rw-r--r--. 1 root root 0 121 16:31 1.txt
-rw-r--r--. 1 root root 0 121 16:31 2.txt
-rw-r--r--. 1 root root 0 121 16:31 3.txt
---xrw-r--. 1 root root 0 121 16:17 a.txt
[root@mufenggrow test]# chmod -R a=rwx ./*
[root@mufenggrow test]# ll
总用量 0
-rwxrwxrwx. 1 root root 0 121 16:31 1.txt
-rwxrwxrwx. 1 root root 0 121 16:31 2.txt
-rwxrwxrwx. 1 root root 0 121 16:31 3.txt
-rwxrwxrwx. 1 root root 0 121 16:17 a.txt

使用八进制的形式设置权限

3.8 设置所有者为读写,其他为读

根据八进制,可以得知,只需要设置644即可

[root@mufenggrow test]# chmod 644 a.txt
[root@mufenggrow test]# ll a.txt
-rw-r--r--. 1 root root 0 121 16:17 a.txt
[root@mufenggrow test]# 

可以发现用数字相对来说更简单一些,我们可以直接进行换算即可:

r=4 可读权限
w=2 可写权限
x=1 执行权限
没有任何权限为:0

总结

chmod在日常工作中用的比较多,我们多数情况下用到的都是八进制的形式。

💕💕💕 好啦,这就是今天要分享给大家的全部内容了,我们下期再见!✨ ✨ ✨
🍻🍻🍻如果你喜欢的话,就不要吝惜你的一键三连了~

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高级Spring之ApplicationContext功能

第一步,我们先来看这个接口的内部结构,了解别人的内部,知己知彼,百战不殆: 这个接口的扩展功能主要体现在它继承的四个接口上: MessageSource:国际化功能 ResourcePatternResolver: 资源访问功…

第23章_Tomcat和JavaEE入门

一、JavaEE简介什么是JavaEEJavaEE(Java Enterprise Edition),Java企业版,是一个用于企业级web开发平台。最早由Sun公司定制并发布,后由Oracle负责维护。JavaEE平台规范了在开发企业级web应用中的技术标准.在JavaEE平台…

Acwing——第 87 场周赛

题目链接 4797. 移动棋子 4798. 打怪兽 4799. 最远距离 题目描述 4797. 移动棋子 给定一个 5 行 5 列的方格矩阵,其中一个方格中有一个棋子。 现在,我们希望将棋子移动至矩阵的最中心方格中,即将其移动至矩阵的第 3行第 3列方格中。 每次…

8种时间序列分类方法总结

对时间序列进行分类是应用机器和深度学习模型的常见任务之一。本篇文章将涵盖 8 种类型的时间序列分类方法。这包括从简单的基于距离或间隔的方法到使用深度神经网络的方法。这篇文章旨在作为所有时间序列分类算法的参考文章。 时间序列定义 在涵盖各种类型的时间序列 (TS) 分…

分布式锁与实现(一)-为什么需要分布式锁

1 在开发中的锁是什么 在计算机科学中,锁是在执行多线程时用于强行限制资源访问的同步机制,即用于在并发控制中保证对互斥要求的满足。 在java中我们有两种资源控制方式Synchronized与AQS 1.2 基于Synchronized实现的锁控制 Synchronized是java提供的一…

JDK 8新特性之Lambda表达式

目录 一:使用匿名内部类存在的问题 Lambda表达式写法,代码如下: 二:Lambda的标准格式 三:Lambda的实现原理 四:Lambda省略格式 五:Lambda的前提条件 六:函数式接口 七:Lambd…

05回溯法

文章目录装载问题回溯算法优化算法构造最优解0-1背包问题批处理作业调度问题图的M着色问题N皇后问题最大团问题回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回&…

12. 字典dict类型详解

1. 基础知识 (1) 字典(dictionary)是Python中另一个非常有用的内置数据类型。 (2) 列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。 (3) 字典是一种映射类型&#xff…

Flowable进阶学习(三)流程、流程实例挂起与激活;启动、处理、结束流程的原理以及相关表结构与变动

文章目录流程挂起与激活流程实例挂起与激活启动、处理、结束流程的原理一、启动流程的原理启动一个流程实例时涉及到的表及表结构:ACT_RU_EXECUTION 运行时流程执行实例ACT_RU_IDENTITYLINK 运行时用户关系信息ACT_RU_TASK 运行时任务表ACT_RU_VARIABLE 运行时变量表二、处理流…

过滤器Filter总结

过滤器Filter1. 简介2. 快速入门3. 执行流程4. 使用细节4.1 拦截路径4.2 过滤器链5. 案例5.1 需求5.2 LoginFilter1. 简介 过滤器是JavaWeb三大组件之一(Servlet、Filter,Listner); 作用: 把对资源(servl…

Ubuntu22.04 安装 ssh

文章目录Ubuntu22.04 安装 ssh一、 环境配置二、 启动远程连接三、 开放端口四、 远程连接Ubuntu22.04 安装 ssh 一、 环境配置 安装 Ubuntu 系统后,我们首先需要配置管理员 root 用户: sudo passwd root然后,进行软件源的更换&#xff1a…

14 Java集合(Map集合+HashMap+泛型使用+集合面试题)

集合14.11 Map集合14.11.1 Map集合特点14.11.2 Map集合体系结构14.12 HashMap14.12.1 HashMap基本使用14.12.2 HashMap实际应用14.12.3 HashMap练习14.12.4 HashMap底层实现原理14.12.5 put的过程原码14.12.6 resize过程原码14.12.7 get的过程原码14.13 HashTable14.14 泛型高级…

5-1中央处理器-CPU的功能和基本结构

文章目录一.CPU的功能二.CPU的基本结构(一)运算器1.运算器的基本组成2.专用数据通路方式3.CPU内部单总线方式(二)控制器1.基本组成2.实现过程(三)寄存器一.CPU的功能 中央处理器(CPU&#xff0…

并查集的入门与应用

目录 一、前言 二、并查集概念 1、并查集的初始化 2、并查集的合并 3、并查集的查找 4、初始化、查找、合并代码 5、复杂度 二、路径压缩 三、例题 1、蓝桥幼儿园(lanqiaoOJ题号1135) 2、合根植物(2017年决赛,lanqiaoO…

SQL注入篇 - 布尔盲注及延时注入

数据来源 盲注 什么是盲注: 布尔盲注原理 布尔盲注流程 手工盲注思路(以下的文章参考:DVWA-sql注入(盲注) - N0r4h - 博客园) 手工盲注的过程,就像你与一个机器人聊天,这个机器人知…

DGSEA | GSEA做完了不要停,再继续比较一下有意义的通路吧!~

1写在前面 GSEA大家都会用了,但GSEA也有它自己的缺点,就是不能比较两个基因集或通路的富集情况。🤒 今天介绍一个Differential Gene Set Enrichment Analysis (DGSEA),可以量化两个基因集的相对富集程度。😉 2用到的包…

Java中的位运算及其常见的应用

文章目录1、位运算1.1 原码、反码、补码1.2 位运算符2、位运算的应用2.1 取模运算2.2 奇偶性判断2.3 交换变量的值2.4 加法运算1、位运算 1.1 原码、反码、补码 计算机中所有数据的存储和运算都是以二进制补码的形式进行的。a —> 97,A —> 65,‘…

深入学习Vue.js(十二)编译器

模板DSL的编译器 1.编译器概述 编译器实际上是一段程序,他用来将一种语言A翻译为另一种语言B。其中,A被称为源代码,B被称为目标代码。编译器将源代码翻译为目标代码的过程被称为编译。完整的编译过程通常包含词法分析、语法分析、语义分析、…

软件测试——测试用例

作者:~小明学编程 文章专栏:测试开发 格言:热爱编程的,终将被编程所厚爱。 目录 测试用例的设计方法 等价类 边界值 错误猜测法 判定表法(使用于关系组合) 设计步骤 具体例子 正交法 场景设计法…

Redis相关简介

1. Redis 简介 在这个部分,我们将学习以下3个部分的内容,分别是: ◆ Redis 简介(NoSQL概念、Redis概念) ◆ Redis 的下载与安装 ◆ Redis 的基本操作 1.1 NoSQL概念 1.1.1 问题现象 在讲解NoSQL的概念之前呢&am…