Linux下的权限

1. 操作系统的外壳 

在理解Linux权限之前,我们先来吃点小菜。

1.大部分指令都是文件,如果把指令对应的文件删除了,那么这条指令就使用不了了。

2.用户执行某种功能的时候,不是直接让操作系统执行对应的指令的,而是先交给外壳程序

常见的外壳程序有,图形化界面和命令行。

 

关于第一条,我们上一节有提过Linux基本指令(下)-CSDN博客

 我们的电脑里有着各种各样的可执行程序,比如我们要打开qq,在桌面点击qq的快捷方式,实际上就是点击qq的可执行程序,不过这个过程交给操作系统来做了。一旦删除qq的可执行程序,那么就打不开qq了。

第二条,大家看,下图有什么差别?

 

图中右边是图形化界面,左边是命令行,这两者都是外壳程序。

外壳程序是什么?

外壳程序实际就是介于用户和操作系统之间的软件,简单来说,就是命令行解释器  。

你通过外壳程序向操作系统发出指令,操作系统通过外壳向你进行反馈。 

同时外壳程序会对你发出的指令进行判断,不合法的指令会做处理。 

为什么要有外壳程序? 

 外壳程序承担着用户与操作系统进行交互的重要功能。普通用户不了解操作系统,那么要和他进行交互,只能通过外壳程序。类似Xshell的命令行外壳,使用者自然是程序员等,而图形化界面才是普及大众的外壳,不仅美观,而且操作简便。

      用户不善于与操作系统之间进行交互。

      外壳shell的存在,可以对请求进行合法性检测,变相的保护操作系统。

2. Linux的权限 

2.1 什么是权限?

通俗来讲,权限就是能与不能的概念。你能访问某类资源,也就是你对这类的访问具有权限。

2.2 权限的本质 

当你是学生或者教职工的时候,你就能进入学校的大门;

当你是店铺店主的时候,你就能查阅店铺的营销情况。

我们作为用户,可以在leetcode里写代码而不能看电影。

因此权限=人物(角色)+事物属性。 

2.3 Linux里的用户

Linux下有两种用户:超级用户(root)、普通用户。
超级用户:可以再linux系统下做任何事情,不受限制
普通用户:在linux下做有限的事情。
超级用户的命令提示符是“#”,普通用户的命令提示符是“$”

 

类似于公司的老总与普通员工。那么如果老总创了小号,要怎么快速切换老总号与普通号呢?

这里有一个命令:

su [用户名] 

 

在普通用户下,直接su默认进入root,su -也是进入root 。区别在于su -会直接进入用户的家目录

 

那么我们不想进入root账号,却要行使root的权利该怎么做呢?

在指令前加sudo(提权)但当我们键入密码后,却发现我们收到了警告:用户不在sudoers文件中,并且本次事件将被报告。

在 Linux 中,普通用户默认没有 sudo 权限。这是为了防止普通用户执行一些可能对系统造成损害的命令。 如果普通用户需要使用 sudo 权限,可以通过以下方式进行设置: 1. 将普通用户添加到 sudo 组。 2. 修改 sudoers 文件,允许普通用户使用 sudo 命令。

3. Linux权限管理 

3.1 Linux中的文件访问者 

linux中文件的访问者共分为三类:

文件和文件目录的所有者:u---User
文件和文件目录的所有者所在的组的用户:g---Group
其它用户:o---Others

3.2 文件类型与访问权限 

 

windows区分文件类别的方式是什么?后缀!

那么Linux也是吗?

不,Linux是通过上图属性列的第一位来表示文件类型的。 (如gcc等工具可能会区分)

1. 文件类型 

d:文件夹
-:普通文件
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件

2. 基本权限 

属性列三三一组,分别代表拥有者,所属组,other

< > 读(r):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
< > 写(w):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
< > 执行(x):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
< > “—”表示不具有该项权限

3. 文件权限值的表示 

字符表示 

 

八进制数值表示 

 

 我们画个图简单举个例子

4. 文件访问权限的相关设置方式 

(1) 修改访问者权限 
chomd 
功能:设置文件的访问权限
格式:chmod [参数] 权限 文件名
常用选项:
R -> 递归修改目录文件的权限
说明:只有文件的拥有者和root才可以改变文件的权限
chmod
① 用户表示符+/-=权限字符
+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限
用户符号:
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户

eg:修改file文件权限为:拥有者可读,所属组可读可执行,other无权限

 

将三个访问者的权限全部打开。 

 

eg:我们编写了一个c语言代码,编译后修改拥有者的执行权限。

 

 但切记,这些权限的修改对root用户是没有作用的。

