目录
首先我们先引出下面的概念帮助我们理解...
一、 Shell命令及运行原理
用户在Shell文本界面输入的指令本质上并不对Linux操作系统直接下达,而是通过一个中间媒介Shell进行翻译传递,这里我们将其称作外壳程序。这里的Shell我们可以将其理解为Windows系统中的GUI(图形化界面)。因此Linux操作系统可以从两个层面来理解:
广义上:Linux系统包含外壳程序和Linux内核
狭义上:Linux系统为Linux内核
这里的Shell是对外壳程序的一种统称,而非具体。就像我们日常生活中提到的医生、教师、程序员等是对一种职业或是一类人的统称,而非指的是具体的某个人。在Linux中具体的外壳程序是指bash进程,等同于就某种职业对应于具体的人。
Shell的作用:
1、传递请求指令,让OS执行指令
2、保护内核
当我们在进行用户登录时,Shell就会创建一个bash子进程,而Shell是bash统称,因此其本身就是一个进程。我们可以通过ps axj | grep bash指令来查看。
[xxp@VM-24-3-centos lesson3]$ ps axj | grep bash
20306 3019 3018 20306 pts/0 3018 S+ 1004 0:00 grep --color=auto bash
20305 20306 20306 20306 pts/0 3018 Ss 1004 0:00 -bash
二、Linux权限的认识
★用户分类
在Linux操作系统下存在着两类用户,分别是:
超级用户(root):拥有非常大的权限,可以在Linux下做任何事,不受限制
普通用户:拥有的权限是有限的,在Linux下做有限的事
★用户权限切换
方式一:切换用户 (su -)
上述提到的两类用户我们可以在命令编辑器shell上进行切换,假设此时我登录的是普通用户xxp(这是我自己创建的普通用户的命名), 我可以执行 su - 命令切换为超级用户root;当处在超级用户时可通过 su - 普通用户 切换为自己所创建的普通用户。如下:
[root@VM-24-3-centos ~]# whoami
root
[root@VM-24-3-centos ~]# su - xxp
Last login: Sun Aug 7 17:38:33 CST 2022 from 171.12.117.227 on pts/0
[xxp@VM-24-3-centos ~]$ whoami
xxp
[xxp@VM-24-3-centos ~]$ su -
Password:
Last login: Sun Aug 7 18:00:28 CST 2022 on pts/0
[root@VM-24-3-centos ~]# whoami
root
但当我们需要频繁在超级用户root和普通用户之间进行切换时,并不建议上述提到的方法 ;原因是su -指令进行用户切换会使得Linux操作系统创建新的bash进程。如下:
[root@VM-24-3-centos ~]# ps axj | grep bash
20305 20306 20306 20306 pts/0 25631 Ss 1004 0:00 -bash
24442 24445 24445 20306 pts/0 25631 S 0 0:00 -bash
24520 24521 24521 20306 pts/0 25631 S 1004 0:00 -bash
24604 24647 24647 20306 pts/0 25631 S 0 0:00 -bash
24647 25632 25631 20306 pts/0 25631 S+ 0 0:00 grep --color=auto bash
[root@VM-24-3-centos ~]# su - xxp
Last login: Sun Aug 7 18:00:41 CST 2022 on pts/0
[xxp@VM-24-3-centos ~]$ su -
Password:
Last login: Sun Aug 7 18:01:01 CST 2022 on pts/0
[root@VM-24-3-centos ~]# su - xxp
Last login: Sun Aug 7 18:06:18 CST 2022 on pts/0
[xxp@