一,对shell外壳的理解
1,对shell外壳的理解
shell外壳是包裹在linux内核(kernal)外的一层软件层,就像linux操作系统内核的一个外壳一样,故成为shell外壳。但是我们一般的用户不能直接使用kernal,而是通过shell外壳建立起与kernal的交流。
shell对于linux操作系统就像GUI(图形化界面)对windows系统,我们在使用windows操作系统的机器时,并不是直接对Windows操作系统内核直接操作,而是通过图形化界面建立起用户与操作系统之间的联系。
shell对于Linux系统的作用就是,把我们用户输入的命令行操作进行解析,解析后传给linux内核,将运行的结果返回给用户。
用户与操作系统的沟通实际上是像下图这样进行的
举一个非常形象的例子:
shell外壳就像我们生活中的媒婆一样,比如你是一个内敛闷骚的程序员,你喜欢上了一个女孩叫如花,但是你不敢去和如花去表达爱意,这时你就请了一个媒婆替去给如花提亲,所有的事都是你和媒婆之间交流,你的各种想法都是媒婆替你转达给如花的,如花对你的各种看法也是通过媒婆来回答你的。
2,shell外壳的作用
1,对用户的指令进行解析,将解析的命令传给Linux操作系统,然后将运行的结果返回给用户。
2,是对Linux内核的一种保护。
这个很好理解:
shell不会把用户的任何指令都会传达给Linux操作系统,比如一些对操作系统不友好的指令,就像媒婆也不会把你某种不利于女方的要求传达给女方一样。
3,shell与bash的关系
shell是对linux操作系统内核的外部程序的总称,而就像bash这种是Centos下的一种外壳程序。
换句话说,媒婆是对成各行业的称呼,而王婆,李婆是具体的一个媒婆,与bash相同。
二,文件的权限
1,如何理解权限
首先,权限是用来限制用户的某些行为。在Linux操作系统下,用户分为两种一种是超级用户:root,它不受权限的控制。另一种,就是普通用户,权限限制的就是这些用户,与现实生活类似,权限都是用来限制普通人的。
权限=人+事物属性
所谓的人就是指的用户,在Linux系统下,就拿普通文件来说,具有读写执行的属性,但是对不同的角色,权限也是不同的。
所以,同一个用户在对一个文件处于不同的身份时,所具有的权限也是不同的。
2,如何查看文件的权限
ls -l 命令就可以展示出文件的详细信息,包括文件的权限在内
3,文件都有哪些权限
前十列中的后九列,三三一组,分别代表的是拥有者,所属组,other拥有的权限
r是读权限
w是写权限
x是执行权限
拿test.c这个文件来说,对于拥有者和所属组都具有读和写的权限而没有执行的权限,对于other来说,只有读权限。
“我”现在是guoye是test.c文件的拥有者,可以查看文件的内容。
4,角色的划分
对与一个文件来说,将用户划分为三个角色,分别是拥有者,所属组,和other
拥有者就不用多说了,就是文件的拥有者,谁创建的谁就是拥有者
这里重点讲一下所属组的概念:
下面举个例子
现在好多大的互联网公司,业内有一个制度,就是多组人员干相同的工作,这种赛马制度。
小明和小红是今年公司招来的实习生,被分配到了不同的组,但是干的工作是一样的
公司的领导呢,创建了两个目录,一个作为A组的工作目录,一个作为B组的工作目录,
有一天呢,小明完成了他负责板块的工作,他组内的另一个员工阿U想看看他的代码,但是小明的文件给other设置的权限为不可读不可写不能执行,阿U对于这个文件是other不具有读的权限,这时呢,小名就把阿U及其他组员作为文件的所属组,此时不仅小明可以读自己的代码,所属组的阿U也可以读小明的代码。
所谓的other,就是拥有者和所属组之外的用户。
5,权限操作
权限=人+事物属性
首先,文件的拥有者可以对文件的属性进行修改
也可以对文件的拥有者和所属组进行修改
(1)修改文件属性
chmod u/g/o ±rwx 可以对文件的属性进行修改,前提那得是文件的拥有者,或者是root
例如:对于test.c文件给other添加w权限 chmod o+w test.c
也可以同时对拥有者所属组和other进行修改
例如:给拥有者 所属组 和other 都加上 x可执行的权限
chmod u+x,g+x,o+x 或者 chmod a+x (a是all的意思,u是user,g是group)
对于r w x 如果有某种权限就是1,没有就是0
所以当某种角色有rwx权限时,就是 111 转化成八进制就是7
某种角色有rw权限是,就是110转化成八进制就是6
注: r w x的位置是固定的
也可以这样来改文件的属性:
chmod 000 test,c 意思就是,无论是拥有者还是所属组还是other都不具有rwx中任意一个权限
像 000这样表示文件的属性,也叫做权限的八进制表示法
(2)修改文件的拥有者所属组
修改文件的拥有者和所属组,即使你是文件的拥有者也是不可以的。
例如:你要给别人某样东西,别人可能会要,也可能不会要,要得到别人的允许你才可以把东西给别人,所以我要改变文件的拥有者,所属组即使我是文件的拥有者也不可以,
但是root可以,因为root是超级管理员不受任何约束。
所以,这里不得不提一个指令 su
在此bash下切换用户的身份,从普通用户切换到root,但需要输入root的密码。(ctrl+d退出)
chown XXX test.c 修改文件的拥有者
chgrp XXX test.c 修改文件的所属组
chown XXX:XXX test.c 将文件的拥有者和所属组都改为XXX
注意:所有的更改文件的所属组,拥有者都是在切换到root身份下进行修改的,
或是sudo提权某项指令
三,目录权限
1,目录各种权限代表什么
对于普通文件来说 r就是读 w就是写 x就是执行文件,但是rwx对于一个目录来说分别是代表什么呢?
x :如果没有x权限那么就不能够进入到该目录内
r:没有r权限就不能列出该目录下的文件名和文件属性
w:没有w权限就不能在该目录下创建文件或删除文件
2,粘滞位
讲到粘滞位,首先要讲述一种工作环境,root用户为一个小组创建了一个共享目录,为了是所有人都可以在此目录下可以创建自己的文件进行工作,但是会出现一种情况就是可能会不小心删掉了别人创建的文件,因为创建的共享目录下 other是具有w权限的为了每个人都能创建文件,如果为了防止误删别人的文件而把w权限去掉,那么同样也不可以在共享目录下创建文件,所以就诞生了粘滞位这个概念。
chmod +t public 为共享目录添加粘滞位
粘滞位的出现就解决了这个问题,每个人都可以在共享目录下创建文件,同时也不能删除别人的文件。
四,权限掩码-umask
1,权限掩码与默认权限的关系
无论我们创建文件还是目录,似乎创建完成后文件就具有默认的权限,例如普通用户创建的目录默认权限是775 文件是664 ,这些默认权限就是我们最终看到的权限也就是最终权限,起始操作系统赋予的起始权限是777和666(不是所有的文件都能执行)
我们看到的最终权限是从起始权限中去掉了umask掩码中带有的权限。
我们主要看后三位002 其中 2代表other拥有w权限,所以我们的最终权限要从起始权限中去除掉这个权限,并且不能影响其他权限。
用公式表达就是:最终权限=起始权限&(~umask)
3,修改权限掩码
umask掩码同样可以被修改
将掩码修改为007后,新创建的文件默认权限就变为了660