修改文件权限chown/chgrp/chmod【Linux】

news2024/11/23 15:53:41

文章目录

  • Linux当中的权限问题
    • Linux权限的概念
    • 切换用户账号
  • Linux权限管理
    • 文件类型和访问权限(事物属性)
  • Linux文件名后缀
      • 文件权限值的表示方法
    • 文件访问权限的相关设置方法
      • 如何改变文件的访问权限
      • 如何改变文件的拥有者
      • 如何改变文件的所属组
      • 如何修改文件的掩码
  • 目录文件的权限
  • 粘滞位
  • 权限的匹配规则

在这里插入图片描述

Linux当中的权限问题

Linux权限的概念

在Linux下有两种用户,分别是超级用户(root)和普通用户。
超级用户的命令提示符是“#”,普通用户的命令提示符是“$“。
超级用户可以在Linux下做任何事情,几乎不受限制,而普通用户一般只能在自己的工作目录下(/home/xxx)工作,以及在系统上做有限的工作。也就是说,权限的概念都是用来限制普通用户的,几乎不限制超级用户。

切换用户账号

命令:su - [用户名]
功能:切换用户。
例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的口令。

从普通账号切换为root账号。
在这里插入图片描述
从root账号切换为普通账号。

在这里插入图片描述

切换用户后,若想切回上次的用户,可通过Ctrl+D实现。

su只是单纯的进行了身份的切换,工作的目录并没有发生改变
su -相当于让我们的root重新登录,默认处在我们的家目录下,也就是/root
在这里插入图片描述

如何仅提升当前指令的权限
对单条指令进行提权,某些指令在操作时,会显示权限不够,指令请求失败,这时如果要切换到root用户来进行访问的话,有些太麻烦了,因为我们只需要对一条指令进行提权,没必要再切换成root用户来访问。这时我们就可以将sudo+command的方式来对指令进行提权,注意我们这里输入的是普通用户的密码,并非root用户的密码

语法: sudo 指令
功能: 提升当前指令的权限。
例如,我现在要以一名普通用户的身份,修改另一个普通用户的账号密码。

**加粗样式**
该提示说你没有被超级用户(root)添加到信用列表当中,所以该条指令的权限得不到提升,只有当你被超级用户添加到信任列表后,你才拥有提升当前指令权限的能力。

如何将普通用户添加到信任列表
那么首先你得先切换到超级用户,只有超级用户才有权力将普通用户添加到信任列表。

Linux权限管理

文件访问者的分类(人)
对于用户来说,权限可以将用户分为三大类:
1)文件和文件目录的所有者(文件拥有者)。
2)文件拥有者所在的组的用户(文件所属组)。
3)其他用户(other)。

注意:
1)对于某一文件而言,其拥有者、所属组和other就是由超级用户(root)和普通用户所扮演。
2)在Linux当中,所有用户都要隶属于某一个组,哪怕这个组只有你一个人(此时该组就以你的用户名为组名)。

我们可以通过指令ll来查看某一文件或文件目录的拥有者和所属组。
在这里插入图片描述
注: 除了文件拥有者和文件所属组之外的都叫other。

文件类型和访问权限(事物属性)

使用指令ll,我们可以看到前面有一串字符,这串字符实际上就代表着该文件的类型和属性。
在这里插入图片描述
这串字符由10个字符组成的。其中第一个字符所代表的就是该文件的文件类型。
在这里插入图片描述
不同的字符代表不同的文件类型。
1)-:代表普通文件。
2)d:代表目录。
3)l:代表链接文件(类似于Windows当中的快捷方式)。
4)b:代表块设备文件(例如硬盘、光驱等)。
5)p:管道文件。
6)c:字符设备文件。
7)s:套接口文件。
注意: 在Linux当中,文件类型与文件后缀无关。

剩下的9个字符每三个为一组,分别代表该文件相对于其拥有者、所属组以及other是否拥有某种属性
在这里插入图片描述
每一组的三个字符的第一个字符代表该文件是否具有可读属性,第二个代表是否具有可写属性,第三个代表是否具有可执行属性。
在这里插入图片描述
若是具有可读属性,则第一个位置的字符为r;若是具有可写属性,则第二个位置的字符为w;若是具有可执行属性,则第三个位置的字符为x。若某一位置为字符 - ,则说明不具有对应位置的属性。

