首页 > 系统相关 >Linux 学习之路 -- 权限2

Linux 学习之路 -- 权限2

时间:2024-03-23 09:59:32浏览次数:23  
标签:文件 -- 我们 命令 Linux 权限 root 目录

目录

1.文件的权限

<1>chown 命令

<2> chmod 命令另一种修改权限方式

<3>chgrp 命令

2.文件类型

3.关于文件的误区和一些问题


1.文件的权限

前面已经粗略的介绍了一下文件权限的修改命令chmod,这里继续上面的介绍。这里我们把拥有者的权限修改成只有可执行,再去掉用文件看看会发生什么?

可以看见,系统拒绝了我们的访问,因为我们作为拥有者没有权限进行“r”操作,或许你会疑问为什么我们不可以以所属的身份进行访问呢?这是因为系统只能识别一次你的身份,当你的身份已经被确定为拥有者时,就无法被识别成所属组了。

<1>chown 命令

如果我们就想阅读"1.cpp"文件里面的内容,就必需以所属组或other 身份来进行访问,前面已经说过了,系统只会识别一次用户身份,所以我们必需要修改文件拥有者,这是就需要chown命令了,这个命令得有root 权限才能使用,所以普通用户在使用chown前要加上sudo(其实这个也好理解,你要给东西给别人,就必须经过别人得同意,chown 命令就相当于强制别人收下这个东西)。

需要注意的是,只用普通用户才会被权限限定,对于root 用户来说,权限的限制是不存在的(可以把root理解成封建皇朝的皇帝),所以在linux 操作系统中root账号是非常重要的,在root 用户眼里,系统没有秘密。

<2> chmod 命令另一种修改权限方式

对于一个文件中特定用户(拥有者,所属组,other)的权限就只有rwx 三种,如果没有就用 - 来表示,那我们就可以用 1 来表示有这个权限,0 表示没有这个权限。假如三个权限均有则表示为 111,我们可以把它理解成二进制的数字,转成十进制那么就是数字 7 。此时把剩下的每组的权限依次转换,并把他们拼接起来形成一串数字。

下面先举个例子,帮助理解数字的转换过程:

  假设一个文件的权限是 rwxrwxr-x(如下表格)

rwxrwxr-x
111111101

转换成十进制(三个数字为一组),再拼接

111111101
007007005

拼接而成的数字就是775 这就代表上面 rwxrwxr-x 这条文件权限,如果我们要将另一个文件的权限修改跟这个文件一样的权限,我们只需要实行 chmod + 权限数字 + 文件名 即可,当然如果你觉得这不够直观,你也可以使用我在上文提到得修改方法,这两种其实并无差异。

<3>chgrp 命令

chgrp 命令,其实跟chown 命令差不多,其中的操作于chown 差不多,都要sudo 进行提权。这个命令就是修改所属组。当然,如果你想同时修改所属组与拥有者,那可以使用chown + “要修改成的拥有者” :“要修改成的所属组” + 文件名。

注意:修改所属组与拥有者的过程中就是修改other。

2.文件类型

在windows 操作系统中,我们一般以文件后缀区别文件类型,通过这些类型就可以让特定的软件进行操作。在Linux 操作系统中,我们不以文件的后缀区分文件的类型,一般文件的后缀是为了方便人们阅读,在Linux中,我们一般以文件权限的第一个字符作为文件类型。(也就是下图中红框标起来的部分)

下面介绍常见的文件类型:

 <1> " - " : 表示普通文件,包含文本,源码,视频等                                                                           <2> " d ": 表示目录文件                                                                                                                     <3> " b ": block 表示块设备文件                                                                                                         <4> " c ": 字符设备文件                                                                                                                       <5> " l " : 链接文件                                                                                                                             <6>  "p" : 管道文件                                                                                                                             <7>  "s" : socket 文件

这里的dev 是设备分区(这里我的是云服务器,磁盘在该路径下,虚拟机可能不一样)

b 表示块设备文件(支持随机访问就叫块设备)。

下面依旧输入/dev 这个文件就能查看字符设备的文件类型

