Linux之权限

news2024/12/28 18:35:33

目录

一、shell运行原理

二、权限

1、对人操作

2、对角色和文件操作

修改权限(改属性):

①ugo+-

②二进制数的表示

修改权限(改人):

三、权限的相关问题

1、目录的权限

2、umask

3、粘滞位


一、shell运行原理

shell的运行原理外壳程序!

首先要清楚,我们人并不是直接访问操作系统的,原因如下:

1、人是不善于直接使用操作系统的

2、如果让人直接访问操作系统会有两个问题:

        ①操作成本很高

        ②人也会犯一些错误,从而带来不安全的因素

所以我们日常使用的图形化界面(Windows)或是指令操作(Linux)都是操作系统所提供的外壳程序


那么外壳程序也有它存在的意义:

1、外壳程序是用户和操作系统交互的中间软件层

2、可以在一定程度上起到保护操作系统的作用

所以人是和shell外壳程序打交道,然后外壳程序再与操作系统打交道;处理结束后,操作系统将结果反映给外壳程序,外壳程序再将结果传递给人


总结一下就是外壳程序将使用者的命令翻译给操作系统处理,同时再将操作系统的处理结果翻译给使用者


二、权限

1、对人操作

Linux下有两种用户,root和普通用户

root:只有一个,具有Linux下最高权限(一般不受权限约束)

普通用户:可以有多个,要受权限的约束

所以Linux下是可以存在多个用户的,Linux是一个对用户的操作系统


所以在Linux中切换root和普通用户,也就是在切换当前的权限

切换的命令:su [用户名]

从root用户切换到普通用户user,要使用su user

从普通用户切换到root用户,要使用su root,root可以省略,也可以su -


关于输入密码的问题,root用户切换普通用户不需要密码

普通用户切换到root用户需要root密码

普通用户1切换到普通用户2需要用户2的密码


普通用户切换到root用户后,如果想退回到刚刚的普通用户,可以Ctrl+d也可以输入命令logout


2、对角色和文件操作

权限是针对人的,事物的基本属性决定权限相关的概念

文件权限也就是一件事情是否允许被你做

因此权限的核心就是人+事物属性r/w/x->读/写/执行

下面看Linux中的文件的详细信息

部分含义已经备注在图上了,今天主要学习最前面的这10个字母或字符

这10个字符可以分成两部分理解,第一个和后九个


ls -l后显示的第一列的第一个字符,表明该文件的文件类型Linux中不以文件后缀来区分文件类型,但是不代表不可以使用,虽然在系统层面没有意义,但是可以给自己看),具体文件类型如下:

d:目录

-:普通文件

p:管道文件

b:块设备(磁盘设备)

c:字符设备(键盘或显示器)

l:链接文件  ...... 

其中前两个是最常用的


Linux将用户身份划分为三类:拥有者,所属组,other(这三个可以理解为一种身份)

拥有者:文件属于谁

所属组:文件属于哪个组

other:不属于上面两种任何一个,就是other 

红框表示的就是拥有者,蓝框表示的就是所属组,至于other即不是这两个的都是other

第一列的十个字符的后九个,三三为一组,分别是拥有者,所属组,other

这三个位置,分别是r/w/x(读/写/执行),位置是固定的,有rwx权限就显示rwx,没有的话就显示-

比如我们的Pro这个目录的权限就可以表示为:

拥有者具有读、写和执行权限;所属组具有读和执行权限,没有写权限;other具有读和执行权限,没有写权限


修改权限(改属性):

①ugo+-

现在有一个普通文件,拥有者权限是rw-,所属组权限是r--,other权限是r--

这时我想修改权限,语法是:chmod [u/g/o/a] [+/-] [r/w/x] [文件名] (其中u/g/o/a分别表示user拥有者/group所属组/other/all所有身份)

将拥有者权限改为rwx,所属组改为rwx,other改为r-x,即:

将拥有者权限改为rw-,所属组权限改为rw,other改为r,即:

