一、shell命令以及运行原理
我们用一个简单的例子来理解这个抽象的概念:
对shell的第一次感性认识:
在你很小的时候,对于外界的事物都充满好奇心,是妈妈一点一点来教你并且告诉你,让你从无知到了解。
1.因为我们不擅长与外界交流,所以当你需要和外界信息交互时,妈妈起到了桥梁的作用,解决了你和外界沟通的成本。
2.当外界有不良的、错误的信息或者行为靠近你时,妈妈会直接阻拦,不会向你传递,保护你的安全。
3.妈妈作为你和外界信息交互的唯一途径,当恶意行为来到时,妈妈不会自己上,而是叫你爸或者其他亲戚上,这就保护了妈妈的安全。
以上均为虚构,请勿上纲上线
那么linux内核就是孩子,shell外壳程序就是妈妈,而用户就是外界!
1. 那么回到正题:
shell作用一:设立了解决了用户和操作系统沟通的成本。
shell作用二:shell存在的意义,变相的保护了操作系统。
shell作用三:shell外壳是用户和linux操作系统交互的唯一途径,若因为用户的指令导致shell外壳挂掉,那么linux操作系统就不能被用户所使用。
所以shell会创建子进程,让它去执行用户的指令,而shell本身并不执行,所以创建的子进程失败也没事。
那你可能疑惑,这里为什么是linux内核呢?
其实我们谈到linux操作系统,宏观是linux内核+shell外壳,微观是linux内核。
怎么理解呢?类比windows:shell外壳和windows的图形化界面就是兄弟关系。win的图形化界面其实本质就是一种shell外壳程序。我们使用的centos 7 Linux操作系统的shell外壳是bash,bash和shell的关系就像:shell是妈妈,而bash是你妈(不好意思)。所以linux有这么多版本就是因为shell外壳程序有所不同,但也相差不大。
二、Linux权限
在了解权限之前,我们需要了解Linux是多用户操作系统,所以有很多用户,那么他们之间切换是如何进行的呢?
现在的用户是普通用户(Mjcode)
1.如果我们需要切换到root用户,且不想改变当前路径,就需要su
(切换root需要输入root的密码)
(路径没有改变,依旧是Mjcode的家目录)
2.切换root用户,改变路径:su -
3.root用户切换普通用户:su 普通用户
不需要输密码,直接切换)
所以root是超级管理员,普通用户是受权限约束的用户。
如果执行指定时,用root的身份去执行(对指令进行提权):
sudo 指令 (不需要切换用户)
1.什么是权限
通俗来说,权限是来限制身份的,而不是人。人有很多种身份,当你是学生时,你就有在学校的一些权限,你可以随便进入学校,去上课,去你的床位睡觉,并不是因为你是某某,而是因为你的身份。
那么,文件权限=(人)角色+文件属性
角色有拥有者(user),所属组(grouper),其他(other)
文件属性:r(读),w(写),x(可执行)
当然可执行是针对一些可执行文件,那么linux是怎么来区分文件类型呢?
linux文件类型与文件后缀名是没有关系的,因为系统识别文件类型不会根据后缀名来识别。
但是,我们自己仍然可以使用文件后缀来区分(给自己看的,好区分)。我们只说的是linux操作系统不拿后缀名区分,其实有些工具是用后缀名来区分文件类型的。
linux的文件类型:
d:目录文件
那后面的9个字符是什么意思呢?我们往下看