linux入门---权限

news2024/12/24 20:57:02

目录标题

  • 什么是权限
  • 人的分类
  • 为什么会有所属组
  • 查看文件属性
  • 文件的分类
  • 如何查看权限
  • 文件不同权限的表现
    • r
    • w
    • x
  • 权限修改
  • 八进制权限修改
  • umask有关内容
  • 文件中人的修改
  • 目录不同权限的表现
    • r
    • w
    • x

什么是权限

首先来看一个例子:比如说我没有爱奇艺的vip,那么我也就没有权限观看爱奇艺这个平台下的vip视频,我有qq音乐的vip那么我就有权限在qq音乐这个平台下听周杰伦的歌,看了这两个例子想必大家应该能够知道权限对于人来说就是限制一个人或者一个群体能不能干一件事情,好!我们再来看两个例子:我们生活中的桌子是用来盛放物品方便我们吃饭的,那这个桌子能够吃吗?这个桌子可以用来洗澡吗?很明显是不能的。我们平时看视频用的app比如说西瓜视频腾讯视频,这些app能是用来做oj题吗?玩3A大作吗?很明显也是不能的,因为这些app没有做oj题和玩3A大作的能力,换句话说就是没有权限来实现上面的功能,这两个例子都是针对物的,权限对于物来说就是一件事情能不能被做,好!看了上面的四个例子,我们可以知道权限既可以作用于人也可以作用物,那这里权限的概念就是一个人或者一群人能不能干一件事,以及这件事能不能被干。这是生活中权限的定义,那在linux操作系统中权限一般都是针对文件而言,一个人能不能对这个文件进行修改能不能阅读一个文件能不能执行这个文件都是linux的权限决定的,如果一个文件本身就没有可读可写的权限的话那不管是谁都无法读写,这就是linux中的权限即对人也对物。

人的分类

linux操作系统将人分为了三类分别是:文件拥有者,文件所属组,其他人。

为什么会有所属组

在公司创建初期资源都非常的有限,多个小组只能使用一个机器来进行开发,而且有些公司在实现一个项目的时候会安排多个小组同时来做这个项目,做的最高的小组才能得以获胜,比如说当初微信app在被开发时候就有多个小组在做,最后由QQ创始人带领的小组获胜最终才有大家现在看到的微信,那再回头看看这里的所属组为什么会有所属组这个东西呢?好这里我们先假设没有所属组这个东西,linux中将人分为两类:文件拥有者和其他人,然后这里有一个项目由两个小组进行开发并且在同一台机器上面:
在这里插入图片描述
在项目开发的时候一般都有领导检查你代码写的情况或者同一个团队的人员查看你的代码学习一些东西,而你是文件的拥有者他们是这个文件的other,他们想要查看这个文件的内容的话就只有两个方法,第一把你的密码告诉他们,他们登录你的账号查看想要的内容,但是这个时候你就只能被强制下机了,等他们看完之后才能上线,第二就是把该文件的其他人的权限打开,这些人作为其他人的身份查看你的代码,但是这里就存在了一个问题我们把其他人的权限打开之后团队B的人也能看到我们的代码,他们这时候就可能从我们的代码中搞到一些有用的东西放到他们的项目里面,这样话就会对团队A的项目就会造一些损失,这么看的话上面的两种方法好像都不是非常的有利于项目成员的交流,所以这个时候linux就给出了一个身份叫所属组,把团队的成员都放到这个所属组里面,这样就可以将团队的成语与其他人分割开,即方便了团队内的交流与学习又保护了自己的文件不被其他人盗取,那么这就是所属组存在的意义。

查看文件属性