将所有身份都加上x权限,即:


普通用户缺失某些权限时,对应的功能就不能正常进行了,例如:普通用户没有r权限,那么就不能正常使用cat test.c这种命令了,没有w权限,就不能进行echo "hello" > test.c这种命令,等等

如果输入不符合权限的指令,就会出现这样的提示:

但是root用户不受权限的约束,即使root是other,也可以有rwx权限


②二进制数的表示

因为拥有者、所属组和other的rwx权限位置是固定的,所以只会有两种情况,要么有,要么没有,这时有可以表示为1,没有可以表示为0

当rwx都有时,表示成二进制数就是111,这时111表示的十进制数是7

如果只有rw,表示成二进制就是110,这时110表示的十进制数是6

所以我们也可以使用这种二进制数的方式来改变权限,即:

全部都有rwx属性

拥有者有rwx权限,二进制是111,对应的十进制为7;所属组和other都只有rw权限,二进制是110,对应的十进制是6,即:


修改权限(改人):

chown/chgrp,更改拥有者或所属组需要提升权限

比如说我目前是普通用户,有一个普通文件test.c,test.c目前的拥有者和所属组都是zhangsan,我想改变拥有者/所属组为lisi

语法是:sudo [chown/chgrp] lisi test.c

如果想一次性将拥有者和所属组都改为lisi,输入sudo chown lisi:lisi tejike即可

加上sudo后,表示执行后续的命令,要以root的权限级别来执行,这时输入的密码就是lisi的密码

当然了,如果用户想执行sudo,提升权限,需要该用户在信任列表里面,才能够执行sudo,而添加用户到信任列表里是需要root身份的,所以不会出现普通用户随随便便就可以修改拥有者所属组的行为

而如果我是root用户,则直接[chown/chgrp] lisi test.c 就可以

三、权限的相关问题

1、目录的权限

首先,一个普通文件的拥有者和所属组如果是同一个人,那么我将拥有者的权限全部去掉,虽然所属组也是这个人,并且所属组的权限都有,但是这个人实际上是没有任何权限的,因为权限只被认证一次,被认证为拥有者就不管是不是所属组了

注意:

进入一个目录需要x权限,如:cd ...

查看目录下面的文件列表需要r权限,如:ls -al

要在目录下创建文件或目录需要w权限,如:touch test.c

2、umask

umask叫做权限掩码,凡在umask中出现的权限,都不应该在最终权限中出现

我们目前只研究umask的后三位,即0 2 2

并且目录的起始权限是7 7 7开始的,普通文件的起始权限是6 6 6开始的

目录的起始权限7 7 7说明拥有者、所属组、other的rwx权限都有,即对应位置为1,所以二进制1 1 1转换为十进制就是7

umask为0 2 2,而0 2 2的第一个数是0,由于凡在umask中出现的权限,都不应该在最终权限中出现,而第一个数为0,说明umask不会影响拥有者的rwx权限,所以拥有者的最终权限仍然是rwx

而后面的两位都是2,而2变为二进制是0 1 0,所属组和other所对应的7,变为二进制是1 1 1,由于凡在umask中出现的权限,都不应该在最终权限中出现,所以umask中1所在的位置,也就是w的权限,在umask中出现了,所以所属组和other的最终权限都不应该有,所以所属组和other的最终权限都变为了r-x

所以最终目录test的权限显示为rwxr-xr-x


其实也就是   最终权限=起始权限&(~umask)

即0 2 2变为二进制是0 0 0 0 1 0 0 1 0,而7 7 7变为二进制是 1 1 1 1 1 1 1 1 1

先取反~umask,变为1 1 1 1 0 1 1 0 1,再与1 1 1 1 1 1 1 1 1按位与

变为了1 1 1 1 0 1 1 0 1,也就是rwxr-xr-x


所以有了这个计算方法,我们如果想设置权限,也可改变umask值,例如umask变为0777,设置完后,拥有者所属组other都没有权限了

3、粘滞位

