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

这篇具有很好参考价值的文章主要介绍了Linux系统编程学习 NO.5 ——shell命令行的概念以及原理、权限的概念。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

1.1.shell命令行的介绍

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

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

2.Linux权限的概念

2.1.Linux用户的分类

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

2.1.1.su指令

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

su usrname
su -

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

2.2.什么叫权限?

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

2.3.文件的属性

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

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

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

2.4.后缀名的意义

在Linux系统中,文件的后缀名并没有直接的意义。后缀名取决于用户的需求。下面我举一个后缀名有意义的样例
Linux系统编程学习 NO.5 ——shell命令行的概念以及原理、权限的概念

2.5.权限身份的介绍

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

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

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

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

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

2.7.权限的修改以及现象

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

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

Linux系统编程学习 NO.5 ——shell命令行的概念以及原理、权限的概念
下面简单举例来看看权限约束的现象
Linux系统编程学习 NO.5 ——shell命令行的概念以及原理、权限的概念
Linux系统编程学习 NO.5 ——shell命令行的概念以及原理、权限的概念
chown指令用于修改文件的拥有者,chgrp指令用于修改文件的所属组。这是两条需要具备root权限的指令,普通用户若想使用这两条指令需要进行sudo提权。

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

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

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

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

假设,我既是文件的拥有者也是所属组身份,但是,拥有者只有读权限,而所属组具有读写权限。此时,我读取文件没有问题,那写入文件是否有问题呢?下面我们直接上实操。
Linux系统编程学习 NO.5 ——shell命令行的概念以及原理、权限的概念

2.8.权限掩码的概念

这里我们创建两个文件和两个目录,来看看系统默认的身份权限。
Linux系统编程学习 NO.5 ——shell命令行的概念以及原理、权限的概念
其实身份权限 = 默认身份权限 & (umask按位取反)。而普通文件默认权限为666 ,目录文件的默认权限为777。输入umask指令,可以查看当前系统下的权限掩码。
Linux系统编程学习 NO.5 ——shell命令行的概念以及原理、权限的概念
下面我简单的对上面普通文件和目录文件的身份权限进行计算演示
Linux系统编程学习 NO.5 ——shell命令行的概念以及原理、权限的概念

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

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

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

前面简单介绍了普通文件的各个权限的所对应的行为,下面介绍目录文件的各个权限所对应的行为。首先是读权限,读权限所限制的是查看当前目录下的文件内容。
Linux系统编程学习 NO.5 ——shell命令行的概念以及原理、权限的概念
而目录文件的写权限是用来限制在当前目录下的创建、删除以及修改等操作。
Linux系统编程学习 NO.5 ——shell命令行的概念以及原理、权限的概念
相对应的可执行权限其实就是决定了我们能否打开这个目录。

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

2.9.粘滞位

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

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

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

Linux系统编程学习 NO.5 ——shell命令行的概念以及原理、权限的概念
补充:粘滞位一般是给目录配置的权限,一般是用于共享的目录。一般配置了粘滞位,只有文件的拥有者和root能够删除。t是一种特殊的x权限。文章来源地址https://www.toymoban.com/news/detail-462336.html