首先通过ll指令来看文件的属性比如说下面的操作:
在这里插入图片描述
这里就是ll指令显示的结果,我们来解释一下这里显示的内容分别是什么意思:
在这里插入图片描述
首先每一行的第一个字符表示的是文件类型,如果是该文件是目录的话就会显示d,如果是普通文件的话就会显示 - 。在文件类型这一块linux和Windows的区别就有点大,windows的文件类型与后缀有关,比如说可执行文件的后缀就是.exe,而在linux中文件类型和后缀是没有关系的,linux的后缀仅仅只是给用户提供一个提示符的作用,后缀的本质还是文件名的一部分,要想查看文件的真正的类型还是得通过ll指令显示的第一个字符来进行确定,但是有小伙伴看到这里就感觉不对劲了,我们之前使用gcc编译器编译文件的时候,该文件必须得加个点c后缀,不然无法生成可执行的文件,你不是说Linux系统中对后缀没有要求的嘛,怎么这里就有要求了呢?那么这里大家得注意的一点就是linux操作系统确实对后缀,没有要求但是这并不代表着Linux操作系统上的软件对文件的后缀没有要求,我们之前使用的gcc编译器他其实是Linux操作系统上的软件,这个软件需要查看文件的后缀,对文件名有要求这里大家得区分开
在这里插入图片描述
这就是第一个字符所代表的意思我们继续往后看,接下来的每三个字符为一组一共有3组:
在这里插入图片描述
那么这三组字符分别表示三类人对这个文件可以执行的权限,左边一组是文件拥有着可以对这个文件执行的权限,中间一组是文件所属组拥有的权限,右边的一组是其他人对这个文件拥有的权限,至于这里的权限能干嘛我们后面再聊,再往后看有一个数字2
在这里插入图片描述
这个2表示的是连接数,那什么是连接数,这就得学到后面才能跟大家解释清楚了,再往后看有两个root
在这里插入图片描述
第一个棕色括号里面的内容对应的是这个文件的拥有着,第二个棕色括号里面的内容对应的是这个文件的所属组,那么不在这两个括号里面的人就都是other,这里两个棕色括号里的内容都是root,所以这个文件的拥有者和所属组都是root,除了root外其他人对于这个文件都是other,再往后还出现了一个数字
在这里插入图片描述
这个数字表示的意思是这个文件或者目录的大小,这里显示的是4096,所以folder1目录的大小就是4096个字节,那么这里就有个问题我们之前创建一个空白文件时,用ll显示的大小是00,难道这个文件在硬盘中装的内容真的是0吗?比如说下面的操作:
在这里插入图片描述
这里的tmp文件为,那么这个文件在硬盘上占用的大小也为0吗?答案很明显不是的,因为一个文件在磁盘中所占的大小是由文件的内容大小加上这个文件的属性决定,一个文件的内容可能为0,但是一个文件的属性一定不为0,而这里显示的0指的是这个文件的内容为0,而不是这个文件在硬盘上占用的空间为0,这里大家得注意一下,接着往后就出现了一段时间:
在这里插入图片描述
这个就是与这个文件有关的时间,这里大家知道就行,最后一个就是这个文件的名字:
在这里插入图片描述
那么这就是文件权限的介绍。

文件的分类

第一个:
- 表示的普通文件比如说:源代码文件,库文件,可执行程序,文件压缩包等等,
在这里插入图片描述
第二个:
d 表示的是目录文件,也就是文件夹。
在这里插入图片描述
第三个:
c 表示的是字符文件这些文件就是专门用来管理键盘显示器的,我们可以在/dev/tty中看到这些文件:
在这里插入图片描述
第四个:
b 表示的是块文件,这些文件就是专门用来管理硬盘的,我们可以在/dev/vada1中看到块文件:
在这里插入图片描述
第五个:
I 表示的是链接文件,这个文件就相当于我们windows中桌面的图标,这些图标就是一个个的链接文件,最明显的特点就是我们将这些图标删除不会影响软件的本体。
第六个:
p 表示的是管道文件,我们之前使用的 l 就是管道文件的一种,比如使用mkfifo指令就可以创建一个管道文件
在这里插入图片描述
第六个:
s 这个就表示的是socket文件,至于这个是啥我们以后再了解。

