1、shell命令以及运行原理
- Linux 严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用 kernel。而是通过 kernel 的“外壳”程序,也就是所谓的shell,来与 kernel 沟通
- 从技术角度,Shell 的最简单定义:命令行解释器(command Interpreter)主要包含:
(1)将使用者的命令翻译给核心(kernel)处理。
(2)同时,将核心的处理结果翻译给使用者。- 对比 windows GUI,我们操作 windows 不是直接操作 windows 内核,而是通过图形接口,点击,从而完成我们的操作(比如进入D盘的操作,我们通常是双击D盘盘符,或者运行起来一个应用程序)。
- shell 对于 Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给 Linux 内核。反馈结果在通过内核运行出结果,通过 shell 解析给用户。
- shell 是总称,具体可以有 bash / sh
2、Linux权限的概念
(1)用户种类
Linux下有两种用户:超级用户(root)、普通用户。【超级用户的命令提示符是“#”,普通用户的命令提示符是“$”】
- 超级用户(root):可以再 linux 系统下做任何事情,不受限制
- 普通用户:在linux下做有限的事情。
(2)切换用户
命令:su [用户名]
功能:切换用户。
例如,要从 root 用户切换到普通用户 user,则使用 su user。 要从普通用户 user 切换到 root 用户则使用 su root(root可以省略)/ su,此时系统会提示输入 root 用户的密码
(3)命令提权
- 普通用户:sudo [指令]【对指令提高权限】
- 输入的密码是普通用户密码
3、Linux权限管理
【1】文件访问者的分类(人)
- 文件和文件目录的所有者:u—User
- 文件和文件目录的所有者所在的组的用户:g—Group
- 其它用户:o—Others
【2】文件类型和访问权限(事物属性)
Linux 区分文件类型与后缀无关,和文件是否具有可执行权限有关
后缀的意义:方便人看;虽然 Linux 系统不区分,但是不代表其他软件不区分(gcc)
【3】文件权限值的表示方法
【4】文件访问权限的相关设置方法
(1)chmod
- 功能:设置文件的访问权限
- ❗ 补充:【root 权限不受限制】【只有文件的拥有者和 root 才可以改变文件的权限】【权限只会匹配一次】
- 常用选项:
R -> 递归修改目录文件的权限
(a)用户表示符+/-=权限字符
- 用户表示符 + / - = 权限字符
+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
=:向权限范围赋予权限代号所表示的权限- 用户符号:
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户- 实例:
(b)三位8进制数字
(2)chown
- 功能:修改文件的拥有者
- 格式:chown [参数] 用户名 文件名
- 实例:
[root@hecs-38755 109]# chown LMY T.txt【只修改拥有者】
[root@hecs-38755 109]# chown root:root T.txt【同时修改拥有者和所属组】
(3)chgrp
- 功能:修改文件或目录的所属组
- 格式:chgrp [参数] 用户组名 文件名
- 常用选项:-R 递归修改文件或目录的所属组
- 实例:
[LMY@hecs-38755 109]$ sudo chgrp root test.txt【普通用户需要提权】
[LMY@hecs-38755 109]$ sudo chown root:root T.txt【同时修改拥有者和所属组】
4、默认权限和默认权限掩码
umask
- 功能:查看或修改文件掩码
(1)新建文件默认权限 = 0666
(2)新建目录默认权限 = 0777
(3)但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到 umask 的影响。假设默认权限是 mask,则实际创建的出来的文件权限是: mask & ~umask- 格式:umask 权限值
- 说明:将(现有的存取权限)&(权限掩码的反码)后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002
- 实例:
# umask //查看
# umask 0003//设置
5、file指令
- 功能说明:辨识文件类型。
- 语法:file [选项] 文件或目录…
- 常用选项:
-c 详细显示指令执行过程,便于排错或分析程序执行的情形。
-z 尝试去解读压缩文件的内容
6、目录的权限
- 可执行权限【x】: 如果目录没有可执行权限, 则无法 cd 到目录中
- 可读权限【r】: 如果目录没有可读权限, 则无法用 ls 等命令查看目录中的文件内容
- 可写权限【w】: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件
(1)目录的可执行权限是表示你可否在目录下执行命令。
(2)如果目录没有 -x 权限,则无法对目录执行任何命令,甚至无法 cd 进入目录。进入目录和 -r 读权限无关。
(3)如果目录有 -x 权限,但没有 -r 权限,则用户可以执行命令,可以 cd 进入目录。但由于没有目录的读权限,所以在目录下,即使可以执行 ls 命令,但仍然没有权限读出目录下的文档。
7、粘滞位
- 换句话来讲, 就是只要用户具有目录的写权限,用户就可以删除目录中的文件,而不论这个用户是否有这个文件的写权限。
- 为了解决这个不科学的问题,Linux引入了粘滞位的概念。
- 【❗注:粘滞位是给目录设置的】
[root@localhost ~]# chmod +t [目录名] 【添加粘滞位】
- 当一个目录被设置为粘滞位(
chmod +t [目录名]
),则该目录下的文件只能由:
(1)超级管理员删除
(2)该目录的所有者删除
(3)该文件的所有者删除