当前位置: 首页 > news >正文

从0开始的linux(4)——权限

欢迎来到博主的专栏:从0开始的linux
博主ID:代码小豪

文章目录

    • 用户和用户组
    • 文件权限
      • 更改文件权限
      • 目录文件的权限意义
      • 普通文件的权限意义
    • sudo命令

linux具有多用户的任务环境,为了让每个用户保护各自文件数据(防止别的用户对其他用户进行修改,删除的操作),因此对文件的权限设置就非常重要了。当然了,root账号则拥有最高的权限,可以不受文件权限的限制。

用户和用户组

每个文件对于不同用户的开放度是不同的,linux将用户群分为三种,分别是文件的拥有者(owner),文件的所属的用户组(group),以及其他(other)。我们以root账号为例,使用ls -l指令,查看/root的文件属性。

在这里插入图片描述
之所以要做出这种设计也非常好理解。已现实为例,假如文件就是你自己的房间,对你来说,在这个房间当中做什么事都可以,而对于你信任的人来说(用户组),她们可以在你的房间做你允许做的事,而对于除此之外的其他人(other),可能连进你房间的权限都没有,一旦进了可能你就报警了。

对于linux来说,将一个文件对于“用户和用户组”的权限具有不同的开放度是一个相当健全的安全防护措施。因为linux是一个多人多任务的系统,因此会出现多个人同时使用一台主机的情况(比如服务器),考虑到每个人的权限,对文件的所属者,以及所属用户组,还有其他用户做出不同的权限开放是一个非常不错的设计。

而所谓的用户组,可以理解为和你一起工作的小组,作为一个小组,会需要共享数据,因此对于同属一个用户组的用户设置比other更高的权限是合理的。

文件权限

前面讲了那么多关于文件权限与不同用户的关系,但是好像博主还没有说到文件对于不同的用户到底有什么权限,以及如何分辨,如何设置。

还是以上面的root文件为例吧,通过ls -al可以查看当前目录下的所有文件的文件属性。我们还是以上面的root文件为例。这个root文件的属性是一堆字符段。
在这里插入图片描述
别的都好理解。但是文件权限是一堆编码,那么我们该如何分辨出文件权限的意思呢?
第一个字母表示的是文件的类型,[d]是目录,[-]则是普通文件,[l]是链接文件,[b]和[c]则是设备文件,这一点后面在了解。我们当前最多使用的还是[d]开头的目录文件和[-]开头的普通文件。

接下来的字符中,每三个为1组,而且都是[r]代表有读权限,[w]代表有写权限,[x]代表有可执行文件。如果不具有对应权限则会出现[-],比如[rwx]则代表该文件具有可读可写可执行的权限。这里只谈到了文件的权限,但是前面不是说了吗?linux系统对于不同的用户具有不同的权限。那么这个权限是针对谁的呢?

除去第一个字母表示文件属性外。其余编码每三个字符为一组。仔细数数上面的编码,除去第一个字母外,还剩下9个编码,也就是三组,正好对应文件拥有者[owner],所属用户组[group],其他人[other]三种不同用户的权限。

第一组为文件拥有者具备的权限,比如root文件对于root用户来说,具有可读可执行的权限
第二组为所属用户组具备的权限,比如root文件对于root用户组来说,具有可读可执行的权限
第三组为其他人具备的权限,root文件对于其他人来说,不可读,不可写,也不可执行

另外,不同属性的文件的权限具有不同的意义,我们现已目录文件来说

更改文件权限

命令1 chmod
功能:修改文件的权限
格式:chmod [参数] [文件名]

前面提到了,文件的用户分为三种分别是文件创建者(owner),这里用u(user)表示,接着是所属用户组(group)用g表示,还有其他人(other),用o表示。我们在root目录下创建一个test4目录,以test4目录为例。
在这里插入图片描述
test4对于所属用户(root),而言拥有的权限为rwx,如果我们要让root的权限变得不可读,则输入指令

chmod u-w test4

u代表user,表示文件的所属用户,减号(-)表示对应用户减少相应的权限,w,表示可写权限,组合在一起的意思是“让user失去test4文件的可写权限”

因此test4的权限变为:

在这里插入图片描述
test4对于所属用户组(root)而言,拥有的权限为r-x,现在我们想要让root用户组获得test4的可写权限,则输入指令:

chmod g+w test4

g代表group,表示文件的所属用户组,加号(+)表示对应用户增加相应的权限,w,表示可写权限,组合在一起的意思是“让group获得test4文件的可写权限”
在这里插入图片描述

如果我们想让test4文件对于其他人不公开,即不可读不可写不可执行(---),则输入指令

chmod o=--- test4

o代表other,表示文件的所属用户组,等号(=)表示对应用户修改成对应的权限,—,表示不可读不可写不可执行,组合在一起的意思是“让other的test4文件的权限变为不可读不可写不可执行(—)”
在这里插入图片描述

  • +:向权限范围增加权限代号所表示的权限
  • -:向权限范围取消权限代号所表示的权限
  • =:向权限范围赋予权限代号所表示的权限
    用户符号:
  • u:拥有者
  • g:拥有者同组用
  • o:其它用户
  • a:所有用户

一个文件的权限由文件拥有者控制,那么一个文件有时候会需要修改所属用户和所属用户组,文件所属用户和所属用户组也是文件权限的组成之一。因此我们需要掌握修改这些权限的指令:

chgrp #修改文件所属用户组
chown #修改文件拥有者
chmod #修改文件权限

chgrp是change group的缩写,格式为chgrp [用户组] [文件名]
chown是change owner的缩写,格式为chown[用户][文件名]

