Linux第五节课(权限02)

1、Linux下的用户分类

  • root:超级用户
  • 普通用户:通过root新建的用户,adduser

root不受权限约束;普通用户受权限约束;

Linux系统中,所有用户都需要有密码,无论是root还是其他,即便是多个普通用户,也需要设置密码;(建议root账号的密码与其他账号不一样!)

1.1用户之间的切换:

普通用户切换root账号(两种方法):

su

直接将当前用户切换到root账号,此时依旧处在当前目录;

su - 

相当于重新登陆,此时出于/root目录下;

从root账号转变为普通账号:

su + 用户名

可以不需要密码直接切换到普通账号!

从一个普通用户切换到另一个普通用户需要输入切换到的用户的密码!

如果我们想要暂时的对一条命令进行提权(以root的方式运行)

sudo + command

再输入当前普通用户对应的密码即可以root的身份运行!

但是!目前我们用adduser新建的用户,没有办法执行sudo,系统不信任!除非未来将普通用户,添加到系统的信任白名单里面!(不在/etc/sudoers里面) 

2、Linux文件的类型

文本的类型:Linux系统中文件名后缀没有直接的意义。(当然,不代表不用!)

  •  - :普通文件( 文本文件、源代码、库文件、可执行文件)
  • d : 目录文件
  • b:块设备文件(磁盘文件)
ls /dev/vdal
  • c: 字符设备文件(键盘,显示器文件等)
    ls /dev/vdal -al
  • p:管道文件(用来进行通信的)

Linux(操作系统)不区分文件的后缀,但是不代表在Linux上运行的软件不区分文件的后缀!

(例如gcc可以编译test.c但是不能编译test.txt --- gcc会区分文件的后缀名!)

2.1、对于普通文件

通过ls - l或者ll显示的权限的意义分别为:

  • r :可读
  • w:可写
  • x:可执行
  •  - :表示对应的位置上没有权限

角色、权限身份(拥有者、所属组、其他人)和具体的用户(root / 普通用户)之间的对应关系:

具体的用户相当于张三(李四)、而角色/权限身份相当于校长(主任)等。

为什么需要有所属组?

假如部门需要开发一个软件,a和b是竞争关系,如果a写出来一个非常好的程序,不想让b看到,那么此时权限有两种(拥有者和其他人)a作为程序拥有者可以看到,其他人看不到。但是入错C(领导)想看a写的程序,那么此时需要出现所属组,让一部分人能看到程序!

ll查看的文件信息依次为:

  • (文件的类型)
  • (文件的权限)
  • (数字空)
  • (文件的拥有者)
  • (文件的所属组)
  • (文件的大小 - 单位为字节)
  • (文件的最近修改日期)
  • (文件名)

不属于拥有者和所属组的就是other!

权限三三为一组,九个每分三个分别对应于拥有者所属组和other。

r / -
w / -
x / -
  • 每个位置是什么含义都是确定的!
  • 每个位置只有是或否,具有指定的权限!

如果没有权限但是执行了对应的操作会出现什么错误?

Permisson denied

谁可以修改文件的权限呢?

  • 文件的拥有者
  • root

3、修改权限的指令chmod

示例:

chmod u-rwx,g+rwx,o+rw test.txt

其中:

  • u为拥有者
  • g为所属组
  • o为其他人

对拥有者减去rwx(读写执行)的权限,对所属组加上rwx的权限,对其他用户加上读和写的权限,其中要用逗号分隔开!(多个用户用逗号分隔开!)

权限操作

对所有人进行权限操作!

chomd a-x test.txt

(其中a表示all,代表对所有用户都进行操作)

可以用比特位表示该角色是否有权限!三个比特位表示rwx,那么这个数字表示为8进制!

(例如110表示rw-对应于6,即6表示rw-)

实例:

chmod 000 test.txt

表示所有用户都没有权限!

如果相对所有人加上读权限(100)对应的进制位为4

chmod 444 test.txt

对所有人加上所有权限:

chmod 777 test.txt

3.1、 更改文件的拥有者(chown)

(把文件给别人需要争得别人的允许!)

chown zhangsan test.txt