c 表示字符设备文件 (不支持随机访问,最典型就是键盘显示器)                                                   链接文件在现阶段,可以理解成桌面上的快捷方式。                                                                         下面我用mkfifo 命令创建一个管道文件

如上图,my 文件就是一个管道文件,那么管道文件和我们之前介绍管道命令有什么关系呢?其实这两属于是一种兄弟关系,都可以传递信息,具体作用后面介绍。

下面就演示一下基本管道文件基本操作(echo 写入my 文件,再用cat 输出 my 里面的文件)

socket 文件暂不介绍,目前接触不到。

3.关于文件的误区和一些问题

<1>linux 系统虽然不以后缀结尾,但是Linux里面工具是会识别文件的后缀,例如在实行gcc 命令时,gcc 是会识别文件,如果随便取后缀,会造成gcc 这个命令无法识别的情况

<2>linux 系统中,如果我们要进入一个目录文件需要什么权限呢?  

我们可以通过控制变量来观察                                                                                                             

我们可以发现,只有最后去掉x 权限时,目录文件无法进入。所以我们可以得知,进入目录文件需要x 权限。这也是为什么我们在创建目录文件时,目录文件会自动在所有用户加上x 权限。

<3> 目录文件的其他权限的介绍

当我们没有目录文件的 r 权限时,我们也是无法查看目录文件的属性信息的

当我们没有w 权限时,我们是没办法在目录文件里进行创建文件、删除文件、修改文件名或文件内容的操作,注意其他属性是可以修改(原因后面文章解释)。

<4> 目录文件和普通文件被创建时的默认权限问题

我们可以发现普通文件创建时的权限默认是664,目录文件的默认权限是775。为什么他们创建出来的权限不是777 或 666 呢?其实普通文件的起始权限就是666,(这里不是777原因是一开始普通文件是不需要被执行的,里面一般都是些文本内容)目录文件的起始权限其实就是777,不过这里关系到权限掩码的问题,这里我们可以改变权限掩码来定制文件刚被创建时的文件。

把这个数值转换成二进制数字,不过要注意的是,这个数字长度跟权限数字长度要一致。权限掩码转换成二进制数字后,于转成二进制的权限数字做差,举个例子:上面的权限掩码是 0002,也就是 002, 转二进制变成 000 000 010,文件的起始权限为666,转成二进制 110 110 110,如果起始权限中出现掩码权限,就去掉改数字,并变为0,如果没有出现就保持不变。你也可以理解为      起始权限 & (~权限掩码) =  最终权限(默认)

作差示例
起始权限110110110
权限掩码000000010
被创建后的权限110110100

目录文件其实也是一样的操作。如果我们要改变默认权限,就只要修改权限掩码即可。

<5>文件目录里面的权限问题

假设我们作为一个普通用户去访问自己的目录(有rwx 权限)时,发现里面root 的文件权限为000,我们作为普通用户无法访问,但是我们如果实行rm 命令时,其实是可以删除的。所以我们可以得出一个结论,文件是否能被删,并不取决于文件本身,而取决于文件目录的w权限。(我们可以把用户的文件看作一个家,上面权限为000 的root 文件看作家里面的物品,虽然我们在家里面用不了这个东西,但我们可以把它扔了)

为了防止有人随便进入他人家目录建文件或删文件,Linux 中用户被创建时,其家目录的文件只有对拥有者有rwx ,其他用户的权限均为0(虽然root的权限为0 ,但root 不受权限控制)。

既然用户不能之间在彼此的家目录创建文件,那我们该如何解决日常的协作开发中多用户同时访问一个文件的问题呢?                                                                                                                           Linux在根目录下创建了一个/tmp 目录,所有用户都可以访问该目录的文件,该目录的所有权限都被放开了         

我们发现,最后一个全限字母并不是 x 而是 t。这里介绍 t 存在的原因,tmp目录文件所有权限都被放开了,多个用户在该目录创建文件,为了防止个别用户乱删别人的文件,就诞生了一个 t 权限,这个 t 权限就叫粘滞位,该权限可以让用户创建的文件只有root 跟用该用户才能删除,其他人都没有权力进行删除操作。(注意该权限里面包含了x权限,不要以为没有x权限了)