要注意,修改所属用户和所属用户组只有root用户才能操作。

目录文件的权限意义

对于目录文件来说,如果目录文件不可写,那么用户则无法在该目录文件下创建或删除文件,但是问题来了,root文件对于root来说,没有可写的权限(r-x)
在这里插入图片描述
但是我们却在root目录当中创建了一个test4文件,这是因为root账号无视任何文件的权限,所有文件对于root来说都是可读,可写,可执行(rwx),因此权限对于root来说是不能限制的。

因此在展示文件权限的意义时,我们切换到普通用户(普通用户需要我们用root用户去创建),切换用户的命令为
su [用户名]
如果我们使用普通用户切换到其他用户(包括root),需要输入密码,而使用root用户切换到其他用户,则不需要输入密码。博主这里将root切换至普通用户lysb666(这是博主创建的普通用户之一)

su lysb666

现在由lysb666在/home/cds路径下创建一个目录test4,并且将可执行权限关闭

chmod u-x test4

在这里插入图片描述

现在test4目录对于lysb666来说,lysb666属于是user那部分,此时lysb666(后面简称ly)对test4的权限为可读,可写,不可执行。如果文件对于用户来说不可执行,那么我们就无法进入test4文件。我们可以尝试进入test4文件
在这里插入图片描述
可以发现,如果目录文件对用户没有可执行的权限,那么用户就无法进入该文件

如果test4文件对ly没有可读权限呢?

chmod u-r u+x test4

在这里插入图片描述

此时如果进入test4,可以发现可以成功进入test4目录文件。但是如果我们想要查看test4目录中的文件,会因没有可读权限而被拒绝
在这里插入图片描述
可以发现,如果用户对于目录文件没有读权限,那么无法查看目录文件。

如果test4对于ly没有写权限(r-x)

chmod u-w,u+r test4

那么ly则无法在test4文件当中创建或删除文件
在这里插入图片描述
可以发现,如果用户对于目录文件没有可写权限,那么无法在目录文件中进行删除或创建文件

普通文件的权限意义

现在,我们将test4对ly的权限改为可读可写可执行,并且在test4当中创建一个普通文件test,
在这里插入图片描述
对于这个普通文件来说,有没有可执行权限都非决定因素,因为普通文件是否可执行取决于文件本身是否可以执行,如果文件不可执行,那么即使有可执行权限也无法执行。

如果普通文件对于用户没有写权限,那么我们就无法对该文件进行修改。
在这里插入图片描述
即使使用nano或者vim等编辑器也无法修改test文件的内容
在这里插入图片描述

因此,如果用户对普通文件没有写权限,就无法修改文件的内容

如果test对ly没有可读权限呢?
在这里插入图片描述
我们可以向test文件写入数据
在这里插入图片描述
但是无法读取test当中的数据,即使使用nano或者vim等编辑器也无法查看内容。
在这里插入图片描述
在这里插入图片描述
此时我们切换到root账号,可以发现test的数据为helloworld
在这里插入图片描述
这说明如果普通文件对用户没有可读权限,那么用户则无法对普通文件的数据进行读取

sudo命令

sudo允许以其他身份执行命令,比如我们本身就拥有root用户,只是使用普通用户来模拟某种环境下的linux操作,那么当我们使用普通用户时,又需要做一些root才有权限的事时,我们就需要用到sudo命令。

通常情况下,一个普通用户是无法使用sudo命令的。
在这里插入图片描述
如果想要一个普通用户可以使用sudo命令来执行root才有权限的操作,就要去/etc/sudoers配置文件进行修改,而这个文件只有root才有权限进行读写。

所以我们先切换回root用户。然后用vim打开/etc/sudoers。(如果不会使用vim就先别操作了,整错了还挺麻烦的)

跳转到第100行。
在这里插入图片描述
将第一百行的一整行复制粘贴到下一行当中。
在这里插入图片描述
然后将下一行的root,改成可以获得sudo权限的普通用户的名字即可。
在这里插入图片描述
此时,lysb666这个用户就能使用sudo指令了

比如lysb666不具备查看/root文件的权限,如果在命令之前输入sudo,就能获得root的权限,查看/root文件的信息。
在这里插入图片描述


http://www.mrgr.cn/news/30974.html

相关文章:

  • JavaWeb学习
  • 开源模型应用落地-qwen模型小试-Qwen2.5-7B-Instruct-快速体验(十三)
  • 多模态文档理解:一文读懂mPLUG-DocOwl系列模型
  • 在基准测试和规划测试中选Flat还是Ramp-up?
  • 图像亮度均衡算法
  • 第二证券:“产业+科技” 中国并购重组市场持续升温
  • 非标工业模型评审不再难,3D一览通助力高效协同
  • 設置Android設備全局代理
  • Django SQL注入-漏洞分析
  • GitLab将会持续支持FluxCD
  • 准备招银社招记录
  • 【Elasticsearch系列十五】强大特性
  • 做完自动化测试,但别让不会汇报毁了你!
  • java--面向对象编程(中级部分)
  • Eclipse如何调整编辑器中的字体大小?
  • 让医院更智慧,让决策更容易
  • 代码随想录训练营第20天|235. 二叉搜索树的最近公共祖先、 701.二叉搜索树中的插入操作、450.删除二叉搜索树中的节点
  • 欧拉筛素数板子
  • 硬盘数据恢复必备:4 款强大硬盘数据恢复软件推荐!
  • [ComfyUI]Flux:更强融图!阿里最新重绘CN模型,生态加速器