在这里插入图片描述

注意:1、位置是什么含义是确定的
2、每一个位置只有是或者否,具有指定的权限
r/- w/- x/-

Linux文件名后缀

文件的类型:Linux系统中文件名后缀没有直接的意义,但是不代表不用
Linux操作系统可以不管这些文件的后缀,但并不代表操作该文件的软件或其他编译器不关心这些后缀,例如我们这里的gcc,他可无法识别你这.txt后缀的文件,所以它并不能够编译你这个文件

在这里插入图片描述

Linux中如何看待后缀 ?
看用户需求

文件权限值的表示方法

  • 字符表示方法
    ll指令打印文件权限值时的表示方法就是字符表示法。例如

在这里插入图片描述

  • 八进制数值表示法
    字符表示法中的每一个字符所在位置所表示的结果只有两种可能,要么为真,
    要么为假,因此我们可以将这三个字符换为三个二进制位,进而换为一个八进制位进行表示。例如

在这里插入图片描述

文件访问权限的相关设置方法

如何改变文件的访问权限

语法: chmod 选项 权限 文件名或目录名
功能: 设置文件的访问权限。
常用选项: -R 递归修改目录文件的权限。

chmod指令权限值的格式
格式一: 用户符号 +/-/= 权限字符
1)+:向权限范围增加权限代号所表示的权限。
2)-:向权限范围取消权限代号所表示的权限。
3)=:向权限范围赋予权限代号所表示的权限。
用户符号:
1)u:拥有者。
2)g:所属组。
3)o:other。
4)a:所有用户。
在这里插入图片描述
若要同时设置不同类用户的访问权限,则需用逗号隔开。
在这里插入图片描述
三位八进制数字
将对应的八进制数转换为二进制,进而设置对应权限值。
在这里插入图片描述

如何改变文件的拥有者

语法: chown 选项 用户名 文件名或目录名
功能: 修改文件的拥有者。
常用选项: -R 递归修改目录文件的拥有者。
在这里插入图片描述

修改文件的拥有者需要root用户进行操作,如果是普通用户则需要进行权限提升。

如何改变文件的所属组

语法: chgrp 选项 用户名 文件名或目录名
功能: 修改文件的所属组。
常用选项: -R 递归修改目录文件的所属组。

在这里插入图片描述

修改文件的所属组需要root用户进行操作,如果是普通用户则需要进行权限提升。


也可以使用chown指令同时修改文件的拥有者和所属组,将拥有者和所属组的用户名用冒号隔开即可。

在这里插入图片描述

如何修改文件的掩码

我们查看新建的文件和目录,它们都有自己默认的权限。

在这里插入图片描述

实际上,新建文件的默认权限为0666,新建目录的默认权限为0777。其中第一位的0与特殊权限有关,这里不展开讲述,而后面三位就是权限的八进制数值表示方法,我们将其翻译为字符表示方法。

在这里插入图片描述
创建出来的文件和目录的权限值往往不是我们所翻译出来的值,因为创建文件和目录的时候还要受到umask的影响,如果默认权限是mask,则实际创建出来的文件权限是:mask&(~umask)

语法: umask 权限值
功能: 查看或修改文件掩码。

我们可以通过指令umask查看文件默认掩码。
在这里插入图片描述

将掩码的的后三位八进制换算为二进制,然后对其进行按位取反。

在这里插入图片描述
将之前的新建文件的默认权限值和新建目录的默认权限值分别与其进行按位与操作,得到的就是最终创建出来的文件和目录的权限值。

在这里插入图片描述
换句话说就是凡是在umask中出现的权限位,都不能在最终权限中出现。
在这里插入图片描述

通过修改umask来设置文件的访问权限。
在这里插入图片描述
注意: 超级用户的默认掩码为0022,普通用户的默认掩码为0002。

总结:
a.普通文件起始权限:666(没有可执行x权限)
b.目录文件起始权限:777(rwx,能显示,能进入,能创建)
c 最终权限: 系统为了更好的控制文件权限,会有默认的(权限掩码umask)的概念。centos7下默认的掩码为0002,第一个0先不管,我们看后三位数(002)就行了 ,002二进制序列就是000 000 010

d.权限掩码: 在起始权限中,去掉在umask中出现的权限,不能影响其他任何权限!

结论:最终权限 = 起始权限 & (~umask)

