XShell原理+权限
- 1. Shell命令以及运行原理
-
* 1.1 Shell外壳
- 1.2 shell周边知识
- 2. Linux权限的概念
-
* 2.1 用户
- 2.2 用户切换
- 2.3 sudo
- 3. Linux权限管理
-
* 3.1 文件访问者的分类
- 3.2 文件类型
- 3.3 file指令
- 3.4 文件访问权限
- 3.5 文件权限值的表示方法
- 4. 文件访问权限的设置方法
-
* 4.1 chmod指令
- 4.2 chown指令
- 4.3 chgrp指令
- 4.4 umask指令
- 5. 目录权限
- 6. 粘滞位
1. Shell命令以及运行原理
1.1 Shell外壳
- Shell外壳:也称为Shell环境,是用户和操作系统内核进行交流的界面和通道,即:是提供命令输入和执行环境的平台。相当于Windows的图形化界面。
- Shell命令:是用户在Shell环境中输入的指令。这些指令会被传递给Shell解释并传递给操作系统执行。
1.2 shell周边知识
- 为什么要有Shell外壳程序?
- Shell提供了用户界面、即:命令行解释器,因为用户不能直接访问操作系统,用户通过它输入命令与操作系统进行交互;
- 简化操作、由于操作系统本身的易用程度,Shell降低了用户的操作成本和学习成本;
- 保护操作系统、用户不能直接访问内核,在输入命令时,Shell会进行检查,对于非法指令,直接进行拦截,从而降低了系统受到恶意攻击或误操作的风险;
- 支持多任务处理、Shell通过创建子进程,实现了并发执行和多任务处理,提高了系统的效率和响应速度。
- Shelll外壳程序是什么?
Shell外壳程序,也称为Shell,是存在于操作系统之上的"命令行解释器",是面向用户的命令接口(存在于用户和内核之间,需求指令
执行结果)。在Linux中,Shell将用户输入的命令翻译给操作系统内核进行处理,同时,将内核的处理结果翻译给用户。Shell相当于"媒婆"、bash相当于"王婆",两者功能相同,都是命令行解释器。
- Shell工作原理怎么实现?
Shell本质是一个执行起来的程序,即:进程,在系统启动期间,一直存在。对于有风险、用户自定义的指令,Shell通过创建子进程的方式,让子进程去执行有风险的命令。
![image.png](https://img-
blog.csdnimg.cn/img_convert/acd48d7b19d6e2c3aae2eaeba6d4fe72.png)
- 每次进行XShell登入时,系统都会给这个用户的当前登入,分配一个Shell,相当于"人手一个Shell"。只是将XShell软件启动,并未登入,不会生成Shell。
💡Tips :用户不能直接访问操作系统。
![image.png](https://img-
blog.csdnimg.cn/img_convert/a9a628b9595e6a01d2d96e4aeeecc802.png)
2. Linux权限的概念
2.1 用户
- 超级用户:root,拥有系统的最高权限,不受任何权限限制,可以对Linux系统进行不受限制的任何操作。
- 普通用户:权限受限制,对Linux系统进行有限的操作。
- 区别:超级用户的命令提示符是"#“,普通用户的命令提示符是”$"。
![image.png](https://img-
blog.csdnimg.cn/img_convert/c9e3be55cdae4277b6e934fcd002dcc5.png)
2.2 用户切换
- 普通用户切换成root:有两种方式,都需要输入root账号的密码,su -,以root的身份重新登入,当前所处的工作目录发生改变,变为/root;su,用户切换为root,当前所处的工作目录未发生改变。
![image.png](https://img-
blog.csdnimg.cn/img_convert/473c938dd13ec6919e9af8c20217e531.png)
- 超级用户切换成普通用户,su 普通用户名,进行用户切换,不需要输入密码,当前所处的工作目录未发生改变。
![image.png](https://img-
blog.csdnimg.cn/img_convert/a8dbe591b363464fd5440e31ec2545b7.png)
- 普通用户1切换成普通用户2,su 普通用户名2,进行用户切换,需要输入普通用户2的密码,当前所处的工作目录未发生改变。
![image.png](https://img-
blog.csdnimg.cn/img_convert/e0a22dd9dff33b796337c92286cee72a.png)
2.3 sudo
语法:sudo 命令
功能:对指定的指令进行提权。普通用户不想把自己变成root,但我想以root的身份去执行指定的命令,此时只需要输入普通用户的密码,就可以以超级用户的身份去执行。
- 默认大部分是不能执行sudo,因为需要root把普通用户添加到sudoers配置文件中,如果普通用户在sudoers文件中,允许这个用户执行sudo、如果普通用户不在sudoers文件中,不允许这个用户执行sudo。
![在这里插入图片描述](https://img-
blog.csdnimg.cn/direct/5fec88ab4ef04567bd29d44f9a468e76.png#pic_center)
3. Linux权限管理
- 在生活中,具有权限的事例,一般有爱奇艺VIP、助学金等,权限一定限制人,能不能做某件事,而对应的操作对象,一定要有对应满足人需求的属性,eg:不能在爱奇艺上刷在线oj题,爱奇艺不具有刷题属性。
- 在Linux文件权限上,Linux群体,更多的是人扮演的角色(拥有者、所属组、其他用户)、Linux操作对象的属性,因为Linux下一切皆文件,所以为Linux文件权限的属性,文件基本的权限为读®、写(w)、可执行(x)。
3.1 文件访问者的分类
- 拥有者:u(user),文件的创建者。
- 所属组:g(group),一个或多个用户组成一组,以某个用户名为组名,组内所有的用户共享相同的访问权限。
- 所属组的作用:a.简化权限管理:可以为组内所有用户定义统一的访问权限,无需为每个用户单独设置权限,简化了权限的管理过程,提高了系统的可维护性。b.共享资源:让一组用户共享对特定资源的访问权限,如多人协作。
- 其他用户:o(others),只要不是拥有者和所属组的用户都是其他用户。
![image.png](https://img-
blog.csdnimg.cn/img_convert/672a4d5a45d0d234691c85b0276269f1.png)
3.2 文件类型
- 普通文件(-) :如文本、源代码、图像、视频、库、可执行程序等。最常见的文件类型,用于存储数据。
- 目录文件(d) :用于组织和存储其他文件和目录。
- 链接文件(l) :特殊类型的文件,主要分为硬链接和软链接(符号链接)。
- 软链接是个特殊的文件,软链接的格式"ln -s 源文件 软链接文件",表示创建一个新的软链接文件,该文件指向指定的源文件,相当于Windows中文件属性的快捷方式,不占用额外的磁盘空间,不包含源文件的实际内容,保存了指向源文件的路径信息,因此,软链接文件可以间接的访问和操作源文件(对软链接文件的操作,就是对源文件进行操作),如果源文件被移动、删除、重命名,则软链接将会失效。
- 管道文件§ :特殊类型的文件,用于不同进程间的信息传递。一个进程可以将数据写入到管道的一端,另一个进程可以从管道的另一端读取数据。
- 块设备文件(b) : 如硬盘(支持随机访问)。Linux下为/dev/vda*。
- 字符设备文件© :如键盘、显示器、鼠标等(不支持随机访问)。Linux下为/dev/ttyy*、/dev/pts。
![image.png](https://img-
blog.csdnimg.cn/img_convert/ad3d627a3e3f652a0ab81806a309be38.png)
- 套接口文件(s) : socket文件。
Linux下文件类型不通过后缀名来区分,Linux系统本身并不依赖文件后缀名,但在实际的使用中,许多Linux工具和应用程序会根据文件后缀名来推测文件类型,从而决定如何打开或处理这个文件。eg
:编辑器、编译器、命令等。
Windows中文件类型通过后缀名来标识,文件类别决定着它能被哪些软件操作。
3.3 file指令
语法:file 文件或目录
- 功能:查看文件类型。
3.4 文件访问权限
- 读® :read读权限,对于文件来说,具有读取文件内容的权限、对于目录来说,具有对文件属性信息查看的权限。
- 写(w) :write写权限,对于文件来说,具有修改文件内容的权限、对于目录来说,具有在该目录下进行新建和删除、重命名文件的权限。
- 可执行(x) : execute可执行权限,对于文件来说,具有可执行文件的权限、对于目录来说,具有进入该目录权限。
- 💡Tips 1:一个文件可执行,需要具备两个条件,具有可执行权限、本身必须是一个可执行程序。
- 💡Tips 2 :文件的权限匹配是一个顺序匹配的过程,首先,系统会判断访问者的身份,根据访问者的身份(拥有者、所属组、其他用户)依次进行匹配,然后系统会匹配访问者身份对应的权限,根据这个权限来决定是否允许这个访问者对文件进行读、写、执行操作。 -》 只要匹配到了访问者的身份就立即停止匹配,即:只会匹配一次。
![image.png](https://img-
blog.csdnimg.cn/img_convert/d77035edd3f42d0b412789cbbe924d0a.png)
3.5 文件权限值的表示方法
![image.png](https://img-
blog.csdnimg.cn/img_convert/8c6e0f88f04f37e83b6eaee9a92c48df.png)![image.png](https://img-
blog.csdnimg.cn/img_convert/d0827db67c26e06157891100d8ef234d.png)
4. 文件访问权限的设置方法
4.1 chmod指令
语法: chmod [选项] 权限 文件名
- 功能:设置文件的权限。
常用选项:
-R : 递归式修改文件、目录及其目录下文件、子目录的权限。
- 💡注意 :只有文件的拥有者、root、进行sudo的普通用户才能更该文件的权限。
chmod命令权限值的格式:
- 用户表示符+、-权限字符
- u : 文件的拥有者。
- g : 文件的所属组。
- o:文件的其他用户。
- a :所有用户,包括拥有者、所属组、其他用户。
* :向权限范围取消权限代号所表示的权限。
- +:向权限范围增加权限代号所表示的权限。
![image.png](https://img-
blog.csdnimg.cn/img_convert/08136301a3f7983e32507ccf49467d33.png)
- 三位8进制数字(000~777)
![image.png](https://img-
blog.csdnimg.cn/img_convert/1d7295b485e8f19045c9faca4e7ab81a.png)
4.2 chown指令
语法:chown [选项] 用户名 文件
- 功能:修改文件的拥有者。
- 💡注意 :只有root、进行sudo的普通用户才能更该文件的拥有者。
![image.png](https://img-
blog.csdnimg.cn/img_convert/539753a39c80a86e9009a6fab7b47e0b.png)![image.png](https://img-
blog.csdnimg.cn/img_convert/30ddfbed6e85f24967937d6e9dba4069.png)
- chown 拥有者:所属组 文件:同时更改文件的拥有者和所属组。
4.3 chgrp指令
语法:chown [选项] 用户名 文件
- 功能:修改文件的所属组。
- 💡注意 :只有root、进行sudo的普通用户才能更该文件的拥有者。
![在这里插入图片描述](https://img-
blog.csdnimg.cn/direct/eb67cc6fd6144659a8813cd4cfc5d35d.png#pic_center)
4.4 umask指令
语法:umask
- 功能:umask为权限掩码,定制一个文件或目录在被创建时的默认权限(最终权限)。
- 修改umask值语法:umask xxx,xxx是三位八进制数字,eg:umask 022。这样的修改通常是临时的,重启系统会还原为默认值。
- 文件的起始权限为666,目录的起始权限为777。
- 默认(最终)权限计算公式 = 起始权限 & (~umask值) , 本质是从起始权限中去掉在umask权限中出现的权限,如果在起始权限中某权限位不存在,但umask中该权限位存在,该权限位的结果为0,"去掉"不是删除。
![image.png](https://img-
blog.csdnimg.cn/img_convert/9a31c9f8b3046e469a9069fdd73f7876.png)
5. 目录权限
- x权限:决定着是否可以进入到目录中;
- r权限:决定着是否可以查看该目录下的文件属性信息(ls -l)。
- w权限:决定着是否能在该目录下进行新建、删除文件、对文件重命名操作。
- 注意:一个文件能否被删除,不取决与文件本身,而是取决于文件所在的目录,是否具有w权限。
6. 粘滞位
粘滞位
(t):给共享目录/tmp中的other设置了一个权限位,它既具有x权限的意义,又保证了只有文件的拥有者、root、进行sudo的用户才能删除该文件,其他人不能删除此文件。
Tips:粘滞位的大背景是多个用户在共享目录中进行数据共享。
- 在/tmp下,可以实现多个用户进行数据共享,/tmp目录将所有用户rwx权限全部放开了,意味着任何用户都可以在/tmp目录下创建文件,由于这些文件是临时的,且可能被其他用户或者系统进程删除,从而导致数据丢失或系统不稳定,就引入了粘滞位。
![image.png](https://img-
blog.csdnimg.cn/img_convert/17a9b319df48a6e5e3314d64e17ecdd2.png)
- tmp目录主要的作用和特点:用于存放临时文件、所有用户都可以访问、自动清理(/tmp目录在系统启动时自动清理临时文件)、不保持持久性等。
- 粘滞位确保了每个用户只能管理自己创建的文件,而不能随意操作其他用户的文件。它保护了每个用户的数据不被其他用户误操作或恶意破坏。它使得共享目录中的数据共享更加安全和可靠。
学习网络安全技术的方法无非三种:
第一种是报网络安全专业,现在叫网络空间安全专业,主要专业课程:程序设计、计算机组成原理原理、数据结构、操作系统原理、数据库系统、 计算机网络、人工智能、自然语言处理、社会计算、网络安全法律法规、网络安全、内容安全、数字取证、机器学习,多媒体技术,信息检索、舆情分析等。
第二种是自学,就是在网上找资源、找教程,或者是想办法认识一-些大佬,抱紧大腿,不过这种方法很耗时间,而且学习没有规划,可能很长一段时间感觉自己没有进步,容易劝退。
第三种就是去找培训。
接下来,我会教你零基础入门快速入门上手网络安全。
网络安全入门到底是先学编程还是先学计算机基础?这是一个争议比较大的问题,有的人会建议先学编程,而有的人会建议先学计算机基础,其实这都是要学的。而且这些对学习网络安全来说非常重要。但是对于完全零基础的人来说又或者急于转行的人来说,学习编程或者计算机基础对他们来说都有一定的难度,并且花费时间太长。
第一阶段:基础准备 4周~6周
这个阶段是所有准备进入安全行业必学的部分,俗话说:基础不劳,地动山摇
第二阶段:web渗透
学习基础 时间:1周 ~ 2周:
① 了解基本概念:(SQL注入、XSS、上传、CSRF、一句话木马、等)为之后的WEB渗透测试打下基础。
② 查看一些论坛的一些Web渗透,学一学案例的思路,每一个站点都不一样,所以思路是主要的。
③ 学会提问的艺术,如果遇到不懂得要善于提问。
配置渗透环境 时间:3周 ~ 4周:
① 了解渗透测试常用的工具,例如(AWVS、SQLMAP、NMAP、BURP、中国菜刀等)。
② 下载这些工具无后门版本并且安装到计算机上。
③ 了解这些工具的使用场景,懂得基本的使用,推荐在Google上查找。
渗透实战操作 时间:约6周:
① 在网上搜索渗透实战案例,深入了解SQL注入、文件上传、解析漏洞等在实战中的使用。
② 自己搭建漏洞环境测试,推荐DWVA,SQLi-labs,Upload-labs,bWAPP。
③ 懂得渗透测试的阶段,每一个阶段需要做那些动作:例如PTES渗透测试执行标准。
④ 深入研究手工SQL注入,寻找绕过waf的方法,制作自己的脚本。
⑤ 研究文件上传的原理,如何进行截断、双重后缀欺骗(IIS、PHP)、解析漏洞利用(IIS、Nignix、Apache)等,参照:上传攻击框架。
⑥ 了解XSS形成原理和种类,在DWVA中进行实践,使用一个含有XSS漏洞的cms,安装安全狗等进行测试。
⑦ 了解一句话木马,并尝试编写过狗一句话。
⑧ 研究在Windows和Linux下的提升权限,Google关键词:提权
以上就是入门阶段
第三阶段:进阶
已经入门并且找到工作之后又该怎么进阶?详情看下图
给新手小白的入门建议:
新手入门学习最好还是从视频入手进行学习,视频的浅显易懂相比起晦涩的文字而言更容易吸收,这里我给大家准备了一套网络安全从入门到精通的视频学习资料包免费领取哦!