【Linux系统编程】shell命令以及运行原理 Linux权限

news2024/11/25 23:47:53

目录

一、shell命令以及运行原理

二、Linux权限的概念

2.1创建用户

2.2切换用户

2.3删除用户

三、Linux权限管理 

3.1文件访问者的分类(人)

3.2文件类型和问权限(事物属性)

3.2.1文件类型 

3.2.2基本权限代表的作用

3.3文件权限值的表示方法

3.4文件访问权限的相关设置方法 

3.4.1chmod

 3.4.2chown

3.4.3chgrp

3.4.4umask(权限掩码)

四、file 

五、目录权限详解 && 粘滞位

六、关于权限的总结 


一、shell命令以及运行原理

Linux严格意义上说的是一个操作系统,我们认为的在shell上敲的指令就是对操作系统在操作,但又不知道操作系统是啥,对于Linux操作系统而言,其由“内核(kernel)“ ,kernel的“外壳”程序,也就是所谓的shell,文件系统,应用程序组成。目前文件系统,应用程序不考虑,只考虑内核,外壳,通过一张图来展示:

 

操作系统内核又分为狭义和广义说法: 

狭义:就是指的Linux 内核
广义:Linux内核+Linux外壳和对应的配套程序

我们通常所说的操作系统内核指的是狭义说法

那么,我们敲的指令会通过shell来与kernel沟通。如何理解? 

从技术角度上,Shell的最简单定义:命令行解释器。

该命令行解释器工作(外壳程序):

1.将用户输入的指令,解释传递给内核

2.内核执行命令,得到结果,将结果通过外壳传送给用户

既然命令是通过内核执行的,那为什么不能直接使用kernel?

帮助理解:张三看上了村里的如花,但他是个害羞小伙子,不敢去表白,那村里有个媒婆,大家称之为王婆,张三向王婆诉说了情况,王婆了,就跑到如花家中,告诉张三喜欢她,如花一听,知道张三前史,觉得张三不靠谱,便拒绝了,王婆回去复命,张三不想死心,再劝王婆诉说,王婆再往,如花这次换了个理由,说她喜欢上了隔壁的李四,王婆知如花意,再回复命,这下张三也明白喜欢如花如此难度,彻底死心了,王婆也不如意,因为这次的媒她没牵成功,这会影响她的声誉呀,王婆心想一计,顾几个员工来牵媒,并成立了媒婆婚介所,这下员工搞砸了,也不会影响王婆的声誉,从此以后王婆深得人心。
通过这个故事,其中张三就代表着“用户”,如花代表“操作系统”,王婆代表“shell”。shell对应我们常使用的bash,bash是命令行解释器的统称,shell是一个具体的命令行解释器。

如图:

对此,我们重新认识shell:

是什么?

shell本质其实也是一个执行起来的程序(进程)

为什么要有shell?

操作系统本身易用程度难+安全问题,所以用户不能直接访问OS

shell具体怎么做的?

shell都是通过创建子进程的方式让子进程去执行有风险的指令

对于进程的概念是什么,我们留到进程的章节系统讲。

二、Linux权限的概念

Linux下有两种用户:超级用户(root)、普通用户。

超级用户:可以再linux系统下做任何事情,不受限制

普通用户:在linux下做有限的事情。

超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。

2.1创建用户

通过adduser + 用户名,创建好用户后,通过passwd+用户名,设置密码,这个密码输入是看不见的,且密码不要设的过于简单,其次,会要你进行第二次输入密码进行确认。

2.2切换用户

命令:su [用户名]

功能:切换用户。

例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的密码。

命令:su - [用户名]

与su一样切换用户,但是他们存在着区别。

如果root用户所处目录是普通用户的目录,那么su只是切换了root身份,但工作目录仍然是普通用户的工作目录,如果root用户所处目录是属于自己的目录,那么su切换成普通用户,工作目录仍然是root的目录。如果普通用户所处的目录是属于自己的目录,那么使用su切换成root用户后,root所处工作目录仍然是普通用户的工作目录,同理,如果是属于root的,那么切换后,还是属于root的工作目录。
而使用su -就不一样了,root用户切换成普通用户后,当前工作目录就是普通用户的目录,普通用户切换成root用户后,当前工作目录就是root用户的工作目录

su命令 

root切换到普通用户,又切换前,root所处目录是属于root的工作目录,那么切换后仍然是处于root的工作目录

 使用cd命令将所处root工作目录回到普通用户的家目录,然后再切回到root用户,那么此时依然是处于普通用户的工作目录

su -命令

当前是哪个用户,那么当前所处工作目录就是哪个用户的工作目录

 

2.3删除用户

命令:userdel [用户名]