如何查看权限

一个人如果有完整的权限的话,那么在对应的权限位置上显示的内容应该是rwx,这里的r是读权限,w是写权限,x是执行权限,并且权限在显示的时候永远都是以rwx的顺序进行显示,如果某类人没有一些权限的话,那么在这些权限的对应位置上显示的就是-,比如说某人只有读和写的权限,那么这里在显示的时候就是rw-,如果一个人只有写权限的话这里显示的就是-w-,如果一个人什么权限都没有的话这里显示的就是- - -,我们来看看下面的图片:
在这里插入图片描述
这是一个文件夹,这个文件夹对于拥有者来说有读写执行的权限,但是对于所属组或者其他人来说这个文件夹就只用读和执行的权限没有写权限。
在这里插入图片描述
这是一个普通文件,对于这个文件的拥有者来说只有读和写的权限没有执行的权限,对于这个文件的所属组或者其他人来说的话这个文件只有读权限,没有写和执行的权限。那么这就是文件权限的看法。

文件不同权限的表现

r

我们来看看下面文件的权限:
在这里插入图片描述
这里有个test2文件这个文件的拥有者没有读权限,我们使用echo往这个文件里面输入一个字符串然后使用cat读这个文件时就可以发现操作系统阻止了我们这里的操作因为我们没有权限:
在这里插入图片描述
但是这里的编译器没有阻止我们显示文件的内容,那这是为什么呢?原因很简单我们时root用户,root用户时不会受到权限的限制的,那这里我们将角色进行切换换成wj,再来执行一下上面的操作:
在这里插入图片描述
我们就可以看到这里操作系统就阻止了我们查看这个文件的内容,但是有些小伙伴就好奇了啊,虽然文件拥有着没有读文件的权限,但是我们还是这个文件的所属组啊,所属组拥有读文件的能力,那为什么这里依然不让读文件呢?那么这里的原因就很简单了,因为这里的角色匹配时是else if关系一旦匹配成功了就不会继续往后进行匹配了,所以这里我们即使还是所属组也不能读这个文件。

w

这个是写权限,当我们没有这个权限后无法往一个文件里面写入内容比如说下面的操作:
在这里插入图片描述
这里就禁止我们将内容输入到文件里面。

x

首先我们创建一个文件,然后使用nano往这个文件里面输入一些可以执行的代码:
在这里插入图片描述

然后再使用这个文件生成一个可执行程序:
在这里插入图片描述
我们可以看到这里生成了一个可执行的tmp文件,那么我们作为对比我们在此路径下再把该文件再复制一份:
在这里插入图片描述
将tmp文件的拥有者权限进行修改:将可执行权限去掉:
在这里插入图片描述
然后我们先执行一下tmp1文件就可以看到这个文件时正常运行的:
在这里插入图片描述
这里输出的时候忘记加换行了,所以这里看的就有点难受,然后我们再执行一下这里的tmp文件就可以看到这个文件是没有权限执行的:
在这里插入图片描述
那么这就是x权限的作用。

权限修改

chmod指令可以用来修改人员的权限其形式如下:
在这里插入图片描述
u代表的是拥有者,y代表的是所属组,o代表的是其他人,a表示所有人,如果你想增加权限的话就使用+,如果你想删除权限的话就使用-,对应的权限就是r w x,当然这里的权限可以是一个组合比如说rwx,rx,wx等等,最后再加上你想要修改的文件,那么这里的操作就如下:
在这里插入图片描述
一开始所有人对test1文件的权限都是没有的,我要是想让test1文件的拥有者有读权限就可以使用下面的指令:
在这里插入图片描述
如果我想让test1文件的所属组拥有读和执行的权限的话就可以使用下面的操作:
在这里插入图片描述
如果我想让test1文件的其他人拥有读写执行权限的话就可以使用下面的指令:
在这里插入图片描述
如果我想让test1文件的所有人都没有任何权限的话就可以使用下面的指令:
在这里插入图片描述
当然这里的修改还可以连续的将多人进行修改,比如说我想让拥有者的权限变为rx让其他人的权限都变成rwx的话就可以执行下面的操作:
在这里插入图片描述

