Linux系统编程学习 NO.5 ——shell命令行的概念以及原理、权限的概念

news/2025/2/13 2:10:01/

1.shell命令行的概念以及原理

首先,用户下达指令需求。此时Linux操作系统的内核kernel,并不会直接接收用户下达的指令,因为操作系统不擅长跟用户打交道。那么指令要如何下达呢?这就命令行解释器来对用户的指令进行处理。

1.1.shell命令行的介绍

shell对于Linux主要是对指令进行解析,解析指令给Linux内核。反馈结果在通过内核运行出结果,通过shell解析给用户。这里我就简单举一个样例。比如在我的宿舍里有一个哥们儿,他非常的内向害羞,他很喜欢我们班的班花。由于他不敢开口向班花表白,他就托我去班花的宿舍门口去替他表明他对班花的爱慕之情。于是乎我就跑了过去,跟班花说明了他对她的爱意。很可惜,班花并不喜欢他。我回到了宿舍将情况跟他进行了说明。他直接就玩起了原神,堕入了虚拟的世界中。第二天,我觉得有些许过意不去,就又去找了班花,想替他撮合撮合。可惜,这是我看到了班花和她的男朋友走在一起,于是乎我识趣的溜了。这里班花就是Linux操作系统的内核,我就是shell程序,而我的舍友就是用户。

在这里插入图片描述

2.Linux权限的概念

2.1.Linux用户的分类

Linux下用户分位两种:root用户(超级用户)和普通用户。两者之间的区别是root用户基本不受权限的约束,而普通用户受权限的约数。用户之间是可以切换的。每个用户都有与之对应的密码,平时我们在学习的时候,建议root用户和普通用户的密码不一样,这样可以避免不必要的错误。

2.1.1.su指令

适用于切换当前的用户,可以带 - 选项。下面我就通过样例进行演示。

su usrname
su -

在这里插入图片描述

2.2.什么叫权限?

在生活中,我们不免会使用视频播放软件追剧。当我们想要追一些当下热门的剧时,点击进去提示你,你不是vip不能看当前电视剧。这就是生活中一个简单的权限现象。当你充值了vip你就具备了看剧的权限,这是因为vip这个身份所带给你的权限。权限的本质其实就是一件事能否被你做。Linux权限是指在Linux系统中,对文件和目录进行访问控制的权限。

2.3.文件的属性

权限也和属性是息息相关的。举个例子,你有一本笔记本,你可以对它进行写、读等操作,这是因为它本身就自带这些属性。那你可以吃它吗?显然是不行的,它不具备被食用的属性。Linux系统中文件的第一个属性表示文件的类型。

  • 表示普通文件,文档文件、源代码文件和库文件等都属于普通文件
    d 表示目录文件
    b 表示块文件,如硬盘文件
    c 表示字符设备文件,如键盘文件、显示器文件等
    p 表示管道文件,用于通信

在这里插入图片描述

2.4.后缀名的意义

在Linux系统中,文件的后缀名并没有直接的意义。后缀名取决于用户的需求。下面我举一个后缀名有意义的样例
在这里插入图片描述

2.5.权限身份的介绍

Linux中文件的权限身份分为三种分别是:拥有者、所属组、其他人。为什么有了拥有者和其他人还需要所属组这个权限身份呢?这里我举一个例子,假设,现在你和你的舍友一起去了一家公司实习,你在A组,他在B组,你们公司只有一台Linux机器。一天你写了一段很棒的代码,由于你们是不同的小组,你不希望它看到你的代码。此时你就将其他人的读属性设成-。他就没法看到你的代码了。但是,你的领导想看看你最近写了啥代码,这是你就陷入难关,如果只有其他人和拥有者这两个权限身份的话,你无疑需要开放其他人权限身份的读权限,那么你的舍友也就会看到你写的代码了。这时,所属组作用就出来了,你可以将你的领导拉入你的所属组中,并配置相应的所属组权限。这样其他人访问不了你的代码,而你的所属组成员可以访问你的文件。

2.6.权限身份对应的文件权限

权限(八进制)r (读)w(写)x(可执行)
000---
001--x
010-w-
011-wx
100r--
101r-x
110rw-
111rwx

权限身份对应的文件权限通常三个代表一个位置,分别对应r/-,w/-,x/-
即读、写和可执行权限,而-表示没有该权限。所以权限是一个二元制的,身份权限也是可以以8进制来表示。

在这里插入图片描述

2.7.权限的修改以及现象

简单介绍权限修改指令为chmod。

chmod 权限身份+rwx 表示读写可执行权限都打开
chmod a-rwx 表示所有人所有权限都关闭
chmod 777 表示所有人所有权限都打开
chmod 776 表示拥有者和所属组有读写可执行权限,其他人只有读写权限

在这里插入图片描述
下面简单举例来看看权限约束的现象
在这里插入图片描述
在这里插入图片描述
chown指令用于修改文件的拥有者,chgrp指令用于修改文件的所属组。这是两条需要具备root权限的指令,普通用户若想使用这两条指令需要进行sudo提权。

sudo chown xxx:xxx 修改当前目录下的拥有者和所属组
sudo chown xxx 修改当前目录下的拥有者
sudo chgrp xxx 修改当前目录的所属组

在这里插入图片描述

此时,xyx用户就不具备对文件的写权限,仅可读。root权限对于文件的拥有者和所属组具有修改权限。

2.7.1.关于所属组和拥有者权限不同的现象

假设,我既是文件的拥有者也是所属组身份,但是,拥有者只有读权限,而所属组具有读写权限。此时,我读取文件没有问题,那写入文件是否有问题呢?下面我们直接上实操。
在这里插入图片描述

2.8.权限掩码的概念