功能:删除用户

 在普通用户下,要删除别的用户,是做不到的,因为它没有这个权限,为了可以让普通用户有这个权限,可以通过sudo命令提权,意思是在这条命令中,可以让普通用户拥有root用户的权限,此时就可以删除用户,在删除时,也会让你输入当前用户的密码进行确认

 引出了权限一个说词,那么权限具体是什么了,为什么要有权限?

权限是伴随着文件的,相应的权限代表着用户是否能够对其进行相应的操作,可以起到一个保护的作用。那么接下来我们进行学习权限到底是如何管理的。

三、Linux权限管理 

权限管理本质上是用户去进行管理,而对文件的访问有不同的用户存在,同时文件又有不同的文件类型,当对应的用户去访问文件时,还会受到文件权限的限制

3.1文件访问者的分类(人)

文件访问者分为了三类用户,所有者(u),所属组(g),其他用户(o) 

文件和文件目录的所有者:u---User(中国平民 法律问题)

文件和文件目录的所有者所在的组的用户:g---Group(不多说)

其它用户:o---Others (外国人)

3.2文件类型和问权限(事物属性)

先看一个文件的详细信息:

如上显示一个文件的详细信息,之前没有提,在这里就可以说明了,这一串详细信息可以用

下图来进行表示,一个文件的类型由第一位符号决定,接着便是权限,权限占了9个字符,在三类用户中,每个用户拥有3个字符,这3个字符决定了该用户对文件的访问权限。

3.2.1文件类型 

d:文件夹

-:普通文件

l:软链接(类似Windows的快捷方式)b:块设备文件(例如硬盘、光驱等)

p:管道文件

c:字符设备文件(例如屏幕等串口设备)s:套接口文件

我们知道在Windows中区分文件类型是通过后缀来辨别,但Linux区分文件类型,与我们创建文件时自己写的后缀无关,与第一列的字符有关。那后缀在Linux还有意义吗?有,后缀是为了方便给用户看的。

3.2.2基本权限代表的作用

i.读(r/4):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限

ii.写(w/2):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动修改目录内文件的权限

iii.执行(x/1):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限

iv.“—”表示不具有该项权限

在了解了文件的访问者分类以及权限的作用,那么问题来了,为什么文件的所有者指的是这个文件属于哪个用户管理的,或者由其他人管理,但是所属组是什么玩意?为什么要有它?

所属组:一组内可以有一名成员或多名成员。所属组是为了防止非我团队的成员对我的文件进行操作,同时为了方便我团队的成员对我的文件操作,达到权限划分的作用。

3.3文件权限值的表示方法

a)字符表示方法

b)8进制数值表示方法

3.4文件访问权限的相关设置方法 

3.4.1chmod

功能:设置文件的访问权限

格式:chmod [参数] 权限 文件名

常用选项:

R -> 递归修改目录文件的权限

说明:只有文件的拥有者和root才可以改变文件的权限

chmod命令权限值的格式

① 用户表示符+/-=权限字符

+:向权限范围增加权限代号所表示的权限

-:向权限范围取消权限代号所表示的权限

=:向权限范围赋予权限代号所表示的权限

用户符号:  

u:拥有者

g:拥有者同组用

o:其它用户

a:所有用户

+/-更改文件权限: 

还可以通过逗号分割执行多条:

=更改文件权限:

让所有用户只拥有可执行权限

如果不是文件拥有者,就不可以更改文件访问权限,除非用sudo进行提权。如下:

由于root用户所在目录对其他人是没有可读权限,所有普通用户根本读不了,那么只能通过sudo来进行提权了,同理也没有可写权限,那么就不能修改/root目录下文件的权限

②三位8进制数字

由于权限可以通过八进制来进行表示,所以修改权限也可以通过修改八进制数 

 

 3.4.2chown

功能:修改文件的拥有者

格式:chown [参数] 用户名 文件名 

修改文件拥有者前: 

由于普通用户不能修改普通用户的文件属性,所以由root来修改文件拥有者:

 

修改文件拥有者后,所有者为lzy用户,那么zyf用户就相当于其他用户了,不能对test.txt文件属性进行写,执行权限,只有读权限。

3.4.3chgrp

功能:修改文件或目录的所属组

格式:chgrp [参数] 用户组名 文件名

常用选项:-R 递归修改文件或目录的所属组 

修改所属组: 

 

通过chown还可以同时修改所有者和所属组:

3.4.4umask(权限掩码)

功能:

查看或修改文件掩码

新建文件夹默认权限=0666

新建目录默认权限=0777

但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到

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

格式:umask 权限值

说明:上述按位与的结果,相当于将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002。

即超级用户新建文件最终权限为:0666 & ~0022 == 0666-0022 = 0644(rw-r--r--),新建目录最终权限为:0777 & ~0022 == 0777-0022 = 0755