有一种情况是:大家所有用户都在一个共同的目录下,对该目录都有读写执行的权限,同时需要满足两个要求:

①、当多个用户共享一个目录时,需要在该目录下,进行读写,创建、删除文件

②、同时要保证自己只能删除自己的,而不能删除别人的(因为原本other权限是有w的,但是这可以互删,不满足要求)

在同一个目录下,大家各自有各自的文件,如果保证自己能创建自己的文件或删除自己的文件,那么必须要保证该目录other要有w权限,但是这种情况又会导致互相看不见对方的文件,但是却可以互相删除对方的文件要解决这个问题,就需要用到粘滞位

粘滞位语法就是 chmod +t test

这时候可以发现,原本other的x权限变为了t,这个t权限可以理解为x的特殊情况

这时就满足了上面的两个条件

注意:粘滞位只能给目录设置,一般是谁设置谁取消(root)

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

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

相关文章

一百七十一、Flume——Flume1.9.0单机版安装(亲测有效)

一、目的 以防万一,为了避免kettle从Kafka同步数据到HDFS有问题,因此也测试了用Flume去采集Kafka中的数据然后同步到HDFS,算是一套备用方案 二、安装包版本 (一)Hadoop版本 hadoop-3.1.3.tar.gz (二&a…

JS中执行上下文和执行栈是什么?

一:执行上下文 执行上下文是一种对js执行代码的环境的一种抽象,只要js在执行中,那它一定是运行在执行上下文中 执行上下文的类型 全局执行上下文:全局执行上下文是在程序启动时创建的,它包含全局范围定义的变量和函数…

UltraISO做u盘镜像启动盘

1、工具—刻录光盘映像 2、刻录机选择盘 选择centos镜像 刻录

索尼 toio™应用创意开发征文|一步两步三步模拟浇花系统

目录 1.toio™介绍 2、创意分析 2.1 创意设计 2.2 创意落地 3、创意实现 3.1 环境安装 3.2 核心玩法 总结 1.toio™介绍 索尼的toio™是一款启发创意的机器人产品,旨在通过与真实世界的互动,为各年龄段的用户提供娱乐体验。这款产品具有高度的灵…

【已解决】pyqt5的打包exe软件图标菜单栏/任务栏/小图标/窗口图标未显示

1.起因: 希望:pyqt5 项目,pyinstaller main.spec 打包,我想要 main.exe 就像一个普通的应用软件一样显示我自定义的图标。 结果: main.exe 左侧图标还是老土的样子,并没有成为我的图标。独立运行是&#…

API接口与电商平台之间的联系,采集京东平台数据按关键字搜索商品接口示例

关键字搜索商品的重要性: 1.引入精准流量 关键词第一个也是最重要的作用就是为我们宝贝引进精准的流量,这一作用无论是在自然搜索中还是直通车中都是一样的。 第一步关乎的是我们宝贝的展现,而第二步用户是否会点进我们的宝贝,…

爬虫爬取mp3文件例子

相信训练模型时数据集的获取也是一个很头疼的事情,搞cv领域的可以扛着摄像头架起三脚架拍摄获取(以前干过),但是如果是nlp领域的呢,特别是chatgpt等大模型出来后对这类文本等数据的需求更大,如果没有现成的…

攻防世界-WEB-Web_php_include

打开靶机 通过代码审计可以知道,存在文件包含漏洞,并且对伪协议php://进行了过滤。 发现根目录下存在phpinfo 观察phpinfo发现如下: 这两个都为on 所以我们就可以使用data://伪协议 payload如下: - ?pagedata://text/plain,…

测试可用的淘宝API(商品详情数据、买家信息、卖家信息、店铺信息、订单信息)

什么是API? API全称Application Programming Interface,即应用程序编程接口,是一些预先定义的函数,或指软件系统不同组成部分衔接的约定,用于传输数据和指令,使应用程序之间可以集成和共享数据资源。 简单来说&#…

SQL语言的分类:DDL(数据库、表的增、删、改)、DML(数据的增、删、改)

数据库管理系统(数据库软件)功能非常多,不仅仅是存储数据,还要包含:数据的管理、表的管理、库的管理、账户管理、权限管理等。 操作数据库的SQL语言,基于功能,划分为4类: 1、数据定…

64位Office API声明语句第110讲

【分享成果,随喜正能量】以大慈为所住,给一切众生快乐,观众生心与菩萨心平等平等。以大悲为住处,不轻末学,善根成熟了他会发心,将来也能成佛。舍有为而不执著无为,住无为而不舍有为,…

正方实践系统打卡

Use HTTP (已完成) 📜 使用指南 🛖 项目结构 log 日志文件 use 使用情况 (待) data.py 数据 log.py 日志 main.py 主函数 只需要修改data.py文件内容即可: header ——> 头文件 User-AgentCookieAccept user ——> 用户信息 ZFT…

Kafka3.0.0版本——消费者(消费者组详细消费流程图解及消费者重要参数)

目录 一、消费者组详细消费流程图解二、消费者的重要参数 一、消费者组详细消费流程图解 创建一个消费者网络连接客户端,主要用于与kafka集群进行交互,如下图所示: 调用sendFetches发送消费请求,如下图所示: (1)、Fet…

RabbitMQ: Routing结构

生产者 package com.qf.mq2302.routing;import com.qf.mq2302.utils.MQUtils; import com.rabbitmq.client.Channel; import com.rabbitmq.client.Connection;public class EmitLog {public static final String EXCHANGE_NAME"emitlogs";public static void main(…

基于Jmeter和Jenkins搭建性能测试框架

搭建这个性能测试框架是希望能够让每个人(开发人员、测试人员)都能快速的进行性能测试,而不需要关注性能测试环境搭建过程。因为,往往配置一个性能环境可能需要很长的时间。 1、性能测试流程 该性能测试框架工作的流程主要有&am…

【代码随想录】dfs和bfs (所有可能的路径、岛屿数量)

所有可能的路径&#xff1a; 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 class Solution { public:vector<int> path;vector<vector<int>> result;void dfs(vector<vector<int>> graph, int x){//1 确认递归函数…

Java日志框架的扛把子 - SLF4J - SLF4J的原理和实践

1. Java世界中的日志框架 Java世界中的日志框架 其中&#xff0c;slf4j和jcl属于门面日志框架&#xff0c;而其它的几个则是真正干活的ddidic底层日志框架。冷知识&#xff1a;其中标红的日志框架&#xff0c;它们的作者是同一人。不同的日志框架&#xff0c;API接口往往也不一…

解锁前端Vue3宝藏级资料 第一章 带你深入了解Vue3项目创建 2 (使用 Webpack 5 搭建 vue项目)

在之前的文章中&#xff0c;我们已经了解了如何使用Vue CLI来创建Vue项目的开发环境。现在&#xff0c;大家已经可以轻松地运用Vue CLI来构建自己的Vue项目了。然而&#xff0c;你可能仍然对背后的工作原理感到困惑。接下来&#xff0c;我将引导你们在不使用Vue CLI的情况下&am…

Python超入门(1)__迅速上手操作掌握Python

# 1.第一个代码&#xff1a;输出语句 # 1.第一个代码&#xff1a;输出语句 print("My dogs name is Huppy!") print(o----) print( ||| ) print("*" * 10) """ 输出结果&#xff1a; My dogs name is Huppy! o----||| ********** "&…

私有化部署即时通讯平台,完美替代飞书和钉钉的SaaS系统

在当今快速发展的数字化时代&#xff0c;企业对于安全、灵活、可定制的即时通讯平台需求不断增长。作为一家领先的品牌&#xff0c;WorkPlus专注于提供私有化部署的即时通讯平台&#xff0c;完美替代飞书和钉钉的SaaS系统。本文将重点介绍WorkPlus如何通过创新的解决方案&#…