目录文件的权限

对于文件来说,其可读可写可执行的属性我们都知道分别代表着什么对应的操作,那对于目录来说可读可写可执行又分别代表着什么呢?
1)可读权限: 如果用户没有该目录的可读权限,则无法通过ls指令查看目录中的文件内容。
2)可写权限: 如果用户没有该目录的可写权限,则无法通过一系列指令在目录中创建文件或删除文件。
3)可执行权限: 如果用户没有该目录的可执行权限,则无法通过cd指令进入到目录当中。


总结:
目录文件的权限
r : 是否允许我们查看指定目录下的文件内容
w:是否允许我们在当前目录下进行创建,更改,删除

x : 是否允许用户进入对应的目录

那么这就会出现一个问题
如果用户拥有某目录的可写权限,就可以删除该目录当中的文件,不管该用户是否拥有该文件的可写权限,这显然是不合理的。

为了解决这个不合理的问题,Linux引入了粘滞位的概念。

粘滞位

语法: chmod +t 目录名
功能: 给目录加上粘滞位。
当一个用户将某一个目录加上粘滞位后,该目录的权限值的最后一位变为字符“t”。
在这里插入图片描述
在Linux中,用大写字母T表示目录启用了粘滞位并且执行权限未启用,用小写字母t表示目录启用了粘滞位并且执行权限启用。

当一个目录被设置为粘滞位,则该目录下的文件只能由:

1)超级用户删除。
2)该目录的拥有者删除。
3)该文件的拥有者删除。

注意:粘滞位通常被用于目录上,目的是限制其他用户删除该目录下的文件或目录。对于普通文件,粘滞位设置是无效的,因为它只对目录文件起作用。

权限的匹配规则

权限的匹配规则是:只能匹配一个人,优先匹配user,然后才是group,最重要的是他只会匹配一次。

如果你觉得这篇文章对你有帮助,不妨动动手指给点赞收藏加转发,给鄃鳕一个大大的关注
你们的每一次支持都将转化为我前进的动力!!!

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

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

相关文章

leetcode 152.乘积最大子数组

题目描述 给你一个整数数组 nums ,请你找出数组中乘积最大的非空连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。 测试用例的答案是一个 32-位 整数。 子数组 是数组的连续子序列。 来源:力扣&a…

从2PC和容错共识算法讨论zookeeper中的Create请求

大家好,我是方圆。最近在读《数据密集型应用系统设计》,其中谈到了zookeeper对容错共识算法的应用。这让我想到之前参考的zookeeper学习资料中,误将容错共识算法写成了2PC(两阶段提交协议),所以准备以此文对…

Speech | 提取语音(数据集)的语音特征合集

本文主要讲解了提取数据集的一些主要工具,以及如何使用这些工具,包含安装以及运行命令。 提取语音(数据集)的语音特征工具(Extract audio features toolkits) • openSMILE • COVAREP • ESPNet • YAAF…

Java集合框架:链表和LinkedList详解

目录 一、ArrayList的缺陷 二、链表(主要介绍不带头的非循环的 单链表 / 双链表) 注: 三、模拟链表的实现: MySingleList(单链表) MyLinkedList(双链表) 四、LinkedList的使用 …

HNU计算机体系结构-实验一:RISC-V指令理解

HNU计算机体系结构-实验一 前言1.实验目的2.实验步骤1.安装模拟器Ripes2.生成汇编指令3.思考问题1)指令add x15, x14, x152)指令bge x15 x14 -683)指令lw x15, -20 x84)指令sw x15, -20 x85)简述BranchE信号的作用6&am…

通达信筹码集中度计算公式,解决了结果不同的问题

筹码分布图基本上是国内股票交易软件的标配,一般在K线图窗口的右侧。通达信软件中,在右下角有个“筹”,点击之后就可以看到“筹码分布图”。(如下图)筹码分布图是根据一定的模型计算出的流通股票持仓成本分布情况&…

postman接口关联实战解析

