Linux手册--shell和权限

Linux中的Shell和权限

  • shell命令以及运行原理
  • Linux权限管理
        • 修改权限
          • chmod

shell命令以及运行原理

linux严格意义上是一个操作系统,我们称之为核心(kernel),但我们普通用户不直接使用kernel,而是通过kernel 的外壳程序进行交互,也就是所谓的shell。

shell最简单的定义:命令行解释器

  • 将使用者的命令翻译给kernel处理
  • 将核心的处理结果翻译给使用者

那我们为什么不直接使用kernel呢?
我们可以类比windows GUI ,我们通常通过图形接口点击,完成我们的操作。而不去操作windows内核。
shell对于linux有着相同的道理,主要是对我们的指令进行解析,给linux内核。结果通过内核运行出结果,通过shell再解析给用户。

Linux手册--shell和权限_第1张图片
其中很多人有误解,认为图形化是对于命令的封装,其实不是的,图形化和命令行是出于同等地位的。
并且我们要知道,是先产生的命令行,在产生的图形化界面。


编译好的文件在磁盘中,但是当我们运行的时候,它变成了一个进程。
并且大部分指令的运行,都变成了进程

我们可以通过这条命令查看进程
Linux手册--shell和权限_第2张图片
其中PID是进程ID,PPID是父进程ID.
进程id相当于人们的身份证,一人一个,标识信息。

大概了解了进程后,我们继续谈shell


Linux手册--shell和权限_第3张图片
这样一来,shell充当翻译,大大降低我们与操作系统交互的成本和时间。

shell不仅仅有这样的好处,而且它还可以保护操作系统,shell可以直接主动拒绝用户给的请求,就像上图所展示的。
这叫做非法指令拦截。

同时shell还有自我保护机制,shell一般都是创建子进程,让子进程进行命令行解释的工作。
这样为了避免解释进程除了问题而整个外壳程序崩溃的问题,如果仅仅是子进程崩了,不影响Shell自己的进程。

同时我们要知道,shell是所有外壳程序的统称。
我们这里centos7 的外壳程序 是:bash。
我们用户登陆时,它自动生成。

Linux手册--shell和权限_第4张图片
————————————————————————————————————————————

Linux权限管理

首先我们要知道,权限与什么有关呢?

  1. 人:
    文件的拥有者,文件所属组,其他人
  2. 事物的属性:
    r , w,x,-;
    分别是读取、写入、可执行、无权限。

Linux手册--shell和权限_第5张图片
Linux手册--shell和权限_第6张图片

我们可以看到,当我们查看文件的属性的时候,第一列有10列属性,
其中第一位代表了文件的类型(在linux中文件类型与后缀名无关)
-:普通文件,文本,可执行程序,库等等
d:目录
c:字符文件,显示器,键盘
p:管道文件
b:块设备,磁盘
l:链接文件

其中第一个whb代表了文件的拥有者,第二个代表了所属组,其他是不会显示的,因为前两个确定了,其他自然而然就清楚了。
文件的拥有者和其他组很好理解,这个文件是否属于谁。
但是所属组我们需要深刻理解一下,首先linux中所有用户都要隶属于一个组,哪怕一个组中只有你一个人,那么为什么要存在组这个概念呢
比如我们在一家公司,公司的体制是同一个项目需要多个小组完成,这几个小组之间是竞争关系,最后只有一个小组可以胜出。虽然这样浪费了小组的时间精力金钱,但是对于大公司来说,这样是完全可行的,想要胜过别的公司的产品,就要先打败自己公司的产品,这样一来,我们小组不可以把自己的工作进程,代码等透露给别的小组,但是我们用的是同一台服务器那么我们一个组的人和其他组的人就要使用不同的所属组。文件别人看不到,只有同组的人可以看到。
总结一下:有了所属组,可更灵活的进行权限配置,满足团队协作。

我们再来看看这九个字符他们每三个一组
每组分别对应了拥有者,所属组,其他 的权限
其中第一个r代表可读,w代表可写,x代表可执行, -代表没有这个权限。
Linux手册--shell和权限_第7张图片

修改权限

chmod

了解了文件的权限后,我们需要知道如何修改权限

方法一:

chmod u-r file.txt
代表了给拥有者减去可读的权限

chmod u+x file.txt
给拥有者加上可执行权限
这些操作都很类似了,
其中所属组是 g,其他是o。

当然还可以一下子修改所有人的权限
chmod a+w file.txt
给所有组加上可写的权限

除了这些方法修改权限,还有一种八进制方法

方法二:

其中rwx分别可以用二进制表示
例如可读可写可执行就为111 也就是7
可读不可写,不可执行 101 也就是5

所以当我们要修改权限时可以这样
chmod 777 file.txt 就是拥有者所属组其他人全部都可读可写可执行。

对于文件来说,可读可写可执行相对好理解。
但是对于一个目录,我们需要知道
r可读:可以显示目录下的内容,通常的操作为ls等
w可写:可以在目录里创建新的文件
x可执行:可以进入这个目录

但是我们在对目录进行读取和写入时,需要先进入这个文件,也就是这个目录要是可执行的,所以默认我们目录在三个组里都会有可执行x权限,否则是无法读写的。

当我们学会了修改文件的权限后,还需要知道如何修改组的权限。
chown root file.txt
这个命令是把文件的拥有者改为root。
chgrp root file.txt
把文件的所属组改为root

这里既然提到了创建文件和目录时,默认的权限,那么我们需要知道,默认的权限是如何处理的
我们引入umask
umask我们可以自己设定,如果你在linux中输入这个命令,会出现四位数,我们暂时只关心后三位。
这里的三位数就是默认权限的关键。
凡是在umask中出现的权限位,我们在最终的权限中都不能出现
举个例子:
umask默认为002
翻译一下:000 000 010 分别是三个组的权限
而当我们创建一个文件,默认是 666 :110 110 110
而当我们创建一个目录,默认是 777 : 111 111 111

所以当我们确定最终的权限的时候,需要看
umask限制了其他组中不能有可写入的权限,因为那一位为1.
所以在和默认666结合后,这个文件的最终权限为
110 110 100 : 664
这就构成了我们创建文件后,默认的权限,当然umask是可以随意修改的,只要你能够搞明白。
而这里的结合过程我们是用眼睛看出来的,如果稍微复杂一点并不容易看时候。
其实他们有这样的运算逻辑:

default & (~ umask)


粘滞位
我们再来介绍一下粘滞位的概念
我们知道rm这个命令可以删除文件和目录,我尝试了一下,我用其他用户rm删除目录中的文件,是完全可以无障碍实行的,也就是说不管谁的文件,任意一个人来了都可以删除。
所以我们产生了粘滞位:

我们需要chmod +t file.txt
那么我们可以看到文件属性中其他组中最后一位变成了t,这就意味着,文件不能随意删除了,只有文件的所属组和拥有者可以删除,其他人无法删除。

在我们做这个操作之前需要注意一下,如果这个目录都是其他人的,那你目录里的文件不属于这个其他人,就算给它加上粘滞位,
这个其他人还是能删除掉这个文件,需要注意。

Linux手册--shell和权限_第8张图片

你可能感兴趣的:(LINUX系统及网络,内核,linux,操作系统,shell)