Linux的学习本来应该是从指令开始的,众所周知Linux是一个使用各种指令的操作系统,有很多很好的博客总结了Linux的指令,所以这里就不再做多余的赘述了。
一.认识Shell
Shell是什么?
这是必应搜索给的结果,可以发现Shell是一种应用程序,是一个用户和操作系统内核访问的窗口。 为什么我们不能直接访问操作系统的内核呢?
这就好比我们人类的身体,我们是无法直接控制自己的血压,心跳,呼吸。操作系统和人体一样复杂,如果想要精通需要大量的学习成本,这会劝退很多人:试想,如果买了一台电脑还得使用指令来安装软件,进行内存的控制......这势必会劝退很多人使用电脑。另外一点就是人类会犯错,就算是很熟悉操作系统内核,但是在长时间使用和操作的时候,人也是会犯错的。二Shell程序就很好地帮我们解决了这些问题。
不同的操作系统就提供了不同的外壳程序,windows就提供了图形化界面,但是Linux就提供了指令操作的方式。
总结一下
外壳程序的意义:
1.是操作系统和用户交互的中间软件层
2.可以在一定程度上起到保护操作系统的作用
权限
权限不能只单方面的看用户或者对象,权限有对用户和对角色和文件两个对象的操作。
对于用户的权限
首先要知道Linux下的用户分为root用户和普通用户(普通用户可以有多个)
root用户具有在Linux系统下的王牌权限,几乎没有root做不到的事情
在Linux下切换用户的指令是su,su + 用户名 可以切换用户,从普通用户切换到root用户,root可以省略
对角色和文件操作
在Linux下,要深刻理解权限的核心是由用户和事物属性决定的!
大家很好奇 ll 指令显示的前几个字符是啥意思吧
但并不是所有的软件都不会注意文件的类型,在Linux下的一些软件是会区分文件后缀的,但是文件后缀在系统层面是没有意义的。
r表示的是读权限(read),w表示写权限(write),x权限和目录有关:拥有目录的x权限表示用户可以进入这个目录,能不能进入目录,和这个目录的x权限有关。
x权限:如果一个文件拥有r权限,但是没有x权限,用户不可以查询目录下的文件内容,但是可以查看文件名列表或子目录列表,所以开放目录给任何人浏览时,要开放x权限和r权限。
角色
拥有者:文件属于谁
所属组:文件属于哪一个组
other:除了拥有者和所属组就是other
所属组的出现是为了解决多人参与的项目,当项目有多个人参与的时候,文件想让一些人有权限,就会出现组这个东西来规定拥有权限的这些人。
权限修改(对文件权限的修改)
权限的修改要从角色和文件两个方面讨论:
从文件方面,root创建的文件只有root可以修改,并且root也可以修改其他文件的权限。
文件修改权限有两个种方法,一个是“ugo+-”,一个是二进制方案进行修改
上面就是在lxf用户下修改user为root的目录的权限,会报错。
指令: chmod u/g/o +/- 权限 文件名
权限的修改也可以用八进制表示,那为什么是八进制呢?
其实本质上还是二进制来表示权限的有无,0为没有权限,1表示有权限,因为权限有三种r w x这样八进制数就可以表示三种权限的所有状态。
指令: chmod 八进制数 777即表示给文件所有的权限。
权限修改(对角色的修改)
上面介绍到了角色有拥有者,所属组和other三种角色,权限在不同的角色下也是不同的
想要修改权限也可以通过修改角色来实现:
修改拥有者的指令:chown 修改后的拥有者 文件名
同样root拥有王牌指令
修改所属组的指令:chgrp 修改后的所属组 文件名
想要使用root身份来修改权限,可以在命令前面加sudo
常见权限问题
目录权限
这里思考一个问题,如果有一个目录,他的拥有者和所属组时同一用户,那么将拥有者的权限进行修改,删除拥有者的所有权限,那么还是否能打开文件?
实际是打不开的,也就是丧失了对文件的权限,所以就证明在Linux下,权限只被认证一次。
Linux下的一些默认的情况:
- 一个目录文件创建,默认权限是从777开始的
- 一个普通文件创建,默认权限是从666开始的
但是实际情况可能不是这样的:
这是由于umask