到了这里,关于Linux系统编程学习 NO.5 ——shell命令行的概念以及原理、权限的概念的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux shell编程学习笔记40:stat命令

    “程序员必备的面试技巧,就像是编写一段完美的代码一样重要。在面试战场上,我们需要像忍者一样灵活,像侦探一样聪明,还要像无敌铁金刚一样坚定。只有掌握了这些技巧,我们才能在面试的舞台上闪耀光芒,成为那个令HR们心动的程序猿!” 目录 0 前言 1 DOS、Wind

    2024年01月19日
    浏览(56)
  • Linux shell编程学习笔记47:lsof命令

    今天国产电脑提示磁盘空间已耗尽,使用用df命令检查文件系统情况,发现/dev/sda2已使用100%。 Linux shell编程学习笔记39:df命令 https://blog.csdn.net/Purpleendurer/article/details/135577571 于是开始清理磁盘空间。 第一步是查看已删除、但空间却没有释放的进程。 这里要用到 lsof命令。

    2024年04月27日
    浏览(44)
  • Linux shell编程学习笔记36:read命令

     *更新日志  *2023-12-18 1.根据[美] 威廉·肖特斯 (Willian shotts)所著《Linux命令行大全(第2版)》                         更新了-e、-i、-r选项的说明                       2.更新了 2.8 的实例,增加了gif动图                       3.补充了-i的应用实例 2.12 目录 目录

    2024年02月04日
    浏览(46)
  • Linux shell编程学习笔记33:type 命令

     目录 0 引言 1 type 命令的功能和格式 1.1 type命令的功能 1.2 type 命令的格式 2 type命令用法实例 2.1用type命令查看shell内置命令(以echo命令为例) 2.2 用type命令查看别名(以ls命令为例) 2.3 用type命令同时查看shell内置命令和别名(以echo和ls命令为例) 2.4 用type命令查看外部

    2024年02月03日
    浏览(54)
  • Linux shell编程学习笔记39:df命令

    0 前言 1  df命令的功能、格式和选项说明 1.1 df命令的功能 1.2 df命令的格式 1.3 df命令选项说明  2 df命令使用实例  2.1  df:显示主要文件系统信息 2.2 df -a:显示所有文件系统信息 2.3 df -t[=]TYPE或--type[=]TYPE:显示TYPE指定类型的文件系统信息 2.4 df --total:追加显示统计信息 2

    2024年01月16日
    浏览(60)
  • Linux shell编程学习笔记37:readarray命令和mapfile命令

      目录   0 前言 1  readarray命令的格式和功能 1.1 命令格式 1.2 命令功能 1.3 注意事项 2 命令应用实例 2.1 从标准输入读取数据时不指定数组名,则数据会保存到MAPFILE数组中 2.2 从标准输入读取数据并存储到指定的数组 2.3 使用 -O 选项指定起始下标 2.4 用-n指定有效行数 2.5 

    2024年02月03日
    浏览(52)
  • Linux shell编程学习笔记6:查看和设置变量的常用命令

    上节我们介绍了变量的变量命名规则、变量类型、使用变量时要注意的事项,今天我们学习一下查看和设置变量的一些常用命令,包括变量的提升,有些命令在之前的实例中已经使用过了。 语法格式:echo [参数] [输出内容] 常用参数: -e:支持反斜线控制的字符转换(具体参

    2024年02月07日
    浏览(42)
  • Linux shell编程学习笔记31:alias 和 unalias 操作 命令别名

    目录 0 前言 1 定义别名 2 查看别名 2.1 查看所有别名 2.2 查看某个别名 2.2.1  alias 别名 2.2.2 alias | grep 别名字符串 2.2.3 使用 Ctrl+Alt+E 组合键 3 unalias:删除别名 4 如何执行命令本身而非别名 4.1 方法1:使用 Ctrl+Alt+E 组合键  unalias 4.2 方法2:在命令前加上命令文件的绝对路径

    2024年02月05日
    浏览(39)
  • Linux shell编程学习笔记46:awk命令的由来、功能、格式、选项说明、版权、版本

    在编写Linux Shell脚本的过程中,我们经常要对Linux命令执行的结果进行分析和提取,Linux也在文本分析和提取这方面提供了不少的命令。比如我们之前研究过的cut命令。 Linux shell编程学习笔记43:cut命令 https://blog.csdn.net/Purpleendurer/article/details/135730679?spm=1001.2014.3001.5501 除了cut命

    2024年04月24日
    浏览(69)
  • Linux系统编程学习 NO.9——git、gdb

    本篇文章简单介绍了Linux操作系统中两个实用的开发工具git版本控制器和gdb调试器。 git是一款开源的分布式版本控制软件。它不仅具有网络功能,还是服务端与客户端一体的软件。它可以高效的处理程序项目中的版本管理。它是Linux内核的设计者Linus Torvalds为了帮助管理Linux内

    2024年02月05日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包