shell 命令及其运行原理:Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。

从技术角度,shell的最简单定义:命令行解释器 主要包含:

        将使用者的命令翻译给核心(kernel)处理

        同时,将核心处理的结果翻译给使用者


Linux 权限概念:

Linux下有两种用户:超级用户(root),普通用户

超级用户:可以再linux系统下做任何事情,不受限制
普通用户:在linux下做有限的事情。
超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。

su 指令:切换用户

语法:su [用户名]

从超级用户切换到普通用户,使用 su user。

前面提到过,普通用户执行一条命令,但是没有权限,可以使用sudo command,短暂的提权,使用root身份执行命令。但是现在我们使用sudo进行提权还是不能成功,是因为系统并不信任这个用户,需要将当前用户添加到/etc/sudoersz中,后面我们再说这个配置问题。

什么是权限:

权限是约束人的(一个人或某些群体)

权限:一件事情是否允许被谁做。

Linux权限更多是文件权限

文件权限 = 人 + 文件属性

文件属性:r(读) w(写) x(执行)

文件类型:

注意:Linux和windows(文件的后缀)差别很大,Linux与文件后缀无关,但是却可以使用后缀区分文件类型。如果要使用后缀,仅仅是给用户做一个提示符来使用,后缀本质上就是文件名的一部分。gcc等工具,对文件后缀可能有要求。


文件权限相关设置方法:

我们知道文件权限=人+文件属性,因此设置权限时,设置文件属性同时又要设置文件所属角色。

chmod 指令:设置文件的访问权限,只有root和文件拥有者可以改变文件权限

语法:chmod [参数] 权限  文件名

常用选项:

R-> 递归修改目录文件权限

chmod 命令权限值格式:

(1)用户表示符 +/-= 权限字符:

(2)三位八进制数字:

chown 指令:修改文件的拥有者

语法:chown [参数] 用户名 文件名

chgrp 指令:修改文件或目录所属组

语法:chgrp [参数] 用户组名 文件名

常用选项:-R 递归修改文件或目录所属组

权限便于我们系统进行安全管理


为什么我们创建的文件或者目录,默认权限是我们看到的样子:

Linux 规定:目录起始权限 777,普通文件起始权限 666

umask 指令:查看或修改文件掩码

超级用户默认掩码值为0022,普通用户默认为0002。
系统默认配置号umask权限掩码;凡是在umask中出现的权限都必须在起始权限中去掉。

0777 -0022 =0755 :rwx r-x r-x

file 指令:辨识文件类型

语法:file [选项] 文件或目录...

常用选项:

-c 详细显示指令执行过程,便于排错或分析程序执行的情形
-z 尝试去解读压缩文件的内容

如果我们要进入一个目录,需要什么权限:

进入目录需要x权限,r权限并不影响进不进目录,而影响进入目录之后能不能查看目录文件列表
w权限也不影响进不进目录,而影响进入目录之后能不能创建文件。

为什么系统规定目录必须是777开始的:
因为所有目录被创建处理,一般都要能被进入,必须要有x权限。


粘滞位:

一般创建目录或文件都会在家目录下创建,只能自己或者root进行操作,其他人不能操作。但是可能存在这样一种情况,允许其他人对自己的文件做一些自己允许权限的操作。

我们知道,Linux是一个多用户操作系统,因此我们需要在一个公共的目录下,允许其他人对临时文件的操作。

Linux 默认公共目录tmp

在公共目录中,各个用户可以自由操作。但是在公共目录下,即使没有其他用户文件的操作权限,仍然可以可以对其进行删除操作。原因在于删除文件,不是由文件权限决定的,而是由目录所决定的。

为了解决这个问题,Linux 引入了粘滞位。

在公共目录下,允许各自rwx操作,为了禁止大家互删对方文件,需要给目录设置粘滞位。

当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由

1.超级管理员删除
2.该目录的所有者删除
3.该文件的所有者删除

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