目录
一、shell:
二、权限:
1、用户理解:
2、文件权限:
3、目录权限:
4、权限掩码:
5、粘滞位:
一、shell:
Linux操作系统不仅仅是指Linux内核,而是指基于Linux内核的整个操作系统。严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核的操作系统,Linux是在和用户交互中是以一个一个命令行进行交互的,但是这些命令并不是直接和Linux内核进行交互的,而是通过外壳程序shell来与kernel进行交互。
那么对于shell的最简单理解就是一个命令行解释器,每当一个命令输入上去,shell就会将这个命令“翻译”给Linux内核,当Linux内核处理完后就会通过shell返回给用户。
与Windows不同的是,Windows是通过图形化界面来进行Windows内核和用户之间的交互的。
shell是通过对指令进行解析然后给Linux内核进行处理,然后处理的结果通过shell解析给用户
shell的作用:
1、是Linux内核和用户之间的桥梁
2、保护操作系统
注意:shell是所有外壳程序的统称,在Ubuntu中,默认的shell程序通常是Bash
可以通过以下的代码来进行查看所有可用的shell程序
cat /etc/shells
通过以下的代码来进行查看默认的shell程序
二、权限:
1、用户理解:
在Linux操作系统下,有两种类型的用户,一种是超级用户root,另一种是后来添加的普通用户
超级用户root:
超级用户root是操作系统中的管理者,在操作系统中无论是什么都不会对root造成限制
普通用户:
普通用户是一般只能在自己的家目录下进行操作,在涉及修改权限的地方往往是不行的
如上所示,当都在根目录的时候,普通用户和root用户都进入root这个文件夹,普通用户是没有权限的,root用户才有权限。
用户切换:
然后可以直接按Ctrl + d退出,回到普通用户
当从root账号切换到普通用户的时候不需要进行输入密码,直接切换
2、文件权限:
拥有者:
这个意思就是创建这个文件的用户,拥有者也是可以进行修改的
所属组:
所属组就是可以让在所属组里面的人能够读看写,但是其他人不能够读看写,所以就引出了所属组
other:
既不是拥有者又不是所属组就是other
所以是if --- else if --- else关系的
最后关于展示出来的第一块部分:
这部分总共有10个字母或者是-,第一个就是文件的分类,如果是-就是普通文件,如果是d就是目录文件:
d:文件夹
-:普通文件
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件
基本权限:
然后其他的9个字符每三个为一组,
前三个对应文件的拥有者,中间三个对应文件的所属组,最后三个对应文件的other,
注意:
一个用户只能对应一个身份,比如说上面的silence既是文件的拥有者也是文件的所属组,但是在配对的时候依次从左往右进行配对,如果在拥有者配对后就会只看拥有者的权限,而不会看所属组的权限
权限更改:
方法一:
指令:chmod u/g/o/a +/- r/w/x [文件]
u对应的就是user拥有者
g对应的就是group所属组
o对应的就是other其他人
a对应的就是所有人
上述就是对test.c文件中拥有者加执行权限,所属组加执行权限,其他人加可写和可执行权限
如上就是将所有人的所有权限进行删除
方法二:
rwx如果有就对应1,如果没有就对应0
例如:
有r无w无x就是100,有r有w无x就是110,有r有w有x就是111等等这个意思。
如上就是将拥有者,所属组,其他人的权限依次改为:rwx,rw-,r--
file指令:
能够帮助我们查看更多关于这个文件的信息
3、目录权限:
毕竟在Linux中,一切皆是文件,所以目录也是文件,那么关于目录这个文件:
可读: 如果用户没有该目录的可读权限,则无法通过ls指令查看目录中的文件内容。
可写: 如果用户没有该目录的可写权限,则无法通过一系列指令在目录中创建文件或删除文件。
可执行: 如果用户没有该目录的可执行权限,则无法通过cd指令进入到目录当中。
- :依然表示这里无权限
4、权限掩码:
权限掩码:是Linux系统中用于控制文件和目录的默认权限设置的一种机制。在Linux系统中,新建的文件和目录都会有一个起始权限,例如普通文件的默认起始权限是755,目录文件的默认起始权限是644。这些默认权限是通过权限掩码来确定的。
那么权限掩码是如何进行操作的呢?
首先Linux系统中有默认的权限掩码,可以通过umask指令来进行查看
如上,在我的环境中权限掩码就是0002
但是权限掩码也可以进行修改的,umask 数字
那么权限掩码是如何对我们的默认文件进行初始化权限的呢?
为什么普通文件的默认权限是664,目录文件的默认权限是775呢?
1、首先要知道,默认给普通文件的其实权限是666,默认给目录文件的其实权限是777
2、权限掩码:
凡是在umask中出现的权限,不会在最终的文件权限中出现
得出结论:最终权限 = 起始权限 & (~umask)
所以普通文件在进过umask的运算后,从666变为664了
5、粘滞位:
当我们删除一个文件的时候,有没有删除这个文件的权限并不在这个文件本身,而是在所处的目录,使当前目录下的文件只允许目录拥有者或者文件拥有者和超级用户删除
语法:chmod +t 目录名
如上就是对d1加上了粘滞位
如果此时其他人想删除d1里面的文件就是没有权限,会被拒接此次请求
注意:如果有可写权限,不影响其在该目录下进行创建文件