Linux:权限相关知识详解
常用的基本指令已经讲解完毕啦:探索Linux世界:基本指令(文件查看、时间相关、grep、打包压缩及相关知识)
今天接着进行权限相关知识的详解
1.shell命令以及运行原理
1.1初步理解认识shell
Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel。而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。如何理解?为什么不能直接使用kernel?
从技术角度,Shell的最简单定义——命令行解释器(command Interpreter)主要包含:
- 将使用者的命令翻译给核心(kernel)处理
- 然后将核心的处理结果翻译给使用者
为什么不直接使用kernel?
- 权限控制: 内核是操作系统的核心部分,具有最高的权限和特权。直接操作内核需要特殊的权限和系统级别的编程知识。一般用户通常没有这样的权限和知识,因此不能直接使用内核。
- 抽象层: 内核提供了系统调用接口供用户空间程序调用,这些系统调用封装了底层硬件操作和资源管理。通过Shell作为用户与内核之间的接口,用户可以通过简单的命令来调用内核提供的功能,而不需要了解底层的实现细节。(没有外壳,我们想要使用操作系统,那就要理解学习内核,这个太难)
- 安全性: 直接操作内核可能会导致系统不稳定或产生安全漏洞。通过Shell作为外壳程序,用户的操作受到一定的限制和保护,可以避免误操作或恶意操作对系统造成损害
即考虑到易用性和安全性
1.2运行原理
Shell程序本身也是一个可执行程序,通常存储在系统的特定路径下(如/bin/bash
、/bin/sh
等)。不同的Shell程序有不同的特性和功能,常见的Shell包括:
- Bash(Bourne Again Shell): 是Linux系统中最常用的Shell,也是默认的Shell。Bash具有丰富的功能和扩展性,支持脚本编程。
- Sh(Bourne Shell): 是Unix系统中较早的Shell,具有基本的命令解释功能。
- Zsh(Z Shell): 是一种功能更加强大和交互性更好的Shell,提供了更多的特性和定制选项。
- Fish Shell: 是一种用户友好的Shell,具有语法高亮、自动补全等功能。
注意:
-
shell的本质其实也是一个执行起来的程序(进程),系统启动登录期间就一直存在,当用户需要的操作是有风险的,shell都是通过创建子进程的方式让子进程去执行有风险的指令。
-
当我们没有登录到服务器时是不存在shell的,每次进行xshell登录时,OS都要给你这个用户的当前登陆,新启动一个shell——bash
Shell命令是用户在命令行界面输入的指令,用于与操作系统进行交互。Shell命令的运行原理可以简单概括为以下几个步骤:
用户输入命令: 用户在Shell的命令行界面输入要执行的命令,比如
ls
(列出当前目录下的文件和文件夹)。Shell解析命令: Shell会解析用户输入的命令,识别命令名称、选项和参数等内容。例如,对于命令
ls -l
,Shell会识别ls
为命令名称,-l
为选项。执行命令: Shell根据解析后的命令信息,调用相应的系统程序或脚本来执行命令。在上面的例子中,Shell会调用系统的
ls
程序来列出文件和文件夹。命令执行过程: 在命令执行过程中,Shell会创建一个子进程来运行该命令,同时监控该子进程的执行情况。子进程会执行相应的操作,比如列出文件、运行程序等。
命令执行完成: 当子进程执行完毕后,Shell会将执行结果输出到终端,并等待用户输入下一个命令。
总的来说,Shell命令的运行原理:用户输入命令 -> Shell解析命令 -> 执行命令 -> 输出结果