首页 系统教程 操作系统 shell 运行原理和 Linux 权限详解

shell 运行原理和 Linux 权限详解

Feb 09, 2024 pm 02:39 PM
linux linux教程 linux系统 linux命令 外壳脚本 overflow 嵌入式linux linux入门 linux学习

Linux,严谨来说,是一个操作系统的核心。也就是说,一般用户无法直接调用核心。为了与核心进行通信,我们需要通过核心的“外壳”程序,也就是所谓的 shell。Shell是一个命令行解释器,它接收用户输入的命令并将其转化为系统执行的操作代码。Shell根据命令的类型可以调用不同的系统函数来完成不同的操作。因此,我们可以通过Shell来执行各种各样的命令和操作,实现我们对系统的控制和管理。简而言之,Shell扮演了用户与底层内核进行通信的桥梁。

如何理解?为什么不能直接使用 kernel?

从技术角度,Shell 的最简单定义:命令行解释器(command Interpreter)主要包含:

将使用者的命令翻译给核心(kernel)处理。
同时,将核心的处理结果翻译给使用者。
登录后复制
shell 运行原理和 Linux 权限详解

注意:shell 是所有外壳程序的统称,bash 是一种具体的 shell。例如:centos 7 外壳程序 :bash

  • 对比 windows GUI,我们操作 windows 不是直接操作 windows 内核,而是通过图形接口,点击,从而完成我们的操作(比如进入 D 盘的操作,我们通常是双击 D 盘盘符. 或者运行起来一个应用程序)。
  • shell 对于 Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给 Linux 内核。反馈结果在通过内核运行出结果,通过 shell 解析给用户。
  • shell 运行原理
shell是做命令行解释的
对系统有危害性的命令会被阻止从而保护操作系统
其好处为子进程出现任何问题都不会影响父进程shell
登录后复制
  • 帮助理解:
  • 如果说你是一个闷骚且害羞的程序员,那 shell 就像媒婆
  • 操作系统内核就是你们村头漂亮的且有让你心动的 MM 小花。
  • 你看上了小花,但是有不好意思直接表白,那就让你你家人找媒婆帮你提亲
  • 所有的事情你都直接跟媒婆沟通,由媒婆转达你的意思给小花
  • 而我们找到媒婆姓王,所以我们叫它王婆,它对应我们常使用的 bash。
  1. Linux 权限

2.1 权限的概念

  • Linux 下有两种用户:超级用户(root)、普通用户。
  • 超级用户:可以再 linux 系统下做任何事情,不受限制
  • 普通用户:在 linux 下做有限的事情。
  • 超级用户的命令提示符是 “#”,普通用户的命令提示符是 “$”。
shell 运行原理和 Linux 权限详解
  • 用户切换的命令

命令:su [用户名]

功能:切换用户。

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

shell 运行原理和 Linux 权限详解
  • 切换到 root:用 su -,我们可以切换到 root 用户(此时输入 root 账号密码,密码是不会回显在屏幕上的)
  • 切换回普通用户:用 su – 用户名 切回普通用户,(此时不用输入密码,但是我们不建议这样切回,因为使用 su – 命令时,会创建更多的 bash 进程)
  • 推荐的切换回普通用户:输入 exit 或者敲击 Ctrl+d,回退到普通用户

2.2 权限管理

  • 什么是权限

权限本质上是决定某件事情,某人能否做。

  • 针对人:例如我是这间房子的主人所以我可以自由进出这个房子
  • 针对事物:我想去吃一台电脑、我想在面包上玩英雄联盟、看电影。面包能吃,但是电脑不能吃、你可以吃面包,但是不能吃电脑;这里面包括了两个属性。

文件受人的影响和文件受本身自身特点 (事物属性) 的影响 所以文件权限 = 人 + 事物属性

文件权限属性:r(读)、w(写)、x(执行权限)

人 (不是特定具体的人,而是一种角色):拥有者、所属组、other (其它)

  • 文件访问者的分类(人)
  • 文件和文件目录的所有者:u—User(中国平民 法律问题)
  • 文件和文件目录的所有者所在的组的用户:g—Group(不多说)
  • 其它用户:o—Others (外国人)
  • 文件类型和访问权限(事物属性)
shell 运行原理和 Linux 权限详解

使用命令 ls -l (ll) 显示的多列属性的第一列对应的字符来区分它的文件类型。

shell 运行原理和 Linux 权限详解

不需要列出 other,因为不是拥有者和所属组的就是 other 了

帮助理解 – 拥有者和所属组

我们举个简单的例子,在一家公司内部,两个项目组,要完成同样的代码任务,他们之间彼此是互相竞争的关系,但是公司给他们提供的服务器只有一个,他们完成的代码要提交上去,这是你写的代码,肯定只是想让你和你的组员组长能看到,不想你的竞争对手组看到,这就产生了所属组的概念。