普通用户新建文件最终权限为:0666 & ~0002 == 0666-0022 = 0644(rw-r--r--),新建目录最终权限为:0777 & ~0022 == 0777-0022 = 0755

超级用户: 

默认权限掩码:

新建文件:

新建目录:

普通用户:

默认权限掩码:

新建文件:

新建目录:

更改权限掩码:

那么相应的最终新建的文件权限也发生了改变

四、file 

功能说明:辨识文件类型。

语法:file [选项] 文件或目录... 

常用选项:

-c 详细显示指令执行过程,便于排错或分析程序执行的情形。

-z 尝试去解读压缩文件的内容。

五、目录权限详解 && 粘滞位

虽然前面已经提到权限的作用,但对于目录权限而言还有进一步的扩展。

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

可写权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件.

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

 当然这些权限仅限普通用户之间相互作用,对root用户是不起效的。

首先通过root创建的用户其默认权限只有拥有者权限,所以用户与用户之间是不能够相互访问的:

那么要可以进行访问首先得开通其他人执行权限,例如,开通lzy: 

又d1目录是可以被其他人访问的,所以zyf用户可以进行访问:

于是, 问题来了~~

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

例如:将/home目录权限放到最大,让所有用户都有写读执行权限。

 

所以为了防止这种现象,Linux引入了粘滞位

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

一、超级管理员删除

二、该目录的所有者删除

三、该文件的所有者删除

六、关于权限的总结 

目录的可执行权限是表示你可否在目录下执行命令。

如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目录, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)

而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但没有目录的读权限

所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。

一个文件一定是属于一个目录,一个文件属性能不能被查看,是由目录的权限决定的。

一个文件一定是属于一个目录的,一个文件能不能被删除,这个文件本身不能决定,由所属的目录与对应的账户是否有w权限决定。

为了不然其他用户可以随意删除文件,也证明了为什么目录的最终权限是775

一般情况下,新建用户默认是不让其他用户进入

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

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

相关文章

泛微E-Cology WorkflowServiceXml SQL注入漏洞复现(QVD-2024-26136)

0x01 产品简介 泛微e-cology是一款由泛微网络科技开发的协同管理平台,支持人力资源、财务、行政等多功能管理和移动办公。 0x02 漏洞概述 2024年7月,泛微官方发布了新补丁,修复了一处SQL注入漏洞。经分析,攻击者无需认证即可利用该漏洞,建议受影响的客户尽快修复漏洞。…

mysql的主从复制(含位点复制和GTID复制)的代码实例