8进制数值表示方法

 拥有者,所属组,other都是三三为一组。

我们把是由否有权限:是用1代替,否用0代替。

那么rw,我们就可以对应的写成110,那么转成八进制就是6,所以6就等于rw的效果。

(2)chown

功能:修改文件的拥有者
格式: chown [参数] 用户名 文件名 

(3)chgrp

功能:修改文件或目录的所属组
格式: chgrp [参数] 用户组名 文件名

eg:

 

4. 目录的权限 

 在Linux一切皆文件的理念下,目录自然也是文件。

那么目录当然也有权限。

可执行权限: 如果目录没有可执行权限, 则无法cd到目录中

可读权限: 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容.
可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件

只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写
权限。

比如user01有user10用户家目录的写权限,那么user01就可以对user10家目录下的内容进行操作。而目录的内容则包括其下的文件。

5. 默认权限

新建文件夹默认权限=0666
新建目录默认权限=0777
但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。

我们可以看到新建目录的默认权限是0775,新建文件的默认权限是0664。

这是为什么呢?

 因为创建文件或目录的时候还要受到umask的影响。

umask
功能:查看或修改文件掩码

假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask

我们看看Linux系统文件掩码默认值

eg: 创建文件默认权限是0666,那么0666还要  按位与 上取反的umask的值

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

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

相关文章

IIC协议总结

1.基本理解 iic通信协议:双线制串行通信协议,由时钟线SCL和数据线SDA构成. 通信方式:主从模式,主设备发起通信,从设备响应通信 2.通信的基本步骤 a.主设备发送一个开始信号&#xff0c;表示开始通信&#xff0c;即启动I2C 条件&#xff1a;SCL1&#xff0c;SDA出现下降沿 …

Python开源项目月排行 2024年2月

Python 趋势月报&#xff0c;按月浏览往期 GitHub,Gitee 等最热门的Python开源项目&#xff0c;入选的项目主要参考GitHub Trending,部分参考了Gitee和其他。排名不分先后&#xff0c;都是当前月份内相对热门的项目。 入选公式&#xff1d;70%GitHub Trending20%Gitee10%其他 …

jvm面试题-背诵版

按照思维导图抽查和记忆&#xff0c;答案见&#xff1a;四、面试-多线程/并发_scheduledfuture释放-CSDN博客

Jmeter系列(4) 线程属性详解

线程属性 线程组是配置压测策略的一个重要环节线程组决定了测试执行的请求数量 线程数 在这里线程数相当于一个虚拟用户每个线程数大约占内存1M特别注意⚠️ 单台机器最大线程数不要超过1000&#xff0c;不然可能会造成内存溢出 Ramp-Up时间 所有线程在多长时间内全部启动…

【网络工程设计】用GNS3和VMware搭建网络环境

&#x1f4dd;本文介绍 本文主要是使用GNS3和VMware来搭建网络环境 &#x1f44b;作者简介&#xff1a;一个正在积极探索的本科生 &#x1f4f1;联系方式&#xff1a;943641266(QQ) &#x1f6aa;Github地址&#xff1a;https://github.com/sankexilianhua &#x1f511;Gitee地…

计算机网络-第2章 物理层

本章内容&#xff1a;物理层和数据通信的概念、传输媒体特点&#xff08;不属于物理层&#xff09;、信道复用、数字传输系统、宽带接入 2.1-2.2 物理层和数据通信的概念 物理层解决的问题&#xff1a;如何在传输媒体上传输数据比特流&#xff0c;屏蔽掉传输媒体和通信手段的差…

文献阅读笔记《Spatial-temporal Forecasting for Regions without Observations》13页

目录 目录 目录 发行刊物 ABSTRACT 1 INTRODUCTION 2 RELATED WORK&#xff08;相关工作 2.1 Spatial-temporal Forecasting&#xff08;时空预测 2.2 Spatial-temporal Forecasting withIncomplete Data&#xff08;不完全数据的时空预测 2.3 Graph Contrastive Lear…

蓝桥杯集训·每日一题2024 (前缀和)

笔记&#xff1a; 例题&#xff1a; #include<bits/stdc.h> using namespace std; const int N 5000010; char str[N]; int s[N]; int main(){int t;cin>>t;for(int a1;a<t;a){int n;cin>>n;scanf("%s",str1);for(int i1;i<n;i){s[i]s[i-1]…

【MySQL】:约束全解析

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; MySQL从入门到进阶 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f4d1;前言一. 约束概述二. 约束演示三. 外键约束3.1 介绍3.2 语法3.3 删除/更新行为 &…