将test.txt文件传递给张三!(但是需要提前争得张三的允许)

通过sudo/root账号可以强制更改文件的拥有者

3.2、更改文件的所属组(chgrp)

chgrp zhangsan test.txt

可以将所属组转给张三!(但是也需要争得张三的同意)

通过sudo/root账号可以强制更改文件的所属组

3.3、同时更改拥有者和所属组

chown shy:shy test.txt

此时可以一次性修改文件的拥有者和所属组(都改为shy)

  • 对于命令行提示符,普通用户为$;root账号为#

一个小问题:

对于zhangsan来说,如果一个文件(拥有人和所属组都为zhangsan)的权限为:

-r--rw----

那么张三是否能在这个文件中写入东西?

答案是不能!

权限在认证的时候,三三为一组,因为当前张三属于文件的拥有者,那么系统对于张三不在看其是否为所属组(优先查看!)

4、其他问题:

1.问题1:

对于默认创建的文件:

  • 普通文件的权限:664
  • 目录文件的权限:775

但是对于实际上:

  • 系统默认给普通文件的起始权限为666
  • 系统默认给目录文件的起始权限为777

umask   ---- 权限掩码

凡是umask中出现的权限,不会再最终的文件权限中出现!

可以得到系统的权限掩码为002

umask 0001

可以将权限掩码修改为001

对于创建的文件,最终的权限满足下列公式:

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

应用:

如果我们想要创建的文件对于所有用户都没有读和可执行

umask 0555

经运算可检验得创建的所有的文件都没有读和可执行权限!

2、问题2:目录权限

对于目录文件来说,它的读写执行都代表着什么呢?

进入一个目录需要什么权限?

当我们对一个目录对于所有用户去掉一个 -r 可读权限的时候,我们可以发现,我们依然可以进入这个目录,但是我们不能使用ls指令!即不能查看该目录下的文件!可以通过

touch test1.txt

创建新文件(对应于写权限!)

如果去掉 - w权限,我们可以发现此时不能创建新文件(即没有写权限!)

总结:对于目录文件

  • -r : 是否允许我们查看指定目录下的文件内容;
  • -w:是否允许我们在当前目录下进行创建,更改,删除(待定);
  • -x:是否允许用户进入对应的目录;

特别注意:

如果一个文件没有x权限(即不能进入这个文件,但是具有r权限,那么依旧可以查看该目录下的文件!)

为什么默认的普通文件没有可执行权限,而默认的目录文件有可执行权限?

因为大部分的普通文件不需要执行,默认加没有必要,需要执行的时候可以自己添加;

而对于目录文件我们是需要进入其中进行访问的!

3、问题3:粘滞位

通过

ls / home /ls

对应不同的用户账号下所创造的文件,用户目录的拥有者和所属组都是本人!(其他用户无法访问!)

普通用户自己家目录的权限是700,我在自己家里创建的文件,别人都看不到!

如果我们想要共享数据,多人共同实现一个项目,可以创建一个共享文件,(这个共享文件不在任何一个人的家目录下!)

这时候,我们可以在 \ 目录下创建一个共享目录,通过root账号设置权限,使得设指定用户具有操作权限。

但是在一个共享的目录下,一个文件不是a建立的,而且a没有rwx的权限,那么a可以删掉这个文件吗?(能删掉!但是不合理!)

4、结论

一个文件能否被删除,并不由文件本身决定,而是由这个文件所处的目录决定!

(由于共享的目录下,其他用户对于这个目录也具有rwx权限,因此即使目录下的文件不属于他,他还是能删掉!)

如果我们去掉共享目录的w权限,我们也同时无法创建文件!(与最初的共享目录宗旨矛盾)

如果我们想要在一个目录下,不同用户创建的文件不能被其他用户随意删除,而且其他用户也能根据目录的权限进行文件查看,写入等...我们需要加如粘滞位!

chmod o+t shared

修改后可以发现,shared目录下的x位置权限由x变为t

此后,其他用户不能删除共享的没有权限的文件。