在使用postman做接口测试时,有时候后面的接口需要获取前面接口的某一个返回值做为请求参数,这时就可以使用关联。 如从A接口提取出a字段的值,供B接口的b字段使用。 一个接口的返回报文如下: {"retCode": "0&quo…

【数据库原理与实践】知识点归纳(上)

第1章 数据库系统概述 (数据处理技术的发展 数据库的基本概念和特点) 一:数据、信息、知识、决策 对应:Data、Information、Knowledge、Decision 二:数据库技术的产生与发展 产生原因:数据管理任务的…

如何正确使用Postman变量?又该如何灵活设置变量?

目录 引言 理解变量 postman的变量类型 变量作用域 变量覆盖规则 创建变量 创建全局变量 创建环境变量 创建集合变量 使用变量 引言 Postman变量可以帮助你快速生成测试数据、模拟不同的场景和环境。 但是,如何正确使用Postman变量?又该如何…

Android的服务Service

Android学了太久了,都忘了。复习下四大组件之一的Service。 介绍 Android的Service是一种在后台执行长时间运行操作的组件,它可以在没有用户界面的情况下执行任务,并且可以与应用程序的其他组件进行通信。Service通常用于处理网络请求、音乐…

快速创建Django项目

环境搭建 安装Django之前需要先安装python环境和pycharm。 目前 Django 1.6.x 以上版本已经完全兼容 Python 3.x。 python安装教程:https://blog.csdn.net/David_house/article/details/100110542 项目创建 打开pycharm,选择文件–>新建项目 创建D…

MySQL操作基础

文章目录 一、Mysql的基本概念1.1数据库有哪些组成数据表数据库 1.2数据库系统和数据库管理系统1.3数据库的发展史 二、数据库的分类三、数据库的数据类型三、数据库的操作3.1查看数据库的结构3.2创建及删除数据库和表3.3管理表中的数据记录3.4修改表名和表结构 Linux操作系统&…

11.JavaWeb-Spring框架

1.Spring概念 Spring框架是一个轻量级开源的应用程序框架,用于开发Java企业级应用程序。它提供了一种综合的编程和配置模型,可以帮助开发人员构建灵活、可扩展且易于维护的应用程序。 Spring的根本使命:简化Java开发 【Spring给予了Java新生】…

文心一言 VS 讯飞星火 VS chatgpt (40)-- 算法导论5.4 4题

四、一次聚会需要邀请多少人,才能让其中 3 人的生日很可能相同? 文心一言: 为了解决这个问题,我们需要先计算出所有可能的生日组合数,然后计算出其中生日相同的组合数。 已知需要邀请的人数为:23人 根据组合数公式…

大数据开发之Hive案例篇12:HDFS rebalance 一例

文章目录 一. 问题描述二. 解决方案2.1 增加节点2.2 rebalance2.3 rebalance引发的问题 一. 问题描述 公司的离线数仓是CDH集群,19个节点,HDFS存储空间大约400TB左右,使用量在200TB左右。 由于历史遗留的问题,数据仓库需要重构&a…

将Qtcreator编译器、调试器等配置为MSVC2017/2019

目录 1. 前言 2. 工具/原料 2.1. 安装Windows下的软件开发调试器 3. 配置Qtcreator 1. 前言 安装Qt或Qtcreator时,一般选择MinGW 64-bit或MSVC编译器。对于MinGW 64-bit很简单,一般安装后会自动在Qtcreator配置好,不用费心就可以进行开发…

一种对不同类型齐格勒-尼科尔斯 P-I-D 控制器调谐算法研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

基于NIM_DUILIB_FRAMEWORK框架的网易云信demo:NIM_PC_DEMO

NIM_PC_DEMO 网易云信 PC IM Demo 是基于网易云信 PC SDK 制作的即时通讯示例程序,UI 库使用 NIM Duilib 制作。 github地址:。 1、预览 2、最低要求 CMake 3.10 或以上版本。Visual Studio 2017 或以上版本。Git。 3、开发步骤 NIM Demo 从 8.4.0 版本开始使…

selenium面试题总结

今天有同学问到seleinum面试的时候会问到的问题,随便想了想,暂时纪录一下。欢迎大家在评论中提供更多问题。 1.selenium中如何判断元素是否存在? selenium中没有提供原生的方法判断元素是否存在,一般我们可以通过定位元素异常捕获…

Java网络开发(Tomcat同步数据增删改查)—— 用Jsp语法实现同步请求的 增删改查

目录 引出显示所有数据到前端(1)前端代码:list.jsp(2)后端代码:CompanyListServlet.java 新增数据---转发类型信息---新增信息业务(1)在list.jsp页面点击添加(2&#xff…