八进制权限修改

文件的权限用rwx来表示,如果哪个权限没有的话对应位置上的内容就变成了-,那么这里我们就可以把 - 当成0,把r w x 都看成1比如说rwx就是1 1 1,r - x 就是101 ,r - -就是000,那么这里我们就可以根据这个逻辑列出一个表出来
在这里插入图片描述

一个人的权限可以由三个二进制数字来表示,而3个二进制数字可以合成一个8进制数字,一个文件有3类人,所以就有三个不同的权限来进行表示,所以一个文件就应该有三个八进制数字来表示权限,比如说一个文件的权限分别为:rwx rw- r-x那么这个文件的权限就可以用765来进行表示,如果一个文件的权限为 - - - -w- r-x的话,那么就可以使用数字025来表示文件的权限,既然一个文件的权限可以使用数字来表示的话,那么这里我们也可以用数字来修改一个文件的权限,那么修改的形式就是如下:
在这里插入图片描述
比如说一个文件的开始权限为000,我们要想将这个权限修改成rwx rwx rwx的话就可以这样进行修改:
在这里插入图片描述
如果我们想把这个文件的权限改成r-x rw- r- -的话就可以使用下面的指令:
在这里插入图片描述
那么这就是八进制权限修改法,希望大家能够理解。

umask有关内容

我们首先来看看下面的操作:
在这里插入图片描述
创建了一个文件夹和一个普通文件,我们通过ll可以看到这里文件的起始权限是rw- rw- r- -,而文件夹的起始权限为rwx rwx r-x那这是为什么呢?答案是跟umask的值有关,往命令行中输入umask就可以看到umask的值:
在这里插入图片描述
umask值为0002第一个0表示后面的三个数字都是八进制,我们将三个八进制数字展开成二进制就变成了这样:000 000 010,这里得将这些数字看成权限,所以这里umask的权限就变成了- - - - - - -w-,而umask的概念是权限掩码就是凡事在umask中出现的权限在文件或者目录中都得去掉,linux规定:目录的起始权限为777也就是
rwx rwx rwx 普通文件的起始权限是666也就是rw- rw- rw-,而umask中的other有写权限,所以目录和文件在创建的时候就得将other中的写权限去掉,所以目录在创建的时候权限就变为了rwx rwx r-x,文件的权限就变成了rw- rw- r–,那这里我们可以验证一下上面讲的内容是否是对的:
在这里插入图片描述
我们讲umask的值进行修改,改成了777然后再创建文件或者目录的话就可以发现这里的起始权限都没有了:
在这里插入图片描述
我们还可以讲umask的值设置为444这样我们创建文件或者目录的话就都没有读权限:
在这里插入图片描述
这里大家注意的一就是umask不是单独的减法,而是通过下面的公式来算出的最终权限:
在这里插入图片描述
umask要去掉的权限位是1,要保留的权限位是0,使用~反转权限后就变成~umask要去掉的权限是0,要保留的权限是1,最后再使用&操作可以让起始权限中与~umask对应的位置为0的数字都变成0,就是~umask为0的位置起始权限也变成了0,最终达到权限删除的作用。

文件中人的修改

使用chown指令可以修改文件的拥有者,使用chgrp指令可以修改文件的所属组,这两个指令的用法如下:
在这里插入图片描述
这里我将用户改成了root,如果是普通用户要使用这个指令的话得用sudo进行提权,那么这里的操作如下:
在这里插入图片描述
如果是普通用户不适用sudo提权的话,是无法修改这里的人的:
在这里插入图片描述
这里的chown可以连续修改拥有者和所属组,其用法如下:
在这里插入图片描述
那么这就是chown和chgrp的用法,希望大家可以理解。