以上就是所有的内容,希望对各位读者有所帮助,如果文中有不对之处,还望各位大佬指正,谢谢!!!

标签:文件,--,我们,命令,Linux,权限,root,目录
From: https://blog.csdn.net/2302_79538079/article/details/136896775

相关文章

  • Redis缓存方案设计思路
    Redis缓存方案是一个用于提高系统性能和响应速度的策略,主要通过将数据存储在快速访问的内存数据库中来实现。下面是一个基础的Redis缓存方案的实现步骤和注意事项:一、确定缓存目标1、分析数据:确定哪些数据适合放入缓存,通常是那些读取频繁、更新不频繁的数据。2、热点数据......
  • 常见转义字符
    转义字符  转义字符是一种特殊的字符常量。转义字符以反斜线"\"开头,后跟一个或几个字符。转义字符具有特定的含义,不同于字符原有的意义,故称“转义”字符。例如,在前面各例题printf函数的格式串中用到的“\n”就是一个转义字符,其意义是“回车换行”。转义字符主要用来表示那......
  • 【模板】单调队列 滑动窗口最值
    LuoguP1886滑动队列/单调队列有一个长为 n 的序列 a,以及一个大小为 k 的窗口。现在这个从左边开始向右滑动,每次滑动一个单位,求出每次滑动后窗口中的最大值和最小值。 以求最小值为例f[i]表示以i结尾的窗口中的最小值f[i]=min(a[j]),i-k+1<=j<=i暴力算法O(n^2)......
  • CF-936(AB)
    CF-936(已更新:AB)诶……今天还有一个积分赛……自己学科方面也满是坑要补……感觉自己前途一片灰暗/(ㄒoㄒ)/~~A分析只要增大与初始序列中位数的值相同的数,就能在不改变序列顺序的情况下增大中位数的值代码#include<bits/stdc++.h>usingnamespacestd;#defineendl'......
  • 文件包含漏洞
    文件包含  开发人员通常把可重复使用的函数单独写在一个文件,在使用某函数时直接调用此文件,这就是文件包含  通常会把包含的文件设置为变量来进行动态调用,导致客户端可以调用任意文件,造成文件包含漏洞 函数  php中有四个文件包含的函数,include,include_once,require,requi......
  • 递归法求解最大连续子序列和MaxSubSum
    何为递归呢总结一句话就是:向基准情形不断推进核心就在于“递”和“归”递:不断推进归:向基准情形结合今天的例子进一步解释如下:分而治之的思想divideandconquer分三步:“分”“治”“合并”“分”:将子序列看作三种,左半部分右半部分跨越中间元素的子序列“治”......
  • Uni-app 之APP打开小程序与分享小程序页面
    一、配置1、微信开放平台,创建移动应用与绑定小程序2、manifest.json,填写移动应用的appid二、打开小程序plus.share.getServices(res=>{varis_weixin=res.find(i=>i.id==='weixin');if(is_weixin){is_weixin.launchMiniProgram({id:weixin_id,......
  • 固定常用文件夹到快速访问
    对windows系列系统,就是日常的效率工具,总有一些很常用,每每见过,似曾相识,又每每不得其法的小技巧,因不是主业,影响有亦可以忽略,少有深究的。win窗口左侧有一个快速访问栏,用来打开常用的文件夹很便捷,印象中好像拖文件夹过去就可以了,有每每实现不了,好像偶尔又莫名其妙的可以了的操作,就这......
  • Markdown学习
    Markdown学习标题三级标题四级标题字体Hello,world!Hello,world!Hello,world!Hello,world!引用选择狂神说,走向分割线图片超链接点击跳转到狂神博客列表ACABC表格名字性别生日张三男1997.1.1代码hellopublic......
  • linux中的用户分类与权限管理
    普通用户和管理员root用户的分类和组:/etc/passwd  保存了操作系统中所有用户的信息root:x:0:0:root:/root:/bin/bash字段1:用户名字段2:密码占位符(弃用)字段3:用户的uid  0表示超级用户,500-6000普通用户,1-499为程序用户字段4:基本组的gid  先有组后有用户字段5:用户信息记录字段......