提示: master主库ip地址:192.168.137.2 从库s1的ip地址:192.168.137.11 从库s2的ip地址:192.168.137.22 主从复制的原理: MySQL主从复制是一个异步的复制过程,主要是通过二进制日志(binary …

百度人脸识别Windows C++离线sdk C#接入

百度人脸识别Windows C离线sdk C#接入 目录 说明 设计背景 • 场景特点: • 客户特点: • 核心需求: SDK 包结构 效果 代码 说明 自己根据SDK封装了动态库,然后C#调用。 功能接口 设计背景 • 场景特点: -…

PTA - 接收n个关键字参数

接收n个以关键字形式传入的参数,按格式输出。 函数接口定义: def print_info (**keyargs) 提示:keyargs为可变参数,其可接受若干个关键字形式的实参值,并将接收到的值组装为一个字典。 裁判测试程序样例&#xff1…

Linux相关命令和安装软件

1.Linux命令 1.1 搜索文件或目录的命令 find 目录 -name "名称" 注意:名称可以使用通配符 *1.2 查看所有进程命令 ps -ef1.3 查看指定内容在文件中 grep "内容" 文件名1.4 管道符 | 1.5 查看端口号 netstat -tunlp | grep 端口号option说明…

框架设计MVVM

重点&#xff1a; 1.viewmodel 包含model 2.view包含viewmodel,通过驱动viewmodel去控制model的数据和业务逻辑 // Test.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 //#include <iostream> #include <vector>using namespace std;#p…

Java - 程序员面试笔记记录 实现 - Part5

7.1 Struts 优点&#xff1a; 1. MVC模式实现了表现与逻辑的分离&#xff0c;扩展性高。 2. 提供页面导航功能&#xff0c;通过配置文件建立整个系统各部分之间的联系。 3. 集成了一些常用处理功能。 缺点&#xff1a; 1. 仅面向 Web 应用程序开发 2. Action 非线程安全…

项目方案:视频图像结构化分析技术在车辆和人体检测中的应用方案(视频公共安全领域的解决方案)

目录 一、视频结构化分析技术介绍 1、概述 2、定义 3、核心环节 4、应用领域 二、视频中车辆和人的结构化 1、需求 2、信息内容 3、功能说明 &#xff08;1&#xff09;信息智能识别功能 &#xff08;2&#xff09;智能检索功能 &#xff08;3&#xff09;数据统计…

鸿蒙语言基础类库:【@system.configuration (应用配置)】

应用配置 说明&#xff1a; 从API Version 7 开始&#xff0c;该接口不再维护&#xff0c;推荐使用新接口[ohos.i18n]和[ohos.intl]。本模块首批接口从API version 3开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。 导入模块 import configurati…

LeetCode分发糖果(贪心思路分析)

题目描述 贪心思路 思路及解法 我们可以将「相邻的孩子中&#xff0c;评分高的孩子必须获得更多的糖果」这句话拆分为两个规则&#xff0c;分别处理。 左规则&#xff1a;当 ratings[i−1]<ratings[i] 时&#xff0c;i 号学生的糖果数量将比 i−1 号孩子的糖果数量多。 …

新书速览|Vue.js 3.x+Express全栈开发:从0到1打造商城项目

《Vue.js 3.xExpress全栈开发&#xff1a;从0到1打造商城项目》 1 本书内容 《Vue.js 3.xExpress全栈开发 : 从0到1打造商城项目》是一本详尽的全栈开发教程&#xff0c;旨在通过Vue.js和Express框架引导读者从零开始构建一个完整的电商项目。内容覆盖电商项目的基本结构&…

(c++)virtual关键字的作用,多态的原理(详细)

1.viirtual修饰的两种函数 virtual 修饰的函数有两种&#xff0c;一个是虚函数&#xff0c;一个是纯虚函数。 2.虚函数与纯虚函数的异同之处 1.虚函数与纯虚函数的相同之处 虚函数和纯虚函数都重写的一种&#xff0c;什么是重写呢&#xff1f;重写是指在子类中写和父类中返…

2024-07-15 Unity插件 Odin Inspector3 —— Button Attributes

文章目录 1 说明2 Button 特性2.1 Button2.2 ButtonGroup2.3 EnumPaging2.4 EnumToggleButtons2.5 InlineButton2.6 ResponsiveButtonGroup 1 说明 ​ 本文介绍 Odin Inspector 插件中有关 Button 特性的使用方法。 2 Button 特性 2.1 Button 依据方法&#xff0c;在 Inspec…

使用DHCP动态管理主机地址

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除 一、动态主机地址管理协议 动态主机配置协议&#xff08;DHCP&#xff09;是一种基于UDP协议且仅限于在局域网内部使用的网络协议&#xff0c;主要用…

书生大模型第一关-Linux基础知识

1.闯关任务&#xff1a;关任务 完成SSH连接与端口映射并运行hello_world.py 首先SSH 命令连接进行转发 ssh -p 33704 rootssh.intern-ai.org.cn -CNg -L {本地机器_PORT}:127.0.0.1:{开发机_PORT} -o StrictHostKeyCheckingno在远程服务器上&#xff08;开发机&#xff09;运…

操作系统杂项(二)

目录 一、简述GDB常见的调试命令&#xff0c;什么是条件断点&#xff0c;多进程下如何调试 1、GDB调试 2、命令格式 3、条件断点 4、多进程下如何调试 二、简述什么是“大端小端”及如何判断 1、小端模式 2、大端模式 3、如何判断 三、简述进程调度算法有哪些 1、分…

iSCSI 网络存储服务部署

一、介绍 iSCSI &#xff08;Internet Small Computer System Interface&#xff09;&#xff0c;互联网小型计算机系统接口&#xff1b;iSCSI 是SCSI接口 与以太网技术相结合的新型存储技术&#xff0c;属于ip san的一种&#xff0c;可以用来在网络中传输 SCSI 接口的命令和数…

用户进入网站之后看一眼就跳走,你知道原因吗?

用户进入网站后立即离开的原因可能有很多&#xff0c;以下是一些可能的原因和相应的规避办法&#xff1a; 页面加载速度慢&#xff1a; 如果网站加载速度过慢&#xff0c;用户可能会感到不耐烦并离开。可以通过优化网站的代码和资源&#xff0c;使用浏览器缓存、CDN加速等技术…

Docker缩小镜像体积与搭建LNMP架构

镜像加速地址 {"registry-mirrors": ["https://docker.m.daocloud.io","https://docker.1panel.live"] } daemon.json 配置文件里面 bip 配置项中可以配置docker 的网段 {"graph": "/data/docker", #数据目录&#xff0…

QTreeWidget

一、基本要点 1、QTreeWidgetItem 是 Qt 开发框架中的一个重要组件&#xff0c;它主要用于表示树形视图中的节点。在 QTreeWidget 这样的控件中&#xff0c;每个节点都是 QTreeWidgetItem 的实例&#xff0c;可以包含文本、图标以及其他数据。 2、connect 是Qt中的一个重要函…