![权限提升技术:攻防实战与技巧](https://wfqqreader-1252317822.image.myqcloud.com/cover/448/50053448/b_50053448.jpg)
1.3 Linux提权基础知识
本节将简单介绍Linux系统中与权限相关的知识,如Linux用户和用户组、Linux文件权限、Linux特殊权限等。
1.3.1 用户
只要是操作系统,就会涉及“用户”这个概念。Linux是一个支持多用户、多任务的操作系统,可以根据特定的任务来创建不同的用户,每个用户都有自己的用户名和密码。各用户可以同时登录操作系统,可以在自己的目录中存储个人文件,而不会干扰其他用户。
Linux操作系统引入了UID(User ID)和GID(Group ID)的概念来识别用户身份。每个用户都有独一无二的UID。根据UID的不同,可以将用户分为3种类型,即超级用户(root)、普通用户(User)和系统用户(伪用户),如图1-39所示。
❑超级用户:默认用户名为root。它拥有Linux系统的最高权限,可以对系统进行任何操作,如读取和修改文件、创建用户、安装软件、启动系统服务等。在实际环境中,为了系统安全,一般禁止root账号通过SSH远程登录服务器。该用户类型默认只有一个用户,UID固定为0。
❑普通用户:是为了能够使用Linux资源而建立的用户,普通用户可在指定的权限内执行有限的操作。该类型的用户一般由超级用户创建,UID通常大于1000。
❑系统用户(伪用户):系统用户是一种特殊的用户,用于运行特定的服务或程序,如bin、mail等。Linux系统为该类型用户预留了1~999的UID范围值。该类用户无法登录系统。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/38_01.jpg?sign=1739278682-XMXTTiAHIA2vAxu9mi1UPqUoLOxiH8cR-0-a6dc90d5b2fef0ed2a3f7f8dd49d561b)
图1-39 3种用户类型
在CentOS的不同版本下,UID设定范围是不同的,如表1-7所示。
表1-7 不同CentOS版本的UID设定范围
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/38_02.jpg?sign=1739278682-VPuoVsgip71TiA5bUTN1EHi1sfa2mCTn-0-67e261e3cbf6e1b5620b59c52de3758b)
1.3.2 用户组
Linux的用户组与Windows的用户组在作用上有相似之处,都是为了让多个用户拥有相同的权限或访问限制。将需要授权的用户添加到同一个用户组里,通过修改文件或目录的所属组,可以让该用户组下的所有用户具有相同的权限,从而方便地管理文件和目录的访问权限。
Linux下的用户组可以分为以下两类。
❑基本组(私有组):在建立用户账户时,若没有指定账户所属的组,那么系统会建立一个和用户名相同的组,此用户组的编号和用户的ID(UID)相同,这个组就是基本组。
❑附加组(公有组):可以容纳多个用户,组中的所有用户都具有该组所拥有的权限。
在Linux系统中,每个用户必定属于一个用户组。默认情况下,每个用户的基本组名称与用户名相同。此外,每个用户还可以属于多个附加组,Linux系统默认允许一个用户最多属于31个附加组。
用户和用户组的关系有一对一、一对多、多对一和多对多几种,如图1-40所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/39_01.jpg?sign=1739278682-IFxWRu5ZON2oVos2MmeBlI3u2EXVg6ry-0-b3b7bfc60be0f56860a9b322471514e2)
图1-40 用户和用户组的关系
1.3.3 用户配置文件
在Linux系统中,用户可以通过用户名和密码登录系统。在登录过程中,系统将用户名和密码发送到认证模块进行验证。认证模块首先会读取/etc/passwd文件来验证用户名是否存在,并且根据用户名查询相应的密码信息。如果用户名不存在,则返回认证失败的信息;如果用户名存在,则会将用户输入的密码进行加密处理,并与/etc/shadow文件中存储的密码密文进行对比,如果用户输入的密码与存储的密码匹配,则认证成功,否则认证失败。如果认证成功,那么系统会加载用户环境并启动对应的Shell。
表1-8列出了与Linux用户相关的主要配置文件。
表1-8 与Linux用户相关的主要配置文件
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/39_02.jpg?sign=1739278682-rSCb8hicmVUWCB57oL923RxVIj5Z3KpS-0-defdad2d2ae5d8a43ad2881a537099ac)
1.账户文件
/etc/passwd是用于定义用户账户的系统文件。该文件中存储了每个用户的用户名、密码、用户ID、用户组ID、主目录以及登录时使用的Shell等信息。所有用户都可以读取该文件。
执行如下命令可以查看用户账户文件,如图1-41所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/39_03.jpg?sign=1739278682-LQIvpfaOrgMFdJjLXn6TWrRcZtq4L6ip-0-e12b849e9dd6ca3394ab7d4655c4d575)
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/40_01.jpg?sign=1739278682-U4H7VhqoaCEAVoKCkPiBUpXLombFdmxd-0-1125798510678cc7c0855ba157891cef)
图1-41 /etc/passwd文件内容
/etc/passwd文件中的字段以“:”分隔,共有7个字段。对字段的解释如图1-42和表1-9所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/40_02.jpg?sign=1739278682-ktNuB7wisGrh1DCA09W2sSpsOvFEY48D-0-68fde19a5234033d619935b8f349dac3)
图1-42 /etc/passwd文件信息
表1-9 /etc/passwd文件的字段及其含义
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/40_03.jpg?sign=1739278682-Bi0tv2BPC77mHnfY8GHYO3qTMWvHzlOg-0-fdc6467652c00b004d86097373f3e3a2)
2.密码文件
/etc/shadow是Linux系统中用于存储用户密码信息的文件。该文件中存储了每个用户加密后的密码、密码最后更改的时间、密码过期时间、密码锁定时间等信息。只有超级用户或shadow组成员才能读取该文件。
执行如下命令可以查看用户密码文件,如图1-43所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/41_01.jpg?sign=1739278682-odZ4toyqR2P31TA60CNrU5vldxgNURoQ-0-ef8bfbe07e91650898d2ed28a41fae35)
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/41_02.jpg?sign=1739278682-tM2sic8oSoUWCmOqx7pMgnUc1E0xXStA-0-a3dadcf1ccfd3e2ea310492048962ec1)
图1-43 /etc/shadow文件内容
/etc/shadow文件的字段说明如图1-44所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/41_03.jpg?sign=1739278682-EAwmrbohc5WNS3lARgD3QnxDGtlTFsok-0-f977032958197c5b167ca4da3e43008a)
图1-44 shadow文件信息
/etc/shadow文件中的字段以“:”分隔,共有9个字段。对字段的解释如表1-10所示。
表1-10 /etc/shadow文件的字段及其含义
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/41_04.jpg?sign=1739278682-sPP2lFuSgNwk7WwSbMWQtcfbrOJcDIeE-0-266356127735720da14e54b199baf81b)
3.用户组文件
/etc/group是用于存储用户组信息的系统文件。该文件中存储了每个用户组的组名称、组密码、用户组ID、组成员列表等信息。系统中的每个组在文件中都有一行记录,任何用户均可以读取用户组文件。
执行如下命令可查看用户组文件,如图1-45所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/42_01.jpg?sign=1739278682-DEBB9jVe7DM2PfEL0G7Ff3eZZXYS7Z4R-0-9ce3d1f000ba6a59452ae7e6097484b9)
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/42_02.jpg?sign=1739278682-j2Clw0EZH1WSFucZk3kX5cJqAO8Je2k4-0-4f5ea902f1f431d2e43964b9ac9ae961)
图1-45 /etc/group文件内容
/etc/group文件的字段说明如图1-46所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/42_03.jpg?sign=1739278682-tCvPd0qqcPb3X4IOFAC0lIbnHUhPniRO-0-c3d851a9cd28af982249f683e67a5ce6)
图1-46 /etc/group文件信息
/etc/group文件中的字段以“:”分隔,共有4个字段。对字段的解释如表1-11所示。
表1-11 /etc/group文件的字段及其含义
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/42_04.jpg?sign=1739278682-VpboVntPDfGL7HXrqDL6NbCulVhsnhdK-0-b2545ee21b4310be45255155bebf541b)
4.用户组密码文件
/etc/gshadow是用于存储用户组密码的系统文件,与用户组配置文件/etc/group相对应,记录了用户组密码的相关信息。
执行如下命令可以查看用户组密码文件,如图1-47所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/43_01.jpg?sign=1739278682-F7AYj4HQVQx5tuWeKyJhNZiyUQmRZaF5-0-fe9f8c3f5362a95d38036acc91f75277)
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/43_02.jpg?sign=1739278682-l8e63d1SSAQIGNXrasQhJ0RumZtreY0m-0-376297dc0d3ac74ec7bb911ca7b4114a)
图1-47 /etc/gshadow文件内容
/etc/gshadow文件的字段说明如图1-48所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/43_03.jpg?sign=1739278682-Y5diYNwjbssX4rx6ZGQRJGm6js0cpj2K-0-3f44cd12d04731908ab14fa6d0830564)
图1-48 /etc/gshadow文件信息
/etc/gshadow文件中的字段以“:”分隔,共有4个字段。对字段的解释如表1-12所示。
表1-12 gshadow文件的字段及其含义
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/43_04.jpg?sign=1739278682-KB4VxglkHWuu9mRZoJ7pR2EtOGY5uhfY-0-af1ed34f85b6ad278cfe96fb938d1a53)
1.3.4 用户管理相关命令
在渗透测试中,有时需要进行用户或用户组添加、密码更改和权限设定等操作,所以掌握用户管理的相关命令是非常重要的。
1.添加用户
在Linux系统中,可以使用useradd命令新建用户。此命令的格式如下:
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/43_05.jpg?sign=1739278682-SRWsoZYj3FOmGJR19zlDBtOiL5ByfaFm-0-b6a5d452cf73967808d62f56e9a89a32)
该命令的常用参数如表1-13所示。
表1-13 useradd命令的常用参数
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/44_01.jpg?sign=1739278682-8YuXKf9JsYqw5HRlJeAI5BGCuo0pcrgx-0-1282ea53ba8f3c43db741e5b13527674)
useradd命令使用示例1:
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/44_02.jpg?sign=1739278682-m7eNfKHTSN6OEXIGLCXLHufl31IKpmKi-0-759d4f7682c1ecf9664ca4bfa229abdf)
上面第一条命令表示创建一个名为“linux”的普通用户,第二条命令表示创建一个名为“apache”的新用户,不为其创建家目录,并指定其默认的Shell为/sbin/nologin,即不允许登录。
useradd命令使用示例2:
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/44_03.jpg?sign=1739278682-4tQEU8GyJw0mVnPOpy9tI9kPTG26MYZB-0-1c7cabb150c491113530a2a0789618f0)
该命令表示创建一个名为whoami的普通用户,指定其UID为1003,登录Shell为/bin/bash,账号永不过期,如图1-49所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/44_04.jpg?sign=1739278682-UsaWiUYRz8YhUDwhJUIIyODUNoBVamA9-0-7708f4d3685f824bcb2730257f667ef8)
图1-49 创建用户示例
创建用户的同时还会创建一个与用户名相同的用户组,在/home/目录下会创建一个名为whoami的目录,这就是whoami用户的家目录。
还有一个用来添加用户的命令“adduser”,adduser和useradd这两个用户创建命令之间的区别如下。
❑adduser:并不是标准的Linux命令,本质是一个perl脚本,也是调用的useradd命令。adduser可以以更友好的交互式方式来添加用户,会自动为创建的用户指定主目录和Shell信息,会在创建时提示输入用户密码和个人信息。
❑useradd:需要使用参数指定基本设置,如果不使用任何参数,则创建的用户无密码,无法登录系统。
在实际的渗透测试中可能无法获取交互式的Shell来执行添加用户并设置密码等命令,那么可以使用如下的一句话命令添加一个带密码的用户,如图1-50所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/45_01.jpg?sign=1739278682-WAPWyyrTO8EXOQyOPYEi1xMDs80Y3SyZ-0-82ac4806ab8e9efd2e5981d79221a960)
上面使用openssl passwd命令来生成一个基于明文密码(即“password”)和盐值(即“suiyi”)计算出来的哈希值。接下来,该哈希值会作为参数传递给useradd命令,以设置新用户的密码。该命令表示创建一个用户名为“yonghu”、密码为“password”的普通用户。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/45_02.jpg?sign=1739278682-C1FGnmhSaqf8Axik70XmljxIh6S6swLN-0-6c865a9047acf9a729fd0aae47ab66ef)
图1-50 使用一句话命令添加一个带密码的用户
如下命令可在非交互式Shell下添加root用户,如图1-51所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/45_03.jpg?sign=1739278682-tTjaX2ECs234jjhKZxMupHjElnvPwvVx-0-1e815a63842c989ab68ae57bfdd2d400)
该命令表示创建一个用户名为“rootyh”、密码为“password”的root用户。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/45_04.jpg?sign=1739278682-V8uvGX69SeTrY9gtQrc672gbgBTp0wHi-0-62e56f8bfe0c946ec5a60cc04b0ea423)
图1-51 添加root用户
命令参数解释如图1-52所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/45_05.jpg?sign=1739278682-k5pwyusvhVI1Qc58rTUCJwql0oGtxLbD-0-f6efd9f0e1880aaf7ff29737abc35e3c)
图1-52 添加用户命令参数解释
2.设置密码
在Linux系统中,使用passwd命令可以为当前用户修改密码,或为指定的某个用户修改密码。普通用户修改密码时需要输入原密码,root用户可以随意修改其他用户的密码。此命令的格式如下:
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/46_01.jpg?sign=1739278682-omUCxWLfkT4GJC7I5T2d2fhkNrFlukdH-0-76b84d1a6d8ff0c9f65ef0155dbc4606)
该命令的常用参数如表1-14所示。
表1-14 passwd命令的常用参数
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/46_02.jpg?sign=1739278682-t5Gy2Nlw2ufSMwVphVlWyHaVnLrYHJ32-0-d9df3a17c1834b6fc435888cb0681088)
执行如下命令可以在交互式Shell下修改或添加用户密码,如图1-53所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/46_03.jpg?sign=1739278682-iPGYiiQcbbG53iDt30kQafxfpnPd5pLd-0-502238eeb32547bfccba79c04b159b08)
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/46_04.jpg?sign=1739278682-KJNS8gv86rH1CkAiOOx94lfQxRRiaszF-0-5dc0d74c0f284fee130996e667c774eb)
图1-53 配置用户密码
在实际的渗透测试中可能无法获取交互式的Shell来设置密码,同样可以使用一句话命令设置密码。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/46_05.jpg?sign=1739278682-V6JXTZeENsBRw5Zhfw1DJe6M8bzKML2W-0-3b8f3b40dea696387709c1a4471e7f7f)
上面的代码中,chpasswd是Linux系统中用于批量更改用户密码的命令。
3.删除用户
在Linux系统中,使用userdel命令可删除指定用户,如图1-54所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/46_06.jpg?sign=1739278682-aNGNqKdSWYFBoDgEF2HYByjRsfia8ddj-0-9a61daddf075519ac5d07be1b7aa9318)
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/46_07.jpg?sign=1739278682-6F0xYjxoygwwcVOfF29wlLVrI9Bo3JIJ-0-504492e40da8d47ff162e058686cf15c)
图1-54 删除用户
该命令的常用参数如表1-15所示。
表1-15 userdel命令的常用参数
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/47_01.jpg?sign=1739278682-sUoGeyMJqwTg91dCYGHOAE2H3A7Y7ejw-0-739bccb1030cc8ab01b60cbcc2a401df)
也可以通过删除/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow等文件中的用户所在行来手动清除一个用户。
4.切换用户
在Linux系统中,使用“su”(切换用户)命令可切换当前用户至指定用户。若普通用户要切换至root用户,则需输入“su -”或“su root”,并输入正确的root密码;若root用户要切换至普通用户,则只需输入“su<用户名>”即可,而无须输入密码。
切换用户的命令有两种执行方式:
❑su<账户名>:仅切换至指定用户,不会切换到其工作目录,不会载入此用户的环境变量。
❑su-<账户名>:切换用户的同时切换至其工作目录,载入此用户的环境变量和配置文件。
su命令使用示例1(如图1-55所示):
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/47_02.jpg?sign=1739278682-WDnHULXmVXvBt2oYn0yllYru6N4aPU4f-0-5dc2aa9e5d51368c231c5ce6d0a06939)
以上命令表示切换到root用户并以root身份执行“whoami”命令,一旦命令执行完成,将返回原用户的Shell下。
su命令使用示例2(如图1-56所示):
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/47_03.jpg?sign=1739278682-zKOZPNR5K5iNDLnyj4sEEhEsMUHw4XCx-0-646905ad84fed8e058a6cfdf59ca75a5)
以上命令表示切换至root用户。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/47_04.jpg?sign=1739278682-IFOg5pbKGYOpxyRANLJyyp0R4jDeahD0-0-21ef6fde0ac48a5a6593d07459e29b54)
图1-55 切换用户并执行命令
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/47_05.jpg?sign=1739278682-fQ4DwdF8cDx4LybK2hAlR7WKGOr9c4tg-0-4bde18c0bf3cfc1b2f053a221b55ec4b)
图1-56 切换至root用户
5.执行特权命令
在Linux系统中,sudo是一个非常重要的命令,它允许普通用户以超级用户(即root用户)的身份执行命令。在/etc/sudoers文件中定义了哪些用户可以使用sudo命令以及可以利用sudo执行哪些命令。要使用sudo命令,需要先输入当前用户的密码,密码验证成功后,将拥有15min的有效时间,在此期限内再次使用sudo命令时无须输入密码,超过期限则必须重新输入密码。如果未经授权的用户使用sudo,则系统会向管理员发送警告邮件。执行sudo命令的格式如下:
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/47_06.jpg?sign=1739278682-ehcrJRA44NG11imKEQVNHC5GysQ4nXbS-0-33dd0b185ad2388d93152a0ac3098406)
该命令的常用参数如表1-16所示。
表1-16 sudo命令的常用参数
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/48_01.jpg?sign=1739278682-uLqpMHA0Q1zZejV2xCEMTHg6SXaA5FkW-0-06e6356d7b353e4d764fcee7b981a96b)
sudo命令使用示例:
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/48_02.jpg?sign=1739278682-FAVT8KEXkBUGK3WxqqkpccTmQtitE4JI-0-a27cb265b7122666896a30d09923ebc0)
该命令表示以特权身份读取/etc/gshadow文件,如图1-57所示。
执行如下命令,列出当前用户可以使用sudo执行哪些命令。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/48_03.jpg?sign=1739278682-x8Hng7rUds936TVGVB9E4N0NORhEeZTN-0-2d535d37f241dcb3e111f1b4a4edf89a)
1.3.5 文件及权限
在Linux系统中,为了确保只有授权的用户和进程才能访问特定的文件和目录,需要对文件和文件夹的权限进行严格的控制。每个文件和目录都有3组权限:所有者的权限、用户组的权限和其他用户的权限。每组权限都有3种访问权限:读取权限、写入权限和执行权限。
1.文件类型和访问权限
执行命令ls或ll可列出当前目录中的文件并查看文件信息(ls和ll的区别是:ll显示的信息更详细,还会显示当前目录下的隐藏文件,而ls不会),如图1-58所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/48_04.jpg?sign=1739278682-yF9c2W7NnD1IN4kRHbUuOS6FONDN54iy-0-b0560e427fd13aa69b7ad56399870b06)
图1-57 以特权身份读取文件
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/48_05.jpg?sign=1739278682-09wqsZiaCvitJb7xoRYIEJLoYmntgm1d-0-cfd33f3336a112a9ba20899bfc0969e4)
图1-58 列出文件
ll命令的输出包括文件类型、权限、连接数、所属用户、所属用户组、文件大小、文件最近修改时间、文件名,如图1-59所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/49_01.jpg?sign=1739278682-X4UyVT1n16FALTNlPO9qYhmfGT6xTeQu-0-2e9d4b1e5a4b0af1d278be0cf4c881dd)
图1-59 文件输出释义
(1)文件类型
在Linux系统中,有7种文件类型,如表1-17所示。
表1-17 Linux文件类型
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/49_02.jpg?sign=1739278682-vW2skS0u9oLVOQlx1eNQcoTlEIdx5ANs-0-8e31989997ce4599781b5bffb1515da3)
Linux系统不以扩展名来区分文件类型。扩展名的作用是帮助用户确定使用哪个软件打开文件。
(2)基本权限
在Linux系统中,文件权限分为3种,如表1-18所示。它们适用于每一类用户。
表1-18 Linux文件权限类型
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/49_03.jpg?sign=1739278682-bj9pdkD0riE44KDyXYxPzMST9v8VqALE-0-b85b1571638fb8082d4c7205294cc606)
某一位置为空时显示“-”,表示不具备这个权限。
(3)文件权限的表示方法
文件权限的字符表示如表1-19所示。
表1-19 文件权限的字符表示
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/50_01.jpg?sign=1739278682-Qldm9lQg6gRPi1bCaHUtYTbCAoReVEqG-0-8236f601516bbac2bd7d1da664763589)
文件权限的进制表示如表1-20所示。
表1-20 文件权限的进制表示
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/50_02.jpg?sign=1739278682-fPNiyDKJfa9nRdkpOPsuSGOdiLFABDwZ-0-6310816f1e1c7ff43281d6f673b5ed6b)
Linux系统中,文件/文件夹权限由9位组成,前3位表示所有者的权限,中间3位表示用户组的权限,后3位表示其他用户的权限,如表1-21所示。
表1-21 权限位
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/50_03.jpg?sign=1739278682-QkmXx72MUnDiiyzb9EyAN4DtzRhSJu6U-0-8538d009d27f3e8b5742f2dbd759417e)
举例如下:
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/50_04.jpg?sign=1739278682-AhDh5w7mYZit5yy83JZLtexeG9yG20jz-0-59940dedfd8ef30e5e6c4800484f7b41)
以上内容表示,列出的是文件夹“account”的信息。该文件夹的所有者是“root”,具有可读、可写、可执行的权限;文件夹所属的用户组是“linux”,具有可读、可执行的权限,但没有可写的权限;其他用户对此文件夹具有可读、可执行的权限,但没有可写的权限。
(4)修改文件权限
在Linux系统中,使用chmod命令来修改文件或目录的访问权限。此命令的格式如下:
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/50_05.jpg?sign=1739278682-AU0o8drMUUqtQ8Nn0kNRJpZDQ2qpyYSN-0-21f95093fb5144e26453dccb3fe7f0cf)
常见的权限表示方法有两种:字母法、数字法。
1)字母法。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/50_06.jpg?sign=1739278682-yPhZZIGRPGnRbtw32WSjbnvRAUqT5VO6-0-9ef5cd2486b5fc44518ed586ec705af8)
每个参数代表不同的含义,具体解释如表1-22所示。
表1-22 chmod命令参数及其含义
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/51_01.jpg?sign=1739278682-pIKpxxVkSOnD5sstO0RBZrvM67J4lMvM-0-af27e62323235f1e9ded26a0cf252f67)
操作符及其含义如表1-23所示。
表1-23 操作符及其含义
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/51_02.jpg?sign=1739278682-x1AcRyffTW8w821NAh0s2RWUBBtz2RZO-0-4310180930dfee808257734ebfe270f3)
chmod命令的字母法使用示例(如图1-60所示):
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/51_03.jpg?sign=1739278682-7GZjky6Nwaa4TdEp4NvQzsjXEuukeFA0-0-c021d206bffcf1d2b63588e841b92e3e)
该命令表示对1.txt文件赋予其他用户可执行的权限。
2)数字法。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/51_04.jpg?sign=1739278682-HAihkfoDC2JGasErrMESfE6lJIrhZVQH-0-e9257edccfd07c0685c3a8793f23a988)
在文件权限表示方法中,前文已提到过权限符号所对应的八进制表示方法(3种用户权限对应3位八进制数字)。
chmod命令的数字法使用示例1:
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/51_05.jpg?sign=1739278682-qxBbIckLiMcdzlpIG0LyIEU8JV0Xpl70-0-13b12ac8cff7d1eb5dd02b813fe0b449)
该命令表示将1.txt文件设置为所有者和用户组可读、可写、可执行,以及其他用户可读的权限(774所对应的权限符号为rwxrwxr--),如图1-61所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/51_06.jpg?sign=1739278682-65zbqVOJ4mQRycfQUY2HILtWAG6vBnIl-0-7ea593ed192df21bbfed710fa6e2f32d)
图1-60 chmod命令的字母法使用示例
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/51_07.jpg?sign=1739278682-IM2Tnwa7Z2ndipNMGbzOfc9l22D1kEJE-0-194b6259e1fc4d56c9e395b6bbffdcca)
图1-61 chmod命令的数字法使用示例1
chmod命令的数字法使用示例2:
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/51_08.jpg?sign=1739278682-S0yLjbRDHUtpBx33TveHBgFByJq2cZ2C-0-b452d6ad67746793522e5c60415a61b8)
该命令表示递归更改test目录及其所有子目录和文件的权限,赋予所有者、用户组和其他用户可读、可写和可执行权限,如图1-62所示。
(5)目录权限
在Linux渗透/提权中常需要上传漏洞利用程序或其他一些辅助工具,所以需要了解目录相关权限。目录权限主要分3种,如表1-24所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/52_01.jpg?sign=1739278682-JST4wKh4elY2lBIMuXpNpWVGIVzkGEoc-0-a364c9267384cca253dff8a659a39600)
图1-62 chmod命令的数字法使用示例2
表1-24 目录权限
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/52_02.jpg?sign=1739278682-2GOGhayh68IL2bJGgGsChBEUs8jm9fiA-0-82c7f53837f6ea027e0a0023af1d590e)
2.特殊权限
前文介绍了r、w、x这3种基本权限,在Linux中还有3种特殊的权限:SUID、SGID、SBIT。
(1)SUID
SUID(Set User ID)一般出现在文件所有者的执行权限位上,如图1-63所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/52_03.jpg?sign=1739278682-w1BAcarri1twKdfFiQ813XSTwZh6FryI-0-786408132759713de0f2d8b757c85598)
图1-63 SUID示例
图1-63中,文件所有者中的“x”执行权限位,出现了“s”权限,此权限称为SETUID。
SUID特殊权限只适用于可执行文件。当用户执行此类型文件时,操作系统会暂时将当前用户的UID切换为文件所有者的UID。当文件执行结束后,身份的切换随之结束。
举个例子,当用户想修改自己的密码(使用passwd命令,调用/usr/bin/passwd文件)时,此操作需要修改shadow文件,而shadow文件只有root权限才能读取和修改。那么,为什么可以修改成功呢?通过查看passwd文件属性可以看到它已经被设置了特殊权限SUID,所以当普通用户执行passwd命令来修改密码时,是临时切换至root权限去修改shadow文件的,如图1-64所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/52_04.jpg?sign=1739278682-2a54mri1pEIayM1ltx5PAr7NMdUVnpwF-0-f22e4ecffccc2e57bf1d2c45310f9b18)
图1-64 修改密码流程
设置SUID也是权限维持中常用的一种方法。例如,将vim、nano等文件设置为SUID特殊权限,则可以修改/root/.ssh/authortizded_keys进行无密码登录,以及编辑/etc/shadow文件。
在Linux中可使用chmod命令为文件添加和撤销SUID特殊权限。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/53_01.jpg?sign=1739278682-GbzZ4LR8sKVJORo7S0i6dN0PDIeDa8mI-0-4835f38f833a18135ff8f19a191c7d8d)
该命令表示使用字符法为/tmp/ServerScan文件添加SUID特殊权限,如图1-65所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/53_02.jpg?sign=1739278682-JpS0uQ1SOiVodoPoXcduL4iCk5ie3eBp-0-eccf8a24fc01d061c0224a408b03883d)
图1-65 为文件添加SUID权限
(2)SGID
SGID(Set Group ID)一般出现在文件所属用户组的执行权限位上,如图1-66所示。当用户执行此类型文件时,操作系统会暂时将当前用户的组身份切换为文件所属组。文件执行结束后,身份的切换随之结束。当SGID作用于目录时,进入此目录的用户在创建文件或文件夹时,新文件或文件夹的所属组将继承此目录的所属组。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/53_03.jpg?sign=1739278682-Q37iEmWXNmk5e2jzlURB5MKECEIakOXG-0-57c0ba20a826c47b23d4a45e9e556d29)
图1-66 SGID示例
如图1-66所示,原本文件所属组中的x执行权限位,出现了s权限,此权限称为SETGID。
在Linux中可使用chmod命令来添加和撤销SGID特殊权限,如图1-67所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/53_04.jpg?sign=1739278682-vGC1rQCUVlbBOxRjaaolp16cjIDzeyet-0-8fccd69f66e716870f66a074be46c8af)
该命令表示使用字符法为/tmp/ServerScan文件添加SGID特殊权限。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/53_05.jpg?sign=1739278682-GyplV2ugTJrXBS0yMlBWuV5SsnjFqCz9-0-fbc0ceb9ef1d3e49827c0c0cd3e3d109)
图1-67 为文件添加SGID权限
(3)SBIT
SBIT(Sticky Bit)是另一种特殊权限,用于在共享目录中保护文件和目录。当一个目录被设置了SBIT权限时,该目录中的文件和子目录只能被其所有者和root用户删除或移动,即使其他用户具有该目录的写权限,也无法修改或删除该目录中的文件和子目录。SBIT权限通常用于保护公共目录,如/tmp目录。