shell 运行原理和 Linux 权限详解

文件类型

  • d:文件夹
  • -:普通文件
  • l:软链接(类似 Windows 的快捷方式)
  • b:块设备文件(例如硬盘、光驱等)
  • p:管道文件
  • c:字符设备文件(例如屏幕等串口设备)
  • s:套接口文件
shell 运行原理和 Linux 权限详解
  • 基本权限

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

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

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

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

shell 运行原理和 Linux 权限详解

2.3 文件权限值的表示方法

字符表示方法

Linux 表示 说明 Linux 说明
r – – 只读 – w – 仅可写
– – x 仅可执行 r w – 可读可写
– w x 可写可执行 r – x 可读可执行
r w x 可读可写可执行 – – – 无权限

八进制数值表示方法

权限符号 (读写执行) 八进制 二进制
r 4 1 0 0
w 2 0 1 0
x 1 0 0 1
r w 6 1 1 0
r x 5 1 0 1
w x 3 0 1 1
r w x 7 1 1 1
– – – 0 0 0 0
shell 运行原理和 Linux 权限详解

权限更改

$ chmod 777 text.c
$ chmod 000 text.c
$ chmod 640 text.c
登录后复制
shell 运行原理和 Linux 权限详解

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

chmod

  • 功能:设置文件的访问权限
  • 格式:chmod [参数] 权限 文件名
  • 常用选项:

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

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

  • chmod 命令权限值得格式

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

  • +: 向权限范围增加权限代号所表示的权限
  • -: 向权限范围取消权限代号所表示的权限
  • =: 向权限范围赋予权限代号所表示的权限
    用户符号:
  • u:拥有者
  • g:拥有者同组用
  • o:其它用户
  • a:所有用户

示例:

shell 运行原理和 Linux 权限详解

注意:chmod 可以给拥有者,所属组,其他用户同时修改权限,中间用逗号隔开

如果要修改不是自己的文件的时候需要 sudo 临时权限提升或者直接切成 root 身份

  • sudo chmod 用户表示符 +/-= 权限字符 文件名

chown

功能:修改文件的拥有者

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

实例:

$ sudo chown root test.c// 修改拥有者
$ sudo chown lighthouse test.c// 修改拥有者
$ sudo chown :lighthouse test.c// 修改所属组
$ sudo chown lighthouse:lighthouse test.c// 可以将拥有者、所属组同时修改
$ sudo chown root:root test.c// 可以将拥有者、所属组同时修改
登录后复制
shell 运行原理和 Linux 权限详解

chgrp

功能:修改文件或目录的所属组
格式:chgrp [参数] 用户组名 文件名
常用选项:-R 递归修改文件或目录的所属组

实例:

$ sudo chgrp root text.c
$ sudo chgrp lighthouse text.c
登录后复制
shell 运行原理和 Linux 权限详解

2.4 修改文件的掩码

umask

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

语法:umask 权限值

shell 运行原理和 Linux 权限详解

新建文件夹默认权限 = 0666

新建目录默认权限 = 0777

shell 运行原理和 Linux 权限详解

但是我们观察到,新建的文件和目录并不是默认的起始权限,这里是什么原因呢?

原因就是创建文件或目录的时候还要受到 umask 的影响。假设默认权限是 mask,则实际创建的出来的文件权限是:umask & ~umask

shell 运行原理和 Linux 权限详解
  • 我们也可以通过修改文件的 umask 码值来修改文件的权限:
shell 运行原理和 Linux 权限详解

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

2.5 file 指令

file

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

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

常用选项:

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

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

shell 运行原理和 Linux 权限详解
  1. 目录权限

面试题:进入一个目录要什么权限?

  • 可读权限: 如果目录没有可读权限,则无法用 ls 等命令查看目录中的文件内容.
  • 可写权限: 如果目录没有可写权限,则无法在目录中创建文件, 也无法在目录中删除文件.
  • 可执行权限:如果没有目录可执行权限,则无法 cd 到目录中
x
r
w
登录后复制
  1. 粘滞位

新发现:

就是只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写权限.我创建的一个文件, 凭什么被你一个外人可以删掉

shell 运行原理和 Linux 权限详解

结论

如果目录本身对 other 具有 w 权限,other 可以删掉任何目录下的东西
如果目录本身对 other 没有 w 权限,other 则不可以删除

我们的需求:other 可以在特定的目录下创建文件并写入,但是不想让任何人删除掉自己的文件

这里为了解决这个不科学的问题,Linux 引入了粘滞位的概念

粘滞位

语法:chmod +t 目录名

功能:给目录加上粘滞位

注意

只能对目录设置,一般是限制 other权限的,对设置粘滞位的目录,在该目录下,只能有文件的拥有者和 root 用户可以删除,其他人不能删除