5、总结

  • 粘滞位:给目录设置的(一般为共享目录),大家可以在目录进行各自文件的增删改查,只允许文件拥有者或root删除这个文件,其他人一概不允许!t是一种特殊的x权限!
  • 在Linux系统中,要删除一个文件,用户需要具有该文件所在目录的写权限。如果用户对该目录没有写权限,则无法删除文件。
     

根目录 / 的默认权限如下:

ls - ld /

我们可以发现,根目录为root创建的, 对于其他用户来说,没有权限在根目录下创建文件夹。因此建立共享文件只能通过root来创建。

在根目录 / 下默认存在一个tmp目录,这个目录自带粘滞位t,可以用来作为共享目录!

当一个目录被设置为”粘滞位“(用chmod + t),则该目录下的文件

  • 超级管理员进行删除
  • 该目录的所有者删除
  • 该文件的所有者删除

经常下超级管理员和该文件的所有者都是同一个。

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

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

相关文章

SpringBoot+ Sharding Sphere 轻松实现数据库字段加解密

一、介绍 在实际的软件系统开发过程中,由于业务的需求,在代码层面实现数据的脱敏还是远远不够的,往往还需要在数据库层面针对某些关键性的敏感信息,例如:身份证号、银行卡号、手机号、工资等信息进行加密存储&#xf…

优选算法之二分查找(上)

目录 一、二分查找 1.题目链接:704. 二分查找 2.题目描述: 3.算法流程: 4.算法代码: 二、在排序数组中查找元素的第一个和最后一个位置 1.题目链接:34. 在排序数组中查找元素的第一个和最后一个位置 2.题目描述…

matlab2018b安装

1.可先参考这个 2.激活 按上面教程安装后,打开matlab 可能会出现软件激活这个界面,需要按如下步骤进行操作。

从理论到实践:如何用 TDengine 打造完美数据模型​

在用 TDengine 进行数据建模之前,我们需要回答两个关键问题:建模的目标用户是谁?他们的具体需求是什么?在一个典型的时序数据管理方案中,数据采集和数据应用是两个主要环节。如下图所示: 对于数据采集工程师…

Bootstrap5 Navbar多级下拉框

实现目标&#xff1a; 1、访问 Bootstrap5-navbar 2、修改dropdown为多级 <!DOCTYPE HTML> <html lang"en-US"> <head><meta charset"UTF-8"><title></title><link rel"stylesheet" href"https…

Unity DOTS中的world

Unity DOTS中的world 注册销毁逻辑自定义创建逻辑创建world创建system group插入player loopReference DOTS中&#xff0c;world是一组entity的集合。entity的ID在其自身的世界中是唯一的。每个world都拥有一个EntityManager&#xff0c;可以用它来创建、销毁和修改world中的en…

[AWS]MSK调用,报错Access denied

背景&#xff1a;首先MSK就是配置一个AWS的托管 kafka&#xff0c;创建完成之后就交给开发进行使用&#xff0c;开发通常是从代码中&#xff0c;编写AWS的access_key 和secret_key进行调用。 但是开发在进行调用的时候&#xff0c;一直报错连接失败&#xff0c;其实问题很简单&…

【机器学习】机器学习之计算学习理论--评估机器学习能够学到什么程度

引言 计算学习理论&#xff08;Computational Learning Theory&#xff0c;CLT&#xff09;是机器学习的一个分支&#xff0c;它使用数学工具来分析和理解机器学习算法的效率和可能性 计算学习理论主要关注三个核心问题&#xff1a;学习模型的表示、学习算法的效率和学习的泛化…

Matlab画不同指标的对比图

目录 一、指标名字可修改 二、模型名字可修改 三、输入数据可修改 软件用的是Matlab R2024a。 clear,clc,close all figure1figure(1); % set(figure1,Position,[300,100,800,600],Color,[1 1 1]) axes1 axes(Parent,figure1);%% Initialize data points 一、指标名字可修…

Astro 4.12 发布,新增支持服务器岛屿

近日&#xff0c;Astro 发布了最新的 4.12 版本&#xff0c;此版本包含 Server Islands&#xff08;服务器岛屿&#xff09;&#xff0c;这是 Astro 将高性能静态 HTML 和动态服务器生成的组件集成在一起的新解决方案&#xff0c;此版本还包括对分页和语法突出显示的改进。 要…

