一. Shell命令及原理
Linux操作系统狭义上是Linux内核,广义上是指Linux内核+Linux外壳(Shell)和对应的配套程序
Linux外壳:Linux 外壳是用户与内核之间的接口,用户通过外壳与操作系统进行交互和操作。在 Linux 系统中,用户可以选择不同的外壳,比如常见的 Bash、Zsh 等。
配套程序: 工具程序和应用程序,用于完成各种任务,比如文件管理、网络通信、系统配置等。这些配套程序一起构成了一个完整的操作系统。
什么是Shell?
Shell是命令行解释器是外壳程序,作用有两个1)将用户的命令解析并传给Linux内核 2)Linux内核将命令执行完后,Shell将接执行结果返还给用户 windows下的外壳程序就是图形化界面
Shell如何执行的?(后面会详细讲)
-
用户输入命令: 用户在 Shell 提供的命令行界面中输入命令,比如
ls
(列出目录内容)、cd
(切换目录)等。 -
解析命令: Shell 解析用户输入的命令,并根据命令的语法和结构进行解析,确定命令的名称、参数和选项等信息。
-
查找命令: Shell 在系统的路径(PATH)中查找用户输入的命令对应的可执行文件。系统会按照 PATH 中的顺序依次查找,找到后就可以执行该命令。
-
创建子进程: 如果找到了要执行的命令,Shell 会创建一个子进程来执行该命令。这样可以保持 Shell 进程和要执行的命令进程的独立性,互不干扰。
-
加载程序: 子进程加载命令对应的可执行文件到内存中,准备执行。
-
执行程序: 子进程开始执行加载到内存中的程序,按照用户输入的命令参数和选项进行相应的操作。
-
等待命令执行完成: Shell 父进程会等待子进程执行完毕,并获取子进程的执行结果,然后显示给用户。
-
返回结果: 最终,Shell 将命令执行的结果输出到屏幕上供用户查看。
Shell是外壳总称,不同的系统有不同的shell,Centos7的Shell是bash,windows下的就是图形化界面
说完了关于Shell的原理那为什么要有Shell呢?
用户在用Linux操作系统时,是不会直接对操作系统进行使用,就是通过Shell,因为操作系统是非常复杂的东西,一般人不经过深度学习是无法直接使用操作系统,所以就有了Shell外壳程序,降低了技术门槛,简化了成本
二. 权限
2.1: 权限的概念
root:超级用户(基本不受权限的约束)
普通用户:我们新建的用户(受权限约束)
(Linux中所有的用户都要有密码,无论是root还是其他,即便是多个普通用户,也要设置密码,建议设置不同密码)
adduser:创建新用户
在root用户下,使用 useradd
命令创建新用户:在终端中输入以下命令,用 useradd
命令创建新用户。比如,创建一个名为 newuser
的新用户:
useradd newuser
设置新用户的密码:使用 passwd
命令为新用户设置密码,输入以下命令并按照提示设置密码:
passwd newuser
(可选)设置新用户的家目录和其他属性:如果需要设置新用户的家目录、Shell 类型等其他属性,可以使用 useradd
命令的参数来指定。比如,设置新用户的家目录为:/home/newuser
usermod -aG sudo newuser
sudo command:对一条指令进行暂时提权,以root的身份运行(目前我们用adduser新建的用户没有颁发执行sudo,系统不信任你,除非未来将普通用户添加到系统的信任列表里)
2.2Linux权限管理
2.2.00. Linux下有两种用户:超级用户(root)、普通用户。
-
su +用户名
:使用su +用户名
的方式进行切换用户时,并不会改变当前环境变量,即当前用户的环境变量(如 PATH、HOME 等)会继续保留。这样可能导致一些权限或者路径等方面的问题,因为切换后的用户环境变量并未加载。 -
su - +用户名
:使用su - +用户名
的方式进行切换用户时,会以切换后的用户的身份完全登录到一个新的 shell 会话中,同时加载新用户的环境变量,包括 HOME 目录、PATH 等。这样可以确保切换后的操作环境和权限与目标用户一致,避免出现一些意想不到的问题
2.2.01.文件访问者的分类(人)
dev
组,将所有开发人员添加到该组中,以便他们可以访问和修改需要开发的文件和目录。举个例子a,b,c三个人。a写了一份代码不想让c看到,但想让b看到,a就可以把b拉进自己的所属组,打开所属组的权限,关闭 oher 的权限就可以了。
2.2.03.文件权限值的表示方法
Linux表示 | 说明 | Linux表示 | 说明 |
r-- | 只读 | -w- | 只写 |
--x | 仅可执行 | rw- | 可读可写 |
-wx | 可写可执行 | r-x | 可读可执行 |
rwx | 读写执行 | - - - | 无权限 |
权限符号(读写执行) | 八进制 | 二进制 |
r | 4 | 100 |
w | 2 | 010 |
x | 1 | 001 |
rw | 6 | 110 |
rx | 5 | 101 |
wx | 3 | 011 |
rwx | 7 | 111 |
- - - | 0 | 000 |
2.2.04.文件访问权限的相关设置方法
chmod u+w /home/abc.txt
chmod o-x /home/abc.txt
chmod 664 /home/abc.txt
b)chown
[root@localhost ~] chmod +t /home/ # 加上粘滞位
[root@localhost ~] ls -ld /home/
drwxrwxrwt. 3 root root 4096 9月 19 16:00 /home/
[root@localhost ~] su - litao
[litao@localhost ~] rm /home/abc.c #litao不能删除别人的文件
rm:是否删除有写保护的普通空文件 "/home/abc.c"?y
rm: 无法删除"/home/abc.c": 不允许的操作