🏆一、shell
Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。 而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。如何理解?为什么不能直接使用kernel?
从技术角度,Shell的最简单定义:命令行解释器(command Interpreter)主要包含:
1、将使用者的命令翻译给核心(kernel)处理。
2、同时,将核心的处理结果翻译给使用者。
对比windows GUI,我们操作windows 不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的 操作(比如进入D盘的操作,我们通常是双击D盘盘符.或者运行起来一个应用程序)。
shell 对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运行出结果,通过shell解析给用户。
简单来说,我们程序员把命令(需求)交给shell,shell去和操作系统交互,当用户输入非法指令,shell直接拒绝掉。shell存在的意义:变相的保护操作系统。shell在执行命令时,它是通过派生子进程(bash)的方式执行用户的指令,而shell本身并不执行对应的指令。
🏆二、Linux用户
Linux下有两种用户:超级用户(root)、普通用户。
🐱超级用户:可以在Linux下做任何事情,不受限制;
🐱普通用户:在Linux下做有限的事情。
超级用户的命令提示符是“#”,普通用户的命令提示符是“$".
🖊1、su指令
su指令用于用户间的切换,使用su从普通用户切换到root用户,需要输入root密码,而从root用户切换到普通用户,不需要密码,很自由。
这里,强烈不建议root和普通用户密码一样,因为我们在切换用户会出现问题,比如:
🖊 2、su -指令
su -指令也可以切换到root用户,但是要注意和su之间的差异。
1、su路径不变,把自己变成root。
我们可以看到,当只使用su时,我们从普通用户切换到root用户下普通用户所在的路径。简单来说。
2、su -回到家目录
当我们使用su -时,就从普通用户切换到/root目录下。
🖊3、root切换
👓①exit退出
👓 ②su
👓 ③Ctrl+d
这种比较挫,不建议,因为就是退出登录,然后ssh重新登录。
🖊4、提权
在现实生活中我们有这种场景,我不是root用户,但是我想以root的权限去执行命令。这时候就要提到一个指令:sudo指令。
sudo作用:只要加上sudo,与sudo最近的指令就会以root的身份执行指令。sudo指令一般是普通用户使用,root本身就是超级用户,不需要用sudo。
这里不知道大家注意到一个问题了没有,我想短暂提权,为什么要我输入普通用户的密码,如果仅仅输入普通用户的密码就能提权,那我普通用户不就可以恣意妄为了吗?不着急,如果你的普通用户没加入到系统的可信任名单,你提权还是会失败的。
比如这里:
跳出这个,说明我们需要将当前用户,添加到可信任名单,也就是添加到/etc/sudoers中。
具体怎么添加呢?博主找个没被添加的用户给老铁演示一下:
👓①、赋予sudoer文件写的权限(需要在root账号下操作)
sudo chmod u+w /etc/sudoers
👓②、编辑sudoers文件,给对应的用户添加sudo权限
sudo vi /etc/sudoers
进去后应该看到这样的界面:别乱动,千万别乱动!!!
这里不要用鼠标的滚轮上下翻动,那无效,用键盘的上下键进行翻阅,往下翻,大概在八十多行找到这样的文本:
这是博主已经给Gyh用户添加到可信任名单了。
我们照猫画虎,按i/a键就可以编辑:
然后,按【ESC】键退出编辑。
再按:wq就可以保存退出,这时候我们就成功把用户Zed添加到可提权的可信任用户名单里面了。
🏆三、文件访问者的分类
文件和文件目录的所有者:u--user
文件和文件目录的所有者所在的组的用户:g --grouper
其他用户:o--other
🏆四、文件类型和访问权限
🖊1、文件类型
我们常用的Windows系统通常通过文件的后缀来区分文件类型,比如图片就以.jpg .png等为后缀,文本通常以.txt为后缀,可执行程序以.exe后缀等等...但是在Linux下区分文件类型和文件后缀没有关系。
Linux以文件属性的第一个字符代表文件类型!!
Linux文件类型:(第一个字符)(常见的)
-:普通文件(源代码,库文件,可执行程序,文档压缩包);
d:目录文件
c:字符设备文件
b:块设备
l :链接文件
p:管道文件
可能光谈论文件类型比较抽象,博主就举几个例子来让老铁直观感受一下:
👓①c:字符设备文件
它通常指比如键盘,显示器等。可以看一下Linux下的字符设备文件。
👓②b:块设备
最直观的块设备:磁盘。上篇博客提过,df - h指令就是具体查看磁盘。
👓③l:链接文件
链接文件在Windows下最直观的就是软件的快捷方式,就是典型的链接文件。
👓④p:管道文件
除了之前博客介绍的| 管道,管道还有很多形态。
通过管道,我们可以实现用户间的交互。
那既然Linux不以后缀区分文件类型,是否就意味着我们就命名文件就随便写,不加后缀呢?
再举两个例子来感受一下:
我这里成功编译了a.out文件,我们修改一下名字,看它是否还执行:
仍旧执行,印证了后缀在Linux下就是文件名的一部分。但是毕竟这样很不舒服我们查看文件的类型。再来看一个例子:
这里可能有的老铁要困惑了,既然Linux文件类型和后缀无关,为什么我用gcc编译器编译test.c文件可以成功,改成test.txt名字就会报错:无法识别文件类型呢?
这里有个误区需要提醒大家:
Linux系统对文件识别与后缀无关,但是不代表gcc等工具识别文件和文件后缀没有关系!!!gcc等工具可能要看文件后缀。
所以,😂,综上所述,为了我们看着舒服,方便识别文件类型,也方便各种工具使用,我们在命名时最好还要加上后缀!!
🖊2、访问权限
介绍完了文件属性中第一个字符代表文件类型,那么剩下的9个字符什么意思呢?
???
首先要说明一下‘r’、‘w’、‘x’、‘-’分别是什么含义。
👓①基本权限
r: Read对文件而言,具有读取文件内容的权限;对目录而言,具有浏览改目录信息的权限。
w: Write对文件而言,具有修改文件内容的权限;对目录而言具有删除移动目录内文件的权限
e:execute对文件而言,具有执行文件的权限;对目录而言具有进入目录的权限。
- :表示不具有该项权限。
👓②三种角色的权限
了解了基本权限,我们再把这九个字符分成三组。
这三个位置是固定的,就是r-w-x的位置,有就有相应的字符,没有就是-.
🏆3、如何操作权限
操作权限涉及两方面:
1、设置文件属性 ---- chmod指令
2、设置文件所属角色 --chown、chgrp指令
👓①chmod指令
功能:设置文件的访问权限。
格式:chmod 角色 +/- 权限 文件。
常用选项:
R ->递归修改目录文件的权限。
注意:只有文件的拥有者和root才能改变文件的权限!!
🐂+:向权限范围增加权限代号所表示的权限。
🐂 -:向权限范围取消权限代号所表示的权限。
🐂=:向权限范围赋予权限代号所表示的权限。(基本不用)
🐂用户符号:
u:拥有者
g:所属组
o:其他用户
a:所有用户
示例:
这里只显示了对单个角色的权限操作。如果我想同时操作多个角色的权限呢?
比如我想同时去掉拥有者和other的所有权限,怎么操作?
只要在中间加上逗号就可以了。
👓②chmod a-/+ 权限 文件名
a:表示all ,就是全体角色,对全体角色权限操作。
👓③没有权限
操作完权限,我们来演示一下没有权限会发生什么: