从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.xdnf.cn/news/147478.html

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

相关文章

【功能详解】IoTDB 与 ThingsBoard 成功集成!

可视化工具集成1 IoTDB 实现了 ThingsBoard 的无缝集成对接,IoTDB 构建的工业数据存储处理-可视化呈现链路又多了一种可用、易用的工具选择。 我们的代码已贡献到 ThingsBoard 社区(待发版),用户手册也已发布(可点击下…

Spring Boot框架:蜗牛兼职网实现

第3章 系统分析 3.1 需求分析 蜗牛兼职网主要是为了提高工作人员的工作效率和更方便快捷的满足用户和企业,更好存储所有数据信息及快速方便的检索功能,对系统的各个模块是通过许多今天的发达系统做出合理的分析来确定考虑用户和企业的可操作性&#xff0…

SpringCloud入门(六)Nacos注册中心(下)

一、Nacos环境隔离 Nacos提供了namespace来实现环境隔离功能。 nacos中可以有多个namespace。namespace下可以有group、service等。不同namespace之间相互隔离,例如不同namespace的服务互相不可见。 使用Nacos Namespace 环境隔离 步骤: 1.在Nacos控制…

【AI画图】stable-diffusion-webui学习之一《安装部署》

简介 Stable Diffusion是2022年发布的深度学习文本到图像生成模型,它是一种潜在扩散模型,它由创业公司Stability AI与多个学术研究者和非营利组织合作开发。目前的SD的源代码和模型都已经开源,在Github上由AUTOMATIC1111维护了一个完整的项目…

Python | Leetcode Python题解之第430题扁平化多级双向链表

题目: 题解: class Solution:def flatten(self, head: "Node") -> "Node":def dfs(node: "Node") -> "Node":cur node# 记录链表的最后一个节点last Nonewhile cur:nxt cur.next# 如果有子节点&#…

OpenCV特征检测(9)检测图像中直线的函数HoughLines()的使用

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在二值图像中使用标准 Hough 变换查找直线。 该函数实现了用于直线检测的标准 Hough 变换或标准多尺度 Hough 变换算法。详见 http://homepages…

WebLogic系列漏洞

后台弱⼝令GetShell 漏洞描述 通过弱⼝令进⼊后台界⾯ , 上传部署war包 , getshell 影响范围 全版本(前提后台存在弱⼝令) 环境搭建 cd vulhub/weblogic/weak_password docker-compose up -d 漏洞复现 默认账号密码:weblogic/Oracle123 (单…

哔哩哔哩自动批量删除抽奖动态解析篇(二)

通过前文我们已经获得账户下转发的动态列表,这一节我们要做的就是根据前一节获得的动态列表数据判断抽奖动态是否已开奖。 一、获取抽奖动态开奖状态信息 首先我们按F12健进入网页源代码,然后点开一条抽奖动态的按钮链接,找到API接口。流程…

Leetcode 1041. 困于环中的机器人

1.题目基本信息 1.1.题目描述 在无限的平面上,机器人最初位于 (0, 0) 处,面朝北方。注意: 北方向 是y轴的正方向。 南方向 是y轴的负方向。 东方向 是x轴的正方向。 西方向 是x轴的负方向。 机器人可以接受下列三条指令之一: “G”&…

基于springboot在线学籍管理系统

基于springboot在线学籍管理系统 摘 要 对在线学籍管理的流程进行科学整理、归纳和功能的精简,通过软件工程的研究方法,结合当下流行的互联网技术,最终设计并实现了一个简单、易操作的在线学籍管理系统。内容包括系统的设计思路、系统模块和…

从零开始一个git操作实例,图文并茂

徒弟不懂git怎么用, 于是写了篇文章, 把本地git操作从头写了一遍, 自己去看吧! 0、基本概念 •Git是一个免费、开源的、分布式版本控制系统 •它使用一个特殊的叫做仓库的数据库来记录文件的变化 •仓库中的每个文件都有一个…

【网络】TCP协议的简单使用

目录 echo_service server 单进程单线程 多进程 多线程 线程池 client echo_service_code echo_service 还是跟之前UDP一样,我们先通过实际的代码来实现一些小功能,简单的来使用TCP协议进行简单的通信,话不多说,我们先实现…

Redis面试真题总结(四)

文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ 文章收录在网站:http://hardyfish.top/ AOF 持久化? AOF(Append Only File&#x…

Selenium4.0实现自动搜索功能

01.Selenium4.0实现搜索功能 1.安装Selenium及查看Selenium版本 pip install selenium pip show seleniumfrom selenium import webdriver from chromedriver_py import binary_path import time from selenium.webdriver.common.by import By from selenium.webdriver.commo…

智能农业系统——土壤养分运移转化

橙蜂智能公司致力于提供先进的人工智能和物联网解决方案,帮助企业优化运营并实现技术潜能。公司主要服务包括AI数字人、AI翻译、AI知识库、大模型服务等。其核心价值观为创新、客户至上、质量、合作和可持续发展。 橙蜂智农的智慧农业产品涵盖了多方面的功能&#x…

鸿蒙OpenHarmony【轻量系统内核扩展组件(C++支持)】子系统开发

C支持 基本概念 C作为目前使用最广泛的编程语言之一,支持类、封装、重载等特性,是在C语言基础上开发的一种面向对象的编程语言。 运行机制 C代码的识别主要由编译器支持,系统主要对全局对象进行构造函数调用,进行初始化操作。…

H264-NAL

目录 错误日志NAL简介参考资料 错误日志 拉流时存在如下日志,会因为拉流失败导致之后的任务也停止 missing picture in access unit with size 16384 Invalid NAL unit size Error splitting the input into NAL units. 之后只要设置抓取异常后,重新拉流&#xff…

zabbix email 告警

配置媒介、触发器动作(动作、操作) 为用户 定义媒体,比如电子邮件地址 动作 - 条件

手机在网状态查询接口如何用PHP进行调用?

一、什么是手机在网状态查询接口? 手机在网状态查询接口,即输入手机号码查询手机号在网状态,返回有正常使用、停机、在网但不可用、不在网(销号/未启用/异常)、预销户等多种状态。 二、手机在网状态查询适用哪些场景…

数据结构(7.3_4)——红黑树的定义和性质

红黑树和平衡排序二叉树的查插删时间 平衡二叉树的适用场景&#xff1a;适用以查为主、很少插入/删除vd场景 红黑树&#xff1a;适用于频繁插入、删除的场景&#xff0c;实用性更强 红黑树的考点 红黑树的定义&#xff1a; 红黑树的二叉排序树&#xff1a;左子树结点值<…