示例:

shell 运行原理和 Linux 权限详解

有多个人或者系统会有很多的临时数据,所有的临时文件都放在系统的 /tmp 目录下。所有的权限需要放开,但是只想让文件的拥有者删除自己的文件,这需要设置粘滞位

  1. 总结
  • 目录的可执行权限是表示你可否在目录下执行命令。
  • 如果目录没有 – x 权限,则无法对目录执行任何命令,甚至无法 cd 进入目, 即使目录仍然有 – r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)
  • 而如果目录具有 – x 权限,但没有 – r 权限,则用户可以执行命令,可以 cd 进入目录。但由于没有目录的读权限
  • 所以在目录下,即使可以执行 ls 命令,但仍然没有权限读出目录下的文档。

以上是shell 运行原理和 Linux 权限详解的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

deepseek网页版入口 deepseek官网入口 deepseek网页版入口 deepseek官网入口 Feb 19, 2025 pm 04:54 PM

DeepSeek 是一款强大的智能搜索与分析工具,提供网页版和官网两种访问方式。网页版便捷高效,免安装即可使用;官网则提供全面产品信息、下载资源和支持服务。无论个人还是企业用户,都可以通过 DeepSeek 轻松获取和分析海量数据,提升工作效率、辅助决策和促进创新。

deepseek怎么安装 deepseek怎么安装 Feb 19, 2025 pm 05:48 PM

DeepSeek的安装方法有多种,包括:从源码编译(适用于经验丰富的开发者)使用预编译包(适用于Windows用户)使用Docker容器(最便捷,无需担心兼容性)无论选择哪种方法,请仔细阅读官方文档并充分准备,避免不必要的麻烦。

BITGet官方网站安装(2025新手指南) BITGet官方网站安装(2025新手指南) Feb 21, 2025 pm 08:42 PM

BITGet 是一款加密货币交易所,提供各种交易服务,包括现货交易、合约交易和衍生品。该交易所成立于 2018 年,总部位于新加坡,致力于为用户提供安全可靠的交易平台。BITGet 提供多种交易对,包括 BTC/USDT、ETH/USDT 和 XRP/USDT。此外,该交易所还在安全性和流动性方面享有盛誉,并提供多种功能,如高级订单类型、杠杆交易和 24/7 全天候客户支持。

欧易okx安装包直接进 欧易okx安装包直接进 Feb 21, 2025 pm 08:00 PM

欧易 OKX,全球领先的数字资产交易所,现推出官方安装包,提供安全便捷的交易体验。欧易 OKX 安装包无需通过浏览器访问,可直接在设备上安装独立应用程序,为用户打造稳定高效的交易平台。安装过程简便易懂,用户只需下载最新版本安装包,按照提示一步步操作即可完成安装。

gate.io安装包免费拿 gate.io安装包免费拿 Feb 21, 2025 pm 08:21 PM

Gate.io是一款受欢迎的加密货币交易所,用户可通过下载其安装包并安装在设备上使用。获取安装包步骤如下:访问Gate.io官方网站,点击“下载”,选择对应操作系统(Windows、Mac或Linux),将安装包下载至计算机。安装过程中建议暂时禁用杀毒软件或防火墙,确保安装顺利。完成后,用户需创建Gate.io账户以开始使用。

欧易交易所下载官方入口 欧易交易所下载官方入口 Feb 21, 2025 pm 07:51 PM

欧易,又称OKX,是一个全球领先的加密货币交易平台。文章提供了欧易官方安装包的下载入口,方便用户在不同设备上安装欧易客户端。该安装包支持 Windows、Mac、Android 和 iOS 系统,用户可根据自己的设备类型选择相应版本下载。安装完成后,用户即可注册或登录欧易账户,开始交易加密货币和享受平台提供的其他服务。

gate.io官网注册安装包链接 gate.io官网注册安装包链接 Feb 21, 2025 pm 08:15 PM

Gate.io 是一款备受赞誉的加密货币交易平台,以其广泛的代币选择、低廉的交易费用和用户友好的界面而闻名。凭借其先进的安全功能和优秀的客户服务,Gate.io 为交易者提供一个可靠且便利的加密货币交易环境。想要加入 Gate.io 的行列,欢迎点击提供的链接下载官方注册安装包,开启您的加密货币交易之旅。

如何在Ubuntu上使用nginx安装phpmyadmin? 如何在Ubuntu上使用nginx安装phpmyadmin? Feb 07, 2025 am 11:12 AM

该教程指导您在Ubuntu系统上安装和配置Nginx和PhpMyAdmin,并可能与现有的Apache服务器一起安装和配置。 我们将介绍设置NGINX,解决与Apache的潜在端口冲突,安装Mariadb(

See all articles