目录不同权限的表现

普通文件的权限是rwx,文件夹的权限也是rwx,但是文件夹的rwx和普通文件的rwx的表现是不一样的,我们来看看下面的操作:

r

如果一个人没有这个文件夹的读权限的话是无法查看这个文件夹的内容的,比如说下面的操作:
在这里插入图片描述
然后我们将folder1文件夹的读权限去掉
在这里插入图片描述
然后我们再进入这个目录查看这个文件夹的内容时就可以看到我们没有权限查看这个文件夹的内容:
在这里插入图片描述
那么这就是文件夹的r权限,没有这个权限我们无法查看文件夹里面的内容。

w

没有文件夹的w权限我们就没有办法在文件夹里面创建文件夹以及其他文件,比如说下面的操作:
在这里插入图片描述

x

没有文件夹的x权限就无法进入文件夹,比如说下面的操作:
在这里插入图片描述
那么这就是linux中权限的所有内容希望大家能够理解。

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

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

相关文章

训练CV模型常用的方法与技巧

最近参加一个CV比赛,看到有参赛者分享了自己训练图像识别模型时常用到的小技巧,故对其进行记录、整理,方便未来继续学习。整理了很多,它们不一定每次有用,但请记在心中,说不定未来某个任务它们就发挥了作用…

JavaScript-扫盲

文章目录1. 前言2. 第一个 JavaScript 程序3. javaScript 的基础语法3.1 变量3.2 数据类型3.3 运算符3.4 条件语句3.5 数组3.6 函数3.7 作用域3.8 对象4. WebAPI4.1 DOM 基本概念4.2 常用 DOM API4.3 事件4.4 操作元素4.5 网页版猜数字游戏4.6 留言版1. 前言 提问 java 和 java…

数字图像学笔记 —— 17. 图像退化与复原(自适应滤波之「最小二乘方滤波」)

文章目录维纳滤波的缺点约束最小二乘方滤波给一个实际例子吧维纳滤波的缺点 维纳滤波(Wiener Filter),虽然是一种非常强大的退化图像还原算法,但是从实验过程我们也发现它存在着致命的缺陷,那就是要求输入退化系统的 …

医疗器械之模糊算法(嵌入式部分)

模糊控制 所谓模糊控制,就是对难以用已有规律描述的复杂系统,采用自然语言(如大,中,小)加以描述,借助定性的,不精确的以及模糊的条件语句来表达,模糊控制是一种基于语言的…

Java虚拟机JVM-运行时数据区域说明

及时编译器 HotSpot虚拟机中含有两个即时编译器,分别是编译耗时短但输出代码优化程度较低的客户端编译器(简称为C1)以及编译耗时长但输出代码优化质量也更高的服务端编译器(简称为C2),通常它们会在分层编译…

【Linux】手把手教你在CentOS上使用docker 安装MySQL8.0

文章目录前言一. docker的安装1.1 从阿里下载repo镜像1.2 安装docker1.3 启动docker并查看版本二. 使用docker安装MySQL8.02.1 拉取MySQL镜像2.2 创建容器2.3 操作MySQL容器2.4 远程登录测试总结前言 大家好,又见面了,我是沐风晓月,本文主要…

docker系列1:docker安装

传送门 docker官网地址: Docker: Accelerated, Containerized Application Development 安装地址:Install Docker Engine docker hub地址 docker hub:Docker 安装步骤 前置条件 由于安装docker,需要根据操作系统版本选择…

设计模式(只谈理解,没有代码)

1.什么是设计模式设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。2.为什么要学习设计模式看懂源代码:如果你不懂设计模式去看Jd…

【react全家桶】生命周期