Mybatis - generator(自动生成)

1、生成数据库数据 2、配置pom文件 这个plugin文件里有配置项和依赖以及版本号 修改configurationFile路径为项目里存在的generatorConfig.xml文件&#xff0c;因为后续的配置都在这个文件中进行。 <plugin><groupId>org.mybatis.generator</groupId><…

Netty的InboundHandler 和OutboundHandler

一、InboundHandler 和OutboundHandler的区别 在Netty中&#xff0c;"inbound"表示来自外部来源&#xff08;如网络连接&#xff09;的数据&#xff0c;而"outbound"则表示从应用程序发送到外部目标&#xff08;如网络连接或其他服务&#xff09;的数据。…

Git——Upload your open store

0.default config ssh-keygen -t rsa #之后一路回车,当前目录.ssh/下产生公私钥 cat ~/.ssh/id_rsa.pub #复制公钥到账号 git config --global user.email account_email git config --global user.name account_name1. 上传一个公开仓库 查看当前分支&#xff1a; git branc…

MATLAB基于隐马尔可夫模型-高斯混合模型-期望最大化的MR图像分割

隐马尔可夫模型是一种统计模型&#xff0c;它描述了马尔可夫过程&#xff0c;隐马尔可夫过程中包含隐变量&#xff0c;语音识别和词性自动标注等一些领域常常使用隐马尔可夫模型方法来处理。马尔可夫过程是一类随机过程&#xff0c;马尔可夫链是它的原始模型&#xff0c;马尔可…

GPT对话知识库——FreeRTOS中寄存器BASEPRI的作用

提问模型&#xff1a;GPT-4-TURBO-PREVIEW 提问时间&#xff1a;2024.03.02 1&#xff0c;问&#xff1a; 举例详细说明寄存器BASEPRI在freertos中作用 1&#xff0c;答&#xff1a; 在使用FreeRTOS这样的实时操作系统时&#xff0c;确保系统的实时性和响应能力至关重要。其中…

【C++那些事儿】深入理解C++类与对象:从概念到实践(中)| 默认构造函数 | 拷贝构造函数 | 析构函数 | 运算符重载 | const成员函数

&#x1f4f7; 江池俊&#xff1a; 个人主页 &#x1f525;个人专栏&#xff1a; ✅数据结构冒险记 ✅C那些事儿 &#x1f305; 有航道的人&#xff0c;再渺小也不会迷途。 文章目录 1. 类的6个默认成员函数2. 构造函数2.1 概念2.2 特性 3. 析构函数3.1 概念3.2 特性 4. 拷贝…

国际视频编解码标准提案下载地址

H.266 相关提案下载地址&#xff1a;http://phenix.it-sudparis.eu/jvet/ 更新的地址&#xff1a;https://jvet-experts.org/ H.265 提案下载地址&#xff1a;http://phenix.int-evry.fr/jct/ 标准文档下载地址&#xff1a;http://www.itu.int/rec/T-REC-H.265 H.264 提案下载…

QT多语言切换功能

一.目的 在做项目时&#xff0c;有时希望我们的程序可以在不同的国家使用&#xff0c;这样最好的方式是一套程序能适应于多国语言。 Qt提供了这样的功能&#xff0c;使得一套程序可以呈现出不同的语言界面。本文将介绍QT如何实现多语言&#xff0c;以中文和英文为例。 QT开发…

过于老旧的pytorch_ssim包 请从github下载源码

有些冷门算法真的不要随便pip&#xff0c;有可能下载到史前版本…最好还是找源代码 汗 今天要用到SSIM损失函数&#xff0c;从网上简单看了一下原理就想测试一下&#xff0c;偷了一下懒就直接在命令行输入pip install pytorch_ssim了&#xff0c;结果报了一堆错误&#xff08;汗…

Qt将Unicode转换成UTF8中文

解析字符串&#xff0c;并将里面的Unicode转换成中文 QString unicodeToUtf8(QString unicode) {QString result;for (int i 0; i < unicode.length(); i){QString flag unicode.mid(i,2); if (flag "\\u"){QString s1 unicode.mid(i 2, 4);result.append(s…

如何自定义一个spring-boot-starter

在我的理解中&#xff0c;spring-boot-starter就是一个依赖工具包&#xff0c;但是它和普通的依赖又有所区别&#xff0c;那么首先spring-boot-starter-一定是一个spring-boot项目&#xff0c;然后它和一般的依赖有什么区别呢&#xff0c;我们可以在它的resources目录下定义一个…