![权限提升技术:攻防实战与技巧](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=1739283749-dLDsF81LVDyPdvApAohvolCzLrHjWsRZ-0-c90684ba962b4ac0a1f3dcef3b929f7c)
图1-39 3种用户类型
在CentOS的不同版本下,UID设定范围是不同的,如表1-7所示。
表1-7 不同CentOS版本的UID设定范围
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/38_02.jpg?sign=1739283749-4JkSGxHnmMw3pwJfuBJ9EMkazKC4WdgL-0-f94f0971eab6af6894f1a252be46aa02)
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=1739283749-ZyAZr5lYMilIpMybnE5OJXyGRprgzgfh-0-9e06038f488031205fcf919ff39a179c)
图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=1739283749-J0tDgQ1ICMHXsM6zGnYmJutAbMFiqfMi-0-c6d86da22ddba7564ee2bb84815b8022)
1.账户文件
/etc/passwd是用于定义用户账户的系统文件。该文件中存储了每个用户的用户名、密码、用户ID、用户组ID、主目录以及登录时使用的Shell等信息。所有用户都可以读取该文件。
执行如下命令可以查看用户账户文件,如图1-41所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/39_03.jpg?sign=1739283749-3QJqKmQRNI7L0w1VO15O1jOWfFD4lcMa-0-2b992a0d676a1429df88e5bd1e94286f)
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/40_01.jpg?sign=1739283749-5ScfDP8MIFA8Qb8hDnX3VPe4pHaLeuvt-0-a491027963ff70dc1593e25b6ecc3792)
图1-41 /etc/passwd文件内容
/etc/passwd文件中的字段以“:”分隔,共有7个字段。对字段的解释如图1-42和表1-9所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/40_02.jpg?sign=1739283749-HnEo9hwzSDqXBnBBdyioM2xMxLjNlVAh-0-05e69eeeb49d8a9224e71a9a88808465)
图1-42 /etc/passwd文件信息
表1-9 /etc/passwd文件的字段及其含义
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/40_03.jpg?sign=1739283749-hqROKSZqCNbJMQBgLO8t96MGQ0PelD7F-0-4aad2e5d8a5c73d1852bbadf6eaea4bc)
2.密码文件
/etc/shadow是Linux系统中用于存储用户密码信息的文件。该文件中存储了每个用户加密后的密码、密码最后更改的时间、密码过期时间、密码锁定时间等信息。只有超级用户或shadow组成员才能读取该文件。
执行如下命令可以查看用户密码文件,如图1-43所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/41_01.jpg?sign=1739283749-cOolwp5ZDufDBFADfTuqp8Qa7VVkCdNt-0-3aae798d8bd60a982e76622d106a636b)
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/41_02.jpg?sign=1739283749-rSrfyr3HIPE6avavcCo5cnGV42rZTmV0-0-8e44270ca3836e47d18d54af08ffce87)
图1-43 /etc/shadow文件内容
/etc/shadow文件的字段说明如图1-44所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/41_03.jpg?sign=1739283749-HLN2G1l4T67DGXscSpxw605tbZ1U94uB-0-af6feb3f011f1529fd1a689d0e4c6335)
图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=1739283749-Vq8kxQsIPANeykP7Ov371ARXEmPNbJF2-0-4ac21a59dd09e35b5c4545b994c2b550)
3.用户组文件
/etc/group是用于存储用户组信息的系统文件。该文件中存储了每个用户组的组名称、组密码、用户组ID、组成员列表等信息。系统中的每个组在文件中都有一行记录,任何用户均可以读取用户组文件。
执行如下命令可查看用户组文件,如图1-45所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/42_01.jpg?sign=1739283749-zz1qsUZjj22td6tdHt2NFPwzao0IyC7F-0-2be360244e0450ecfead7d2285831696)
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/42_02.jpg?sign=1739283749-GsnUpmGm4D0d7QUZfXesne2ZaCa5khoP-0-dd06fc69d7e4b17688df5205ce07d9b5)
图1-45 /etc/group文件内容
/etc/group文件的字段说明如图1-46所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/42_03.jpg?sign=1739283749-298M4gMsBKWGN6WeQymUItWRT9ye7WsG-0-1b45396603abc174c850fa3517a5592b)
图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=1739283749-oMYDSIB1ozHWlYBxyB8oJ7fqpUEvDQ1w-0-677d566d4006070b3171a85c083376b1)
4.用户组密码文件
/etc/gshadow是用于存储用户组密码的系统文件,与用户组配置文件/etc/group相对应,记录了用户组密码的相关信息。
执行如下命令可以查看用户组密码文件,如图1-47所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/43_01.jpg?sign=1739283749-2tbg7tL80UH9yGIrX6RharBdlD1ydjfB-0-b3f520e9150d12b5f538b2b0af8aeec1)
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/43_02.jpg?sign=1739283749-AUHXJRNVl9Z216nvRNTjPcIqamHcOqBw-0-2c7ee75eae179bf6fc2b6aad1535ca74)
图1-47 /etc/gshadow文件内容
/etc/gshadow文件的字段说明如图1-48所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/43_03.jpg?sign=1739283749-AJPyAw8Yd03RFZpNVjIyInmUGCtPM8vl-0-68afa5afee6470ee4c59694f42be36e3)
图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=1739283749-AyKDnD39wzshPh4iqHa3sPSHAeczVkv3-0-64f43b3acf6a567b2e79bb37fbf83bf9)
1.3.4 用户管理相关命令
在渗透测试中,有时需要进行用户或用户组添加、密码更改和权限设定等操作,所以掌握用户管理的相关命令是非常重要的。
1.添加用户
在Linux系统中,可以使用useradd命令新建用户。此命令的格式如下:
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/43_05.jpg?sign=1739283749-1pewCl73y9OFwiX68Kzb0ndcTL12dit2-0-87d1e07116c1d2ac282f0a6c80c3d9c1)
该命令的常用参数如表1-13所示。
表1-13 useradd命令的常用参数
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/44_01.jpg?sign=1739283749-Eok5fHcR40gv5Smqk1OOrc5IMxBIQofr-0-019fe248babba2b99920be2bba6be9db)
useradd命令使用示例1:
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/44_02.jpg?sign=1739283749-4pJ82EQJsNafUV0MpK9nRb4ehBC459gw-0-5d51df31405025047fa64e26705e5abe)
上面第一条命令表示创建一个名为“linux”的普通用户,第二条命令表示创建一个名为“apache”的新用户,不为其创建家目录,并指定其默认的Shell为/sbin/nologin,即不允许登录。
useradd命令使用示例2:
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/44_03.jpg?sign=1739283749-LqouXlXE4ifCZTfQFleKnAQ0Q1xOEAXY-0-582551b12eb30737f0397e30e5a9431c)
该命令表示创建一个名为whoami的普通用户,指定其UID为1003,登录Shell为/bin/bash,账号永不过期,如图1-49所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/44_04.jpg?sign=1739283749-VREUdmBOWMOcVEa3uddrG6SqBsqlWHHr-0-33cec8e67c45340c268e016dc7ae9c7e)
图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=1739283749-Yu22WFO90578VEepwJP2BxXBrWKu6Z4D-0-2eab50e3668fb5bbbdf1b6b9a7e0fecf)
上面使用openssl passwd命令来生成一个基于明文密码(即“password”)和盐值(即“suiyi”)计算出来的哈希值。接下来,该哈希值会作为参数传递给useradd命令,以设置新用户的密码。该命令表示创建一个用户名为“yonghu”、密码为“password”的普通用户。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/45_02.jpg?sign=1739283749-n48fc6MeoYHjOJ94pHriKXMFFOEVSaHk-0-e482edb5c3d5d23f976ad6ad2c6520db)
图1-50 使用一句话命令添加一个带密码的用户
如下命令可在非交互式Shell下添加root用户,如图1-51所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/45_03.jpg?sign=1739283749-43RPdBWfNIP4uE8nuuGi56bANVgYgVLy-0-c996f836451913da5e70b7d98168d748)
该命令表示创建一个用户名为“rootyh”、密码为“password”的root用户。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/45_04.jpg?sign=1739283749-Ib31kidB9G4rATMqvXeF3xa9PdPFBqcM-0-535db85480209ed405854e3de15115c9)
图1-51 添加root用户
命令参数解释如图1-52所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/45_05.jpg?sign=1739283749-gx77XRQ1Z9eCLh5EwzTu0AW72T9irAXE-0-669a75e97e78d42ba575b07a83ea8816)
图1-52 添加用户命令参数解释
2.设置密码
在Linux系统中,使用passwd命令可以为当前用户修改密码,或为指定的某个用户修改密码。普通用户修改密码时需要输入原密码,root用户可以随意修改其他用户的密码。此命令的格式如下:
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/46_01.jpg?sign=1739283749-E7o5XXtoRLbx2ZIQw2rJDB8zFPRjjwLp-0-e5465d098ab48132dda438eba275e424)
该命令的常用参数如表1-14所示。
表1-14 passwd命令的常用参数
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/46_02.jpg?sign=1739283749-U1XmPBkNu1rUrWzD6leruT9Wsb4Dabya-0-fb17f236d24fd23da71db4c1f40cc7a4)
执行如下命令可以在交互式Shell下修改或添加用户密码,如图1-53所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/46_03.jpg?sign=1739283749-FFyYKYzT1toQ4YMPPuqKAdxwsU7ZmYtg-0-f06386ec15a6bd564b8b5a9c38274645)
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/46_04.jpg?sign=1739283749-xYH5L5N5u00KUEXboZW6e5CslPJCGefd-0-6c9046367464c81e2c7f36d461215f70)
图1-53 配置用户密码
在实际的渗透测试中可能无法获取交互式的Shell来设置密码,同样可以使用一句话命令设置密码。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/46_05.jpg?sign=1739283749-3TrkH9OXs0yKre5Uq8iTzrYhHASPuH9l-0-d8eb55aef847f2eb1f71d5ff7bc7ed3f)
上面的代码中,chpasswd是Linux系统中用于批量更改用户密码的命令。
3.删除用户
在Linux系统中,使用userdel命令可删除指定用户,如图1-54所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/46_06.jpg?sign=1739283749-zw5dOIbrY2Y1zMPNJm7gpSkkHP7Tm1du-0-d0ce3f098569e523be2764089d8fa2f4)
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/46_07.jpg?sign=1739283749-953iBVGAcbXAczi63KBt9Uo3FZNgHOD0-0-3c6ebb68d8ae6ff1c8617f878e75d380)
图1-54 删除用户
该命令的常用参数如表1-15所示。
表1-15 userdel命令的常用参数
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/47_01.jpg?sign=1739283749-bOrQWxwMHmoGYYhw4GOedUGThITzeeAF-0-b8b97bf5927f1b4f6280e2f975bccdee)
也可以通过删除/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=1739283749-6TytbiiFA8J29PtFnzcfGG513lqbaHBq-0-0957f162ad390610b365738a3ed2c5fe)
以上命令表示切换到root用户并以root身份执行“whoami”命令,一旦命令执行完成,将返回原用户的Shell下。
su命令使用示例2(如图1-56所示):
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/47_03.jpg?sign=1739283749-AaM5dnIyE9o2DrYJ1fL6KTJUBKYwvkMC-0-f62e9a2f5827038fdc332b73684c370a)
以上命令表示切换至root用户。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/47_04.jpg?sign=1739283749-Qu9ylf95dz7KdBL2ig1w9ofZ5aXc8OIG-0-8c3aa4101e5654780963c24de05624ab)
图1-55 切换用户并执行命令
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/47_05.jpg?sign=1739283749-kFep1Np2OBeZCGlutNMZHYck9IZopkxS-0-06933e427d285cbd70a8811a48b12f8a)
图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=1739283749-aLbHTxrcc7vV92Yne7NBMqHzMpchX0xN-0-3979b9d56bb7f84bed07478b665d66b2)
该命令的常用参数如表1-16所示。
表1-16 sudo命令的常用参数
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/48_01.jpg?sign=1739283749-L1qLOZfHs1KtynOuYqrjWCB8mZj43q3F-0-598f6fe01e20d8aa1e3cc2a6e382c14a)
sudo命令使用示例:
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/48_02.jpg?sign=1739283749-exrVjLnQmKISi2J9r6C8De2n6kTxFCZV-0-9f19dbe25580ea078227b20455b13632)
该命令表示以特权身份读取/etc/gshadow文件,如图1-57所示。
执行如下命令,列出当前用户可以使用sudo执行哪些命令。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/48_03.jpg?sign=1739283749-ssbjY8y5lHNKMMAuRbGUoyJJWYUTSlMH-0-585e81045c220e10545a7a2198960ceb)
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=1739283749-1dcyCzeozdXMLDSJEY8tVWBBcJlgzixh-0-84c6d135fb5aa8db97117cb7cc7160b9)
图1-57 以特权身份读取文件
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/48_05.jpg?sign=1739283749-QTLc0oIbcOLk9DUko1qalsyv8mNVtpuC-0-d1ec762d3a0ece253f25c3fe00b8f17b)
图1-58 列出文件
ll命令的输出包括文件类型、权限、连接数、所属用户、所属用户组、文件大小、文件最近修改时间、文件名,如图1-59所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/49_01.jpg?sign=1739283749-b3N2m8SLbz6MpMIQHL53QRLKApFvAA00-0-91ad6e6c6d56aab7ccd2958104e9213a)
图1-59 文件输出释义
(1)文件类型
在Linux系统中,有7种文件类型,如表1-17所示。
表1-17 Linux文件类型
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/49_02.jpg?sign=1739283749-4372GtwjLSzM9TOZacswy2MCAEqkcs7i-0-aabaaaab28a42930c67b73b061262cdd)
Linux系统不以扩展名来区分文件类型。扩展名的作用是帮助用户确定使用哪个软件打开文件。
(2)基本权限
在Linux系统中,文件权限分为3种,如表1-18所示。它们适用于每一类用户。
表1-18 Linux文件权限类型
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/49_03.jpg?sign=1739283749-9nhArR9YEjnTHOtTNv06qSabNHlrrLET-0-acf9ed70b9ea499287bf1b439a18d6a3)
某一位置为空时显示“-”,表示不具备这个权限。
(3)文件权限的表示方法
文件权限的字符表示如表1-19所示。
表1-19 文件权限的字符表示
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/50_01.jpg?sign=1739283749-OvWTCmepJkKQGW00QCzRFJ7kWgcI6UiU-0-938c50e9753ac37048eb7cc460831bc0)
文件权限的进制表示如表1-20所示。
表1-20 文件权限的进制表示
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/50_02.jpg?sign=1739283749-IGHFUd7oLiEAjm1TserA3qv9Ua7tIkYM-0-8b12c2049471ec576ba1fbc1327f0cc4)
Linux系统中,文件/文件夹权限由9位组成,前3位表示所有者的权限,中间3位表示用户组的权限,后3位表示其他用户的权限,如表1-21所示。
表1-21 权限位
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/50_03.jpg?sign=1739283749-nD0zRNZLV9DMnMdL775GM2mVtLSYUGee-0-be61c110f3ecda1c558c0cf9a864435e)
举例如下:
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/50_04.jpg?sign=1739283749-1nu4rvMrBzFdLalUuZ9RmCBxd38orqfc-0-1d10f80ec3fee55cd82d1cc2a4bf268c)
以上内容表示,列出的是文件夹“account”的信息。该文件夹的所有者是“root”,具有可读、可写、可执行的权限;文件夹所属的用户组是“linux”,具有可读、可执行的权限,但没有可写的权限;其他用户对此文件夹具有可读、可执行的权限,但没有可写的权限。
(4)修改文件权限
在Linux系统中,使用chmod命令来修改文件或目录的访问权限。此命令的格式如下:
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/50_05.jpg?sign=1739283749-VEthYi5861NtBblCncTJ23OVkEe2LVr7-0-507b7728d070e26e700179ac70332ed1)
常见的权限表示方法有两种:字母法、数字法。
1)字母法。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/50_06.jpg?sign=1739283749-DsZb8FFTps2gRthflqRqUtyN93DrxXce-0-669ad2e6c1f399dafc21e3b7c394133d)
每个参数代表不同的含义,具体解释如表1-22所示。
表1-22 chmod命令参数及其含义
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/51_01.jpg?sign=1739283749-oLGnUZdHWKPeg3uPKBSwll1CzjH0sEzn-0-cf2c66e450e5a3cee8c17efcb67d2137)
操作符及其含义如表1-23所示。
表1-23 操作符及其含义
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/51_02.jpg?sign=1739283749-XGpO69eK1RF3ipC7Gy5k9mkaOEsFiF27-0-1257a8b103453dd254174ab6d1b18d0c)
chmod命令的字母法使用示例(如图1-60所示):
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/51_03.jpg?sign=1739283749-QaoR8YDEDAhsvLVHI4BkQQF3a7qah9IN-0-0b37420821a65e5d4d2447e12b70bf4d)
该命令表示对1.txt文件赋予其他用户可执行的权限。
2)数字法。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/51_04.jpg?sign=1739283749-Djdkf1SyJQ7m5caxdqmazr9IEUKX2MiY-0-db17ef0aa06a1e9569cb1f989f3b0bce)
在文件权限表示方法中,前文已提到过权限符号所对应的八进制表示方法(3种用户权限对应3位八进制数字)。
chmod命令的数字法使用示例1:
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/51_05.jpg?sign=1739283749-39RHOogW9R4nSoGtZmaGepEEIJ3LKmjv-0-3de91ede2dfc918f4398393aaf815474)
该命令表示将1.txt文件设置为所有者和用户组可读、可写、可执行,以及其他用户可读的权限(774所对应的权限符号为rwxrwxr--),如图1-61所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/51_06.jpg?sign=1739283749-SuL3xVL5t2OdBp5YzFVnIH2yPAJC89xu-0-2010eaf1eb8710336b94bb5e3b158285)
图1-60 chmod命令的字母法使用示例
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/51_07.jpg?sign=1739283749-2cM4PaUf1LXlMHCisDw9ipKJlYkSq9jW-0-1d1f541bd69192bd6312c8816b83a3ed)
图1-61 chmod命令的数字法使用示例1
chmod命令的数字法使用示例2:
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/51_08.jpg?sign=1739283749-GwfephASVgbtxpTcKt2O4dVDR5QfHi8G-0-afc5f5c0d280d0dedd094d48d0ea2ef7)
该命令表示递归更改test目录及其所有子目录和文件的权限,赋予所有者、用户组和其他用户可读、可写和可执行权限,如图1-62所示。
(5)目录权限
在Linux渗透/提权中常需要上传漏洞利用程序或其他一些辅助工具,所以需要了解目录相关权限。目录权限主要分3种,如表1-24所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/52_01.jpg?sign=1739283749-fjAGrfrBc5RNOhAUW0uMIQtiPLV9fbSf-0-8d77bce9d948a33575c22756f8899af8)
图1-62 chmod命令的数字法使用示例2
表1-24 目录权限
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/52_02.jpg?sign=1739283749-mBBGhB6XlbZAxsHK1oF8vujCgzRcZlsK-0-1ac07547b82f774da08d2cfdb6d5d162)
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=1739283749-GUohP7LfpUwgbB12pZxYUsKTH6EeC1PL-0-7090c97409fd5a726caeabdcdec0cc38)
图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=1739283749-ay70q2exVbNq3QTx0GvnOnenLRZmrcJm-0-5e21b50a29cce1387ca88e67eaa4bc70)
图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=1739283749-BJvH3rNXXNCIPbxv9KyKdIpHDtmoSKAo-0-0b5786fd403a27a870c6aac26aba2c15)
该命令表示使用字符法为/tmp/ServerScan文件添加SUID特殊权限,如图1-65所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/53_02.jpg?sign=1739283749-yUCINPQUuav8D1Tyf7lqRB2WOHLJwmJL-0-7fe25c9ff8f9a12c99e7eb0df22aeb02)
图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=1739283749-YK2gJlVwX7S3aUj4eI4qr6P2O7tOT1Ma-0-3469d23022dbd7fb3adb597f64b7a4c7)
图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=1739283749-xGPu4Gi2qZPMpnU9QDC15SO9nYCKBdGV-0-be3b7a28072de9b21040926b0927615d)
该命令表示使用字符法为/tmp/ServerScan文件添加SGID特殊权限。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/53_05.jpg?sign=1739283749-CczWdHga1YVrDQApH9JaIOz06NvR4p5a-0-19f55258472a3edfb0b0a8df13551957)
图1-67 为文件添加SGID权限
(3)SBIT
SBIT(Sticky Bit)是另一种特殊权限,用于在共享目录中保护文件和目录。当一个目录被设置了SBIT权限时,该目录中的文件和子目录只能被其所有者和root用户删除或移动,即使其他用户具有该目录的写权限,也无法修改或删除该目录中的文件和子目录。SBIT权限通常用于保护公共目录,如/tmp目录。