文章目录04 【生命周期】1.简介2.初始化阶段2.1 constructor2.2 componentWillMount(即将废弃)2.3 static getDerivedStateFromProps(新钩子)2.4 render2.5 componentDidMount2.6 初始化阶段总结3.更新阶段3.1 componentWillRecei…

2023最新版本RabbitMQ的持久化和简单使用

上节讲了 RabbitMQ下载安装教程 , 本节主要介绍RabbitMQ的持久化和简单使用。 一、RabbitMQ消息持久化 当处理一个比较耗时得任务的时候,也许想知道消费者(consumers)是否运行到一半就挂掉。在当前的代码中,当RabbitM…

如何在本地跑FuzzBench的实验

概述 FuzzBench是谷歌做的一个评估模糊测试的benchmark,主要目的是为了评测覆盖率导向模糊测试工具能达到多少覆盖率,能够发现多少漏洞。本文主要介绍如何在本地运行fuzzbench的实验。当然也可以用谷歌的云服务来跑,具体教程在这&#xff1a…

计算机底层:BDC码

计算机底层:BDC码 BDC码的作用: 人类喜欢十进制,而机器适合二进制,因此当机器要翻译二进制给人看时,就会进行二进制和十进制的转换,而常规的转换法(k*位权)太麻烦。因此就出现了不同…

基本类型、包装类型、引用类型、String等作为实参传递后值会不会改变?

看了半天帖子,讲得乱七八糟,坑死了 [1] 先说结论 基本类型、包装类型、String类型作为参数传递之后,在方法里面修改他们的值,原值不会改变!引用类型不一定,要看是怎么修改它的。 [2] 为什么基本类型、包装类…

程序设计语言-软件设计(二十一)

数据结构与算法(二十)快速排序、堆排序(四)https://blog.csdn.net/ke1ying/article/details/129269655 这篇主要讲的是 编译与解释、文法、正规式、有限自动机、表达式、传值与传址、多种程序语言特点。 编译的过程 解释型 和 编译型 编译型过程&#…

【IDEA】IDEA使用有道翻译引擎—详细配置步骤

目录 前言 步骤一:下载翻译工具Translate 步骤二:注册登录有道云平台 步骤三:配置有道翻译 前言 2022年10月 谷歌翻译已经不在中国了,所以IDEA配置谷歌翻译会出错。 步骤一:下载翻译工具Translate 打开idea设置set…

c语言经典例题-选择结构程序设计进阶

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 快递费用计算: 题目: 代码思路: 代码表示: 计算一元二…

Java奠基】数组的讲解与使用

目录 数组概述 数组的定义与初始化 数值遍历 数组的常见操作 数组内存图 数组概述 数组是一种容器,可以用来存储同种数据类型的多个值,数组容器在存储数据的时候,需要结合隐式转换考虑。例如:int类型的数组容器不能存放取值…

191、【动态规划】AcWing ——AcWing 900. 整数划分:完全背包解法+加减1解法(C++版本)

题目描述 参考文章:900. 整数划分 解题思路 因为本题中规定了数字从大到小,其实也就是不论是1 2 1 4,还是2 1 1 4,都会被看作是2 1 1 4这一种情况,因此本题是在遍历中不考虑结果顺序。 背包问题中只需考虑…

mysql一条语句的写入原理

mysql写入原理 我们知道在mysql数据库最核心的大脑就是执行引擎; 其中的默认引擎Innodb在可靠执行和性能中做出来平衡; innodb支持在事务控制、读写效率,多用户并发,索引搜索方面都表现不俗; innodb如何进行数据写入…

MYSQL性能分析,Explain,Show Profile

文章目录一、MYSQL常见瓶颈二、ExplainExplain是什么三、Show Profile四、慢查询日志和全局查询日志一、MYSQL常见瓶颈 CPU: CPU饱和IO:磁盘IO速度过慢。服务器的硬件性能瓶颈。 二、Explain Explain是什么 使用explain关键字可以模拟优化器执行sql查…