谈起Linux,一般是在说Linux内核,安卓底层也是Linux内核。
1.Shell
狭义地说,操作系统仅是内核(kernel)那部分,而我们平常说的操作系统,一般都是包括外壳(shell)那部分。
如此说来,为什么会有Shell ,什么是Shell?
为什么会有Shell
一部分原因:操作系统内核使用起来并不简单,且出于安全考虑,并不直接给用户来使用操作系统。
主要原因:绝大数用户并不了解内核本身,为了便于用户体验操作,做成更接近于人类思维的Shell,由Shell和内核交互,才是最优解。
什么是Shell
将使用者的命令翻译给核心(kernel)处理。
同时,将核心的处理结果翻译给使用者。
具体操作
Shell本质是系统启动后,执行起来的一个程序,也就是进程,系统启动期间,一直存在,每一个用户分配一个进程。
对于用户的指令,Shell会进行识别:
如果为错误操作,直接拦截,不反馈给内核。
如果是不安全指令,会生成子进程,由子进程和内核交互,避免出现崩溃而终止主进程。
2.Linux用户
Root和普通用户
如果你是普通用户
1.你要登录Root:需要键入Root账号密码
2.你要登录其他普通用户:需要键入他人账号密码
3.你是Root账号:随意切换账号
3.Linux权限
对于用户分为:Root用户和普通用户
根据用户对文件的行为分为:拥有者(user,u),所属组(group,g),Other(o)
文件的权限操作有:r(读) w(写)x(执行)
三位一组,从左至右,依次表示u,g,o的文件权限
比如用户euto对于文件test.c目前有rw能力:
可以用chmod修改u失去r权限
也可以chmod添加回来:
如果x权限,需要满足文件是可执行文件且有执行权限,两者缺一不可:
有x权限但不是可执行文件:
没有x但是可执行文件:
如果您是Root用户
Root用户没x权限情况下也会报Permission denied的
认识文件信息
第一列表示文件类型,虽然Linux不通过后缀来识别文件是哪种类型,但是后缀推荐使用,一是有些工具软件需要,二是我们需要通过后缀来便于可读
d:文件夹/目录
-:普通文件:图片,源文件,txt,源文件等
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等连续读写)(Linux下一切皆文件)
p:管道文件
c:字符设备文件(例如屏幕等串口设备等随机读写)
i.读(r/4):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
ii.写(w/2):Write对文件而言,具有修改文件内容的权限;对目录来说具有创建文件,删除移动目录内文件的权限
iii.执行(x/1):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
iv.“—”表示不具有该项权限
相关指令
1.chmod
只有文件的拥有者和root才可以改变文件的权限
2.chown
3.chgrp
4.umask:查看或修改文件掩码
新建文件夹默认权限=0666
新建目录默认权限=0777
但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umaskPS:说明:将现有的存取权限去掉权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002。
5.file
辨识文件类型。
删除&粘滞位
一个文件能否被删除,并不取决于文件本身的权限,而是取决于文件所处的目录,是否有w权限
这样引发了一个问题:
在“我”的目录下有root用户创建的文件
chmod来取消other的权限后,的的确确没有权限查看等权限了
但是,文件所处目录是属于“我”的,我可以把这个我没有权限的文件删除:
这就是一个巨大的bud。于是,Linux系统就想,让每个用户互相独立,需要多用户协同的情况,就在根目录下的单独一个文件操作:/tmp
注意,这里other权限全部放开
如你所见:
这样,多用户共享一个目录。
但是other还是有权限删除你的文件的。
于是,引入粘滞位:
chmod u+t
进一步限定权限:
对于目录里的文件,只有Root和文件拥有者,以及目录拥有者可以删除,这就是粘滞位。