如何检查我的网站是否支持HTTPS

HTTPS是一种用于安全通信的协议&#xff0c;是HTTP的安全版本。HTTPS的主要作用在于为互联网上的数据传输提供安全性和隐私保护。通常是需要在网站安装部署SSL证书来实现网络数据加密传输&#xff0c;安全加密功能。 那么如果要检查你的网站是否支持HTTPS&#xff0c;可以看下…

C#基于SkiaSharp实现印章管理(4)

前几篇文章实现了绘制不同外形印章的功能&#xff0c;印章内部一般包含圆形、线条等形状&#xff0c;有些印章内部还有五角星&#xff0c;然后就是各种样式的文字。本文实现在印章内部绘制圆形、线条、矩形、椭圆等四种形状。   定义FigureType枚举记录印章内部形状&#xff…

数据结构——堆(C语言版)

树 树的概念&#xff1a; 树&#xff08;Tree&#xff09;是一种抽象数据结构&#xff0c;它由节点&#xff08;node&#xff09;的集合组成&#xff0c;这些节点通过边相连&#xff0c;把 节点集合按照逻辑顺序抽象成图像&#xff0c;看起来就像一个倒挂着的树&#xff0c;也…

react入门到实战-day1

这react门课我是学习b站黑马的课程&#xff0c;不是打公告哈&#xff0c;我只是过一遍&#xff0c;让自己对学过的知识有印象&#xff0c;所以笔记是有很大部分直接复制总结过来的&#xff0c;方便后面的我进行复习。如有冒犯&#xff0c;联系必删 React介绍以及创建方式 React…

基于FPGA的以太网设计(2)----以太网的硬件架构(MAC+PHY)

1、概述 以太网的电路架构一般由MAC、PHY、变压器、RJ45和传输介质组成,示意图如下所示: 需要注意的是,上图是一个简化了的模型,它描述的是两台主机之间的直接连接,但在实际应用中基本都是多台主机构成的局域网,它们之间并不直接相连,而是通过交换机Switch来进行…

JAVA开发工具IDEA如何连接操作数据库

一、下载驱动 下载地址&#xff1a;【免费】mysql-connector-j-8.2.0.jar资源-CSDN文库 二、导入驱动 鼠标右击下载到IDEA中的jar包&#xff0c;选择Add as Library选项 如图就导入成功 三、加载驱动 Class.forName("com.mysql.cj.jdbc.Driver"); 四、驱动管理…

FPGA开发在verilog中关于阻塞和非阻塞赋值的区别

一、概念 阻塞赋值&#xff1a;阻塞赋值的赋值号用“”表示&#xff0c;对应的是串行执行。 对应的电路结构往往与触发沿没有关系&#xff0c;只与输入电平的变化有关系。阻塞赋值的操作可以认为是只有一个步骤的操作&#xff0c;即计算赋值号右边的语句并更新赋值号左边的语句…

软件缺陷(Bug)、禅道

目录 软件缺陷的判定标准 软件缺陷的核心内容 构成缺陷的基本要素 缺陷报告 缺陷管理 缺陷的跟踪流程 项目管理工具--禅道 软件在使用过程中存在的任何问题&#xff08;如&#xff1a;错误、异常等&#xff09;&#xff0c;都叫软件的缺陷&#xff0c;简称bug。 软件缺…

学习记录--Bert、Albert、RoBerta

目录 Bert 1&#xff1a;输入 2&#xff1a;Bert结构 3&#xff1a;模型预训练 Albert 1&#xff1a;SOP任务 2&#xff1a;embedding因式分解 3&#xff1a;参数共享 RoBerta 参考&#xff1a; BERT原理和结构详解_bert结构-CSDN博客 [LLM] 自然语言处理 --- ALBER…

鸿蒙华为登录(以及导航页面跳转)

//登录华为登录界面以及跳转 //切记一定要写路径&#xff0c;不写路径&#xff0c;容易报错&#xff0c;还有一定要记得导一下包&#xff08;Arouter&#xff09; //接下来是鸿蒙界面导航跳转 //进行跳转 TabContent组件不支持设置通用宽度属性&#xff0c;其宽度默认撑满Tab…