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://xiahunao.cn/news/3270239.html

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

相关文章

MySQL内如何改变编码格式

查找数据库的编码格式&#xff1a; show variables like character%;具体内容时这些 在创建表时设定编码格式&#xff1a; create database <要创建的数据库的名字> charset utf8; 修改数据库默认编码&#xff1a; set character_set_databaseutf8mb4; character_…

大模型算法备案流程最详细说明【流程+附件】

文章目录 一、语料安全评估 二、黑盒测试 三、模型安全措施评估 四、性能评估 五、性能评估 六、安全性评估 七、可解释性评估 八、法律和合规性评估 九、应急管理措施 十、材料准备 十一、【线下流程】大模型备案线下详细步骤说明 十二、【线上流程】算法备案填报…

【二分查找 数论】2513. 最小化两个数组中的最大值

本文涉及知识 二分查找算法合集 质数、最大公约数、菲蜀定理 LeetCode2513. 最小化两个数组中的最大值 给你两个数组 arr1 和 arr2 &#xff0c;它们一开始都是空的。你需要往它们中添加正整数&#xff0c;使它们满足以下条件&#xff1a; arr1 包含 uniqueCnt1 个 互不相同…

栈和队列<数据结构 C版>

目录 栈&#xff08;Stack&#xff09; 栈的结构体 初始化 销毁 入栈 判空 出栈 取栈顶元素 获取栈个数 测试&#xff1a; 队列&#xff08;Queue&#xff09; 队列的结构体 单个结点 队列 初始化 销毁 入队列&#xff0c;队尾 判空 出队列&#xff0c;队头 …

贪心算法.

哈夫曼树 哈夫曼树&#xff08;Huffman Tree&#xff09;&#xff0c;又称为霍夫曼树或最优二叉树&#xff0c;是一种带权路径长度最短的二叉树&#xff0c;常用于数据压缩。 定义&#xff1a;给定N个权值作为N个叶子结点&#xff0c;构造一棵二叉树&#xff0c;若该树…

大话成像公众号文章阅读学习(一)

系列文章目录 文章目录 系列文章目录前言一、扫射拍摄二、索尼Alpha 9 III2.1. 视频果冻效应2.2 闪光灯同步速度2.3 其他功能 三 A9III 局限性总结 前言 大话成像是一个专注成像的公众号&#xff0c;文章都很好。 今天看的这篇是 特朗普遭枪击后“大片”出自它 文章地址 htt…

Python | Leetcode Python题解之第284题窥视迭代器

题目&#xff1a; 题解&#xff1a; class PeekingIterator:def __init__(self, iterator):self.iterator iteratorself._next iterator.next()self._hasNext iterator.hasNext()def peek(self):return self._nextdef next(self):ret self._nextself._hasNext self.itera…

SGLang 大模型推理框架 qwen2部署使用案例;openai接口调用、requests调用

参考: https://github.com/sgl-project/sglang 纯python写,号称比vllm、tensorRT还快 暂时支持模型 安装 可以pip、源码、docker安装,这里用的pip 注意flashinfer安装最新版,不然会可能出错误ImportError: cannot import name ‘top_k_top_p_sampling_from_probs’ fr…

万物互联,触手可及“2024南京智慧城市,物联网,大数据展会”

在金秋送爽的11月&#xff0c;南京这座历史悠久而又充满活力的城市&#xff0c;即将迎来一场科技盛宴——2024南京智慧城市、物联网、大数据展会。这不仅是一场技术的集会&#xff0c;更是未来生活蓝图的预览&#xff0c;它汇聚了全球顶尖的科技企业、创新者及行业精英&#xf…

1.2 单链表定义及操作实现(链式结构)

1.单链表定义 链式存储&#xff1a;用一组任意的存储单元存储线性表中的数据元素。用这种方法存储的线性 表简称线性链表。 为了正确表示结点间的逻辑关系&#xff0c;在存储每个结点值的同时&#xff0c;还必须存储指示其直接 后继结点的地址&#xff08;或位置&#xff09;…

04-Charles中的Map Remote和Map Local介绍

Charles提供了Map Remote和Map Local两个功能。 Map Remote是将指定的网络请求重定向到另一个网址。Map Local是将指定的网络请求重定向到本地文件。 一、Map Remote 假设代码中调用了接口A&#xff0c;但是接口A的响应结果不能满足需求&#xff1b;此时&#xff0c;有另一个…

第15周 Zookeeper分布式锁与变种多级缓存

Zookeeper **************************************************************

heic怎么转换成jpg?heic转jpg,分享6款图片格式转换器免费汇总!

众所周知&#xff0c;在与非苹果手机设备用户&#xff08;如安卓手机或Windows台式机用户&#xff09;分享照片之前&#xff0c;通常需要将iphone的heic格式转换为jpg。由于这些操作系统的旧版本不原生支持heic图片格式&#xff0c;因此需要额外的第三方工具来查看这些图像。因…

0727,学什么学,周六就应该休息!!!!!

周六就应该休息&#xff0c;一天就忙了两小时也不是我的错喵 目录 UDP的小总结 01&#xff1a;使用select实现一个基于UDP的一对一即时聊天程序。 1.0 复读机服务器和树洞客户端 2.0 byby不了一点的敬业服务器&#xff01;&#xff01;&#xff01; 今天到此为止&#x…

24暑假算法刷题 | Day22 | LeetCode 77. 组合,216. 组合总和 III,17. 电话号码的字母组合

目录 77. 组合题目描述题解 216. 组合总和 III题目描述题解 17. 电话号码的字母组合题目描述题解 77. 组合 点此跳转题目链接 题目描述 给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1&#xff1a; 输…

面向切面编程(AOP)

通知类型 Grep Console插件可右键选中日志高亮显示 正常情况 异常情况(around after和目标方法在一起&#xff0c;目标方法异常后&#xff0c;around after不执行) 通知顺序 execution 需要匹配两个没有任意交集的方法时&#xff0c;可以使用两个execution annotation 自定义…

【计算机网络】期末实验答辩

注意事项&#xff1a; 1&#xff09;每位同学要在下面做过的实验列表中选取三个实验进行答辩准备&#xff0c;并将自己的姓名&#xff0c;学号以及三个实验序号填入共享文档"1&#xff08;2&#xff09;班答辩名单"中。 2&#xff09;在答辩当日每位同学由老师在表…

支持向量机 及其分类案例详解(附Python 代码)

支持向量机分类器预测收入等级 我们将构建一个支持向量机&#xff08;SVM&#xff09;分类器&#xff0c;以预测一个人基于14个属性的收入等级。我们的目标是判断收入是否高于或低于每年$50,000。因此&#xff0c;这是一个二元分类问题。我们将使用在此处可用的人口普查收入数…

Python高维度大型气象矩阵存储策略分享

零、前情提要 最近需要分析全球范围多变量的数值预报数据&#xff0c;将grb格式的数据下载下来经过一通处理后需要将预处理数据先保存一遍&#xff0c;方便后续操作&#xff0c;处理完发现此时的数据维度很多&#xff0c;数据量巨大&#xff0c;使用不同的保存策略的解析难度和…

nowcoder bc49判断两个数的大小关系

描述 KiKi想知道从键盘输入的两个数的大小关系&#xff0c;请编程实现。 输入描述&#xff1a; 题目有多组输入数据&#xff0c;每一行输入两个整数&#xff08;范围-231~231-1&#xff09;&#xff0c;用空格分隔。 输出描述&#xff1a; 针对每行输入&#xff0c;输出两…