这里我们创建两个文件和两个目录,来看看系统默认的身份权限。
在这里插入图片描述
其实身份权限 = 默认身份权限 & (umask按位取反)。而普通文件默认权限为666 ,目录文件的默认权限为777。输入umask指令,可以查看当前系统下的权限掩码。
在这里插入图片描述
下面我简单的对上面普通文件和目录文件的身份权限进行计算演示
在这里插入图片描述

umask xxx即可修改当前的权限掩码。

在这里插入图片描述

2.7.2.关于目录文件的权限现象

前面简单介绍了普通文件的各个权限的所对应的行为,下面介绍目录文件的各个权限所对应的行为。首先是读权限,读权限所限制的是查看当前目录下的文件内容。
在这里插入图片描述
而目录文件的写权限是用来限制在当前目录下的创建、删除以及修改等操作。
在这里插入图片描述
相对应的可执行权限其实就是决定了我们能否打开这个目录。

在这里插入图片描述
在这里插入图片描述
从上面的样例中,可以看到一个有趣的现象,虽然test01目录我们不具有可执行权限。但是,这并不妨碍我们查看它的文件内容。这就好比,你们在班上有一个不喜欢的同学叫张三,一天,你和几个同学一起去踢球,张三也想加入你们。但是,你们却说不允许他进入绿茵场,张三于是乎退到了不远处的绿荫下看你们踢球。这时候你们不乐意了,过去问候张三,张三这时候说你们有什么证据说我在看你们呢?我看的是操场上跑步的女生。

2.9.粘滞位

我们在Linux下同一个终端不同用户要共享资源,不能任何一个人的家目录下进行的。这是因为任何人的家目录只有拥有者具有读、写、可执行权限。这时我们就需要建立一个公共目录来进行资源的共享。
在这里插入图片描述
请看下面的样例演示
在这里插入图片描述
在我创建的share目录下,我创建了一个共享目录里,并写了一个文本文件,一天我的舍友想看看我在这个目录里写了啥,于是乎他cat了我写的文本文件。但是,我不行让他看见,所以我把ohter的读权限给关闭了。可是他居然把我的文件给删了,这就让我就得很爽了,因为删除文件的权限取决于目录权限,如果我把目录权限下的写权限关闭,那我还怎么创建文件呢?这时候就需要粘滞位来保证我们在共享目录下的文件不会被随意删除。

chmod o+t 表示对于other身份添加粘滞位

在这里插入图片描述

在这里插入图片描述
补充:粘滞位一般是给目录配置的权限,一般是用于共享的目录。一般配置了粘滞位,只有文件的拥有者和root能够删除。t是一种特殊的x权限。


http://www.ppmy.cn/news/98229.html

相关文章

SSH爆破攻击及应急响应/事件处置

提示:本文是我做的笔记,有问题可以留言 目录 前言一、什么是SSH?二、开始前的准备1.扫描2.准备爆破3.准备ssh登录登陆后的准备nc反弹 应急响应/事件处置1.查看网络连接情况2.查看守护进程3.删除,结束异常后门4.修改密码 总结 前言…

UNIX环境高级编程 第2章 UNIX标准化及实现

UNIX标准化 ANSI C标准化 ANSI C标准化的意图是提供C程序的可移植性, 使其能适合于大量不同的操作系统, 而不只是UNIX. 此标准不仅定义了C程序设计语言的语法和语义, 也定义了其标准库. IEEE POSIX POSIX是IEEE制定的标准族.POSIX的意思是计算机环境的可移植操作系统接口(P…

基于自适应反馈调节因子的阿基米德优化算法(IAOA)-附代码

基于自适应反馈调节因子的阿基米德优化算法(IAOA) 文章目录 基于自适应反馈调节因子的阿基米德优化算法(IAOA)1.阿基米德优化算法2. 改进阿基米德优化算法2.1 佳点集种群初始化2.2 自适应反馈调节因子2.3 莱维旋转变换策略 3.实验结果4.参考文献5.Matlab代码6.Python代码 摘要&…

每日一博 - 浅析事务隔离级别 MVCC机制

文章目录 DB四个隔离级别MVCC如何工作的 ?小结 DB四个隔离级别 数据库隔离允许事务执行,就像没有其他并发运行的事务一样。 下面的图说明了四个隔离级别。 Serializalble: 这是最高的隔离级别。并发交易保证按顺序执行。Repeatable Read: 事务开始时读…

Linux(基础IO详解)

在基础IO这篇博客中,我们将了解到文件系统的构成,以及缓冲区究竟是个什么东东,我们都知道缓冲区,有时也谈论缓冲区,但不一定真的去深入了解过缓冲区。为什么内存和磁盘交互速度如此之慢?为什么都说Linux中一…

【场景方案】带你浅浅了解下前端所需要的一些常用设计模式,提供例子说明

文章目录 前言工厂模式单例模式代理模式观察者模式发布订阅模式装饰器模式尾巴 前言 目前没精力深入了解,所以先记录一些比较常用的设计模式,且不会很深入。 日后有空了,待我深入了解后再更新文章。 部分知识来源双越老师的课程 工厂模式 …

pytorch分布式训练DDP(傻瓜版)

文章目录 为什么要使用分布式训练基本概念常用函数使用DataParrel使用DDP构建主函数训练函数训练器启动 参考文章 为什么要使用分布式训练 单卡显存不够了!!!(核心原因)比较高级,比较快。 基本概念 worl…

C++:STL--List

文章目录 一.STL-list的数据结构链表结点模板 二.List的框架与迭代器的实现1.STL中的容器迭代器2.List的迭代器List正向遍历迭代器类模板(对ListNode< T >* 指针的封装)反向遍历迭代器的类模板(对正向迭代器的封装) 3.List的实现框架 三. List的成员接口的实现1.在List类…