![权限提升技术:攻防实战与技巧](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=1739353879-X0VNgWeGr1ujrFsLWtHbj7rNCOSYO1XT-0-1fe58bfadcd1e1bfc12578204baef4ac)
图1-39 3种用户类型
在CentOS的不同版本下,UID设定范围是不同的,如表1-7所示。
表1-7 不同CentOS版本的UID设定范围
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/38_02.jpg?sign=1739353879-U03loKElwTDpmktPvhOAzZQlh1jRpKST-0-976036d05c35cca347f1fbdd4bd86cbe)
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=1739353879-LEYND178h2oigR3abG2IreE8EtDWqtkv-0-abd2115b5123bc1be4eb26a27e4f9b49)
图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=1739353879-3A3xu5NnOiK80xrt8j1tZ4V1nD245Naj-0-7435885650116cb11012b6c227b34f4d)
1.账户文件
/etc/passwd是用于定义用户账户的系统文件。该文件中存储了每个用户的用户名、密码、用户ID、用户组ID、主目录以及登录时使用的Shell等信息。所有用户都可以读取该文件。
执行如下命令可以查看用户账户文件,如图1-41所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/39_03.jpg?sign=1739353879-7SHL3yph3Pb38GYMYvdbGymXdAEVMUkZ-0-6169d6892efb29428544698346a80dcf)
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/40_01.jpg?sign=1739353879-WJb33HVHpCVLMrIfVSzBpLFtUIKcEjmx-0-8639e96625c9a1f9dcbf29fcf6dd1477)
图1-41 /etc/passwd文件内容
/etc/passwd文件中的字段以“:”分隔,共有7个字段。对字段的解释如图1-42和表1-9所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/40_02.jpg?sign=1739353879-JjufaYRvDS4Hpkw38rEJZRXFPECEYFOB-0-1b8cb5c01c5860ef8b29b507faf0ef05)
图1-42 /etc/passwd文件信息
表1-9 /etc/passwd文件的字段及其含义
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/40_03.jpg?sign=1739353879-HH3Uw2Ptlu4hVHvIbLZKjH8IBEjeBE2g-0-57b0cb9b98c4bc3803c862f65d624032)
2.密码文件
/etc/shadow是Linux系统中用于存储用户密码信息的文件。该文件中存储了每个用户加密后的密码、密码最后更改的时间、密码过期时间、密码锁定时间等信息。只有超级用户或shadow组成员才能读取该文件。
执行如下命令可以查看用户密码文件,如图1-43所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/41_01.jpg?sign=1739353879-QRXw72IozMA6tJ39BmwgkkjDbbfZr9O8-0-465b61bf47f39f65743a048bc93c4b05)
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/41_02.jpg?sign=1739353879-LkUeFiS19jb6foNUI6AdwBhxphS9nxdd-0-676f5119ad9869e25b3413032358d085)
图1-43 /etc/shadow文件内容
/etc/shadow文件的字段说明如图1-44所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/41_03.jpg?sign=1739353879-ebiNf1L8M0oix9zOJn0rxyoHvNaxibDM-0-abc0057c65af631c58e14d957df952d6)
图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=1739353879-ZU8vAKOjUPLMV89AImPyFRZJg46h2owa-0-626ff937e11090e5d5d29fb18c95d405)
3.用户组文件
/etc/group是用于存储用户组信息的系统文件。该文件中存储了每个用户组的组名称、组密码、用户组ID、组成员列表等信息。系统中的每个组在文件中都有一行记录,任何用户均可以读取用户组文件。
执行如下命令可查看用户组文件,如图1-45所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/42_01.jpg?sign=1739353879-6WZQlK0URGDrEDYIFXiIdhS4R4wPclMy-0-003519284e25a415fd7752ffabb7cc9b)
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/42_02.jpg?sign=1739353879-VgNNKUiPdMV1ROIVwrEVPTLkDm2jCjxR-0-184a49cb5e5a960efa034912c445e19f)
图1-45 /etc/group文件内容
/etc/group文件的字段说明如图1-46所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/42_03.jpg?sign=1739353879-V4QcEvVhgFzdm7UsEQTghbzeF1TVHGy6-0-27abb27c202a4ee36494d0102496e8c5)
图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=1739353879-usTdcQIWJM0GXt8P3f18SCiu830cd1Zs-0-094265c142a3fcac5afb26b7c460771e)
4.用户组密码文件
/etc/gshadow是用于存储用户组密码的系统文件,与用户组配置文件/etc/group相对应,记录了用户组密码的相关信息。
执行如下命令可以查看用户组密码文件,如图1-47所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/43_01.jpg?sign=1739353879-urP3t0x2ABJ4JpMkJExwPEhL47g33jRO-0-72cf18d0a972ddd7627d0a27ae9dcc23)
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/43_02.jpg?sign=1739353879-vJwWhBftaJQw4WR2UQbF1HPzuPKEVZaw-0-c4b69c28311f90a0a73cfc69b64b99c8)
图1-47 /etc/gshadow文件内容
/etc/gshadow文件的字段说明如图1-48所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/43_03.jpg?sign=1739353879-Unm5Gp0PsPjHUkA8fH3VmWeUvpok2tFO-0-457977b110976b12764b706eb1c49080)
图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=1739353879-s6BneqXAA7eJR3I11Tjwm9iLZBuNRK96-0-c693c298ec4a25d5ce5eadc38f6ecb5b)
1.3.4 用户管理相关命令
在渗透测试中,有时需要进行用户或用户组添加、密码更改和权限设定等操作,所以掌握用户管理的相关命令是非常重要的。
1.添加用户
在Linux系统中,可以使用useradd命令新建用户。此命令的格式如下:
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/43_05.jpg?sign=1739353879-m2E2ZheWtwha5MhcaHOK5Hnr1bLG6BFk-0-b1243cd703fb58e0392db7bcce18bec6)
该命令的常用参数如表1-13所示。
表1-13 useradd命令的常用参数
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/44_01.jpg?sign=1739353879-1YkantxTeVvjC3SzoadPTq6Ih6IWghp1-0-0dc295d48f717afff603f1536fca7e8a)
useradd命令使用示例1:
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/44_02.jpg?sign=1739353879-NuScJJCaofV1XSyMLbvXzEDeEfnSqzmu-0-d7f16df8bb7fde42256feea5f5b68dbf)
上面第一条命令表示创建一个名为“linux”的普通用户,第二条命令表示创建一个名为“apache”的新用户,不为其创建家目录,并指定其默认的Shell为/sbin/nologin,即不允许登录。
useradd命令使用示例2:
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/44_03.jpg?sign=1739353879-Yrb1WQqaoqLbvq7jbY987Fi9k96F1ODj-0-ce6191321e2d243b51a457933c95eaf9)
该命令表示创建一个名为whoami的普通用户,指定其UID为1003,登录Shell为/bin/bash,账号永不过期,如图1-49所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/44_04.jpg?sign=1739353879-Ts9tKnc2tqjCIGZyQ1bYhKCfy5NbNZOQ-0-89edde0cd05d3c02d364800ab8db17cf)
图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=1739353879-CLw6JMl7Cv14BiTpdQcUzuBtm2q2FTiE-0-ccd1dbaaeb87926824cbc9606c2a16e7)
上面使用openssl passwd命令来生成一个基于明文密码(即“password”)和盐值(即“suiyi”)计算出来的哈希值。接下来,该哈希值会作为参数传递给useradd命令,以设置新用户的密码。该命令表示创建一个用户名为“yonghu”、密码为“password”的普通用户。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/45_02.jpg?sign=1739353879-e0alXvfNzmJdb5iWeVuUzRje0xV0X6aY-0-9b70bd89375e569234e9b97676987f3e)
图1-50 使用一句话命令添加一个带密码的用户
如下命令可在非交互式Shell下添加root用户,如图1-51所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/45_03.jpg?sign=1739353879-BogFlEo600Bi07I1OmZaTnNQSvupPDJj-0-5c61c43efd0ae6e94e6e1a65d80ce467)
该命令表示创建一个用户名为“rootyh”、密码为“password”的root用户。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/45_04.jpg?sign=1739353879-kZBfZB3ACSeSiELNfAMmWT8ZIrhcaZ4J-0-edd9e2b231d9b815947945273dd3f61d)
图1-51 添加root用户
命令参数解释如图1-52所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/45_05.jpg?sign=1739353879-JhNzoFQdXa9DOSU3G2d9Yc5R0ZGTGSSr-0-e98ba5dfb9066866c2a4baa732ec03f1)
图1-52 添加用户命令参数解释
2.设置密码
在Linux系统中,使用passwd命令可以为当前用户修改密码,或为指定的某个用户修改密码。普通用户修改密码时需要输入原密码,root用户可以随意修改其他用户的密码。此命令的格式如下:
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/46_01.jpg?sign=1739353879-sW02bUBv9Gw2v1uaYngWeBZ3NPBuJNLa-0-eafb8c7dc1fc9388f2891acd301f8983)
该命令的常用参数如表1-14所示。
表1-14 passwd命令的常用参数
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/46_02.jpg?sign=1739353879-L1PRix9IyVkzZ9Ysoh1mJol5EmAFFDZg-0-a036e04851cc771f85fec491f2ee6210)
执行如下命令可以在交互式Shell下修改或添加用户密码,如图1-53所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/46_03.jpg?sign=1739353879-9vMg3HCcEKdp5Bk3TjM7wRtuYNIkt6Lr-0-70631883afd7cad2dce769831a6f70eb)
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/46_04.jpg?sign=1739353879-KfpsV1wLb1Q3842sxhtNjMxqvDRCbyiX-0-1f4c61dc721d119795e0a47caa4e4858)
图1-53 配置用户密码
在实际的渗透测试中可能无法获取交互式的Shell来设置密码,同样可以使用一句话命令设置密码。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/46_05.jpg?sign=1739353879-SCPRnAr5QZ176WEpMxDgcPQSRg6yXFCQ-0-d4c0da9a424cd877135224e540bc4e2b)
上面的代码中,chpasswd是Linux系统中用于批量更改用户密码的命令。
3.删除用户
在Linux系统中,使用userdel命令可删除指定用户,如图1-54所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/46_06.jpg?sign=1739353879-xekgyFIll36fwm2SKNOVjTmYWjBKjL3o-0-67adcc4578d08aaf346fdbd4803c3ec6)
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/46_07.jpg?sign=1739353879-gjenlRSgaQAFQjv07BcF2f220wPFKxnM-0-a57072b310a42318eed167dfe5839542)
图1-54 删除用户
该命令的常用参数如表1-15所示。
表1-15 userdel命令的常用参数
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/47_01.jpg?sign=1739353879-XQES2Bcj2RTzqJTOa57dnPj3iaWRIbkB-0-e0ea8b33afaf42161b0eded22e17bc13)
也可以通过删除/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=1739353879-fIQ1nGoRDCOfzY7AdnrPKPxjON5QEsSo-0-688656d0f9a97960a5d977e388be9ef2)
以上命令表示切换到root用户并以root身份执行“whoami”命令,一旦命令执行完成,将返回原用户的Shell下。
su命令使用示例2(如图1-56所示):
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/47_03.jpg?sign=1739353879-P26eHL8fYjxhsyuYZC29qH9i3sEASvEw-0-370bfdd0660034619776329c6caf9df1)
以上命令表示切换至root用户。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/47_04.jpg?sign=1739353879-7StRrZ1MMIXs6wSnVUmzg7d5JLxqBBCP-0-0fa7483af85525079282d237057e0b48)
图1-55 切换用户并执行命令
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/47_05.jpg?sign=1739353879-PS3wAXXhm51D4h2zpCa6YIxcRzmKA15R-0-fed738a485e1e1c9724577cfb278eb4f)
图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=1739353879-IbTUoIXSzFnbcnf0HXChEPwmL1k7NpuD-0-a7a5c7659793a1a5d3a4a2db096056d9)
该命令的常用参数如表1-16所示。
表1-16 sudo命令的常用参数
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/48_01.jpg?sign=1739353879-sSfVhFHjbxNeQUwVIOAkOEdnm8CdpFpq-0-e46bc69c13daf36ce4e1ccc4d25104a2)
sudo命令使用示例:
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/48_02.jpg?sign=1739353879-WWAZLDtRhMEX6kZabD5T4GUqTNoyj0fv-0-d048cdba64afc18d96a782aba1ba517f)
该命令表示以特权身份读取/etc/gshadow文件,如图1-57所示。
执行如下命令,列出当前用户可以使用sudo执行哪些命令。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/48_03.jpg?sign=1739353879-lUEFAYGxyYYVgwdM7hzl0HYP0olx9W6f-0-77164b38b7c60c4ae3f78c412583886e)
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=1739353879-07Z5VXZvizdj30OQoesnNjHtPTpAQUHz-0-3a151f225c80ded25bf94e85c693aaf5)
图1-57 以特权身份读取文件
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/48_05.jpg?sign=1739353879-TETB6HU9AGAj6lqoGhwGCamQ27RecKzY-0-1e5fa8d394ede0d801903d5b26afe3e5)
图1-58 列出文件
ll命令的输出包括文件类型、权限、连接数、所属用户、所属用户组、文件大小、文件最近修改时间、文件名,如图1-59所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/49_01.jpg?sign=1739353879-BtteNLXJtPGZXTRly82U0GnkMyoWtjsw-0-ba3c19a8f49ab80bcc55726dd081c206)
图1-59 文件输出释义
(1)文件类型
在Linux系统中,有7种文件类型,如表1-17所示。
表1-17 Linux文件类型
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/49_02.jpg?sign=1739353879-UlFWCcxkVD1H4zyF0MfJBFmKuMWbVHFv-0-b08d35c515c316d443e4192376867853)
Linux系统不以扩展名来区分文件类型。扩展名的作用是帮助用户确定使用哪个软件打开文件。
(2)基本权限
在Linux系统中,文件权限分为3种,如表1-18所示。它们适用于每一类用户。
表1-18 Linux文件权限类型
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/49_03.jpg?sign=1739353879-MMjyxgONsEVhRel2GmbXtgFH8Zwrf3Mq-0-cb26c29227da1d2b9c22ceaf16270e74)
某一位置为空时显示“-”,表示不具备这个权限。
(3)文件权限的表示方法
文件权限的字符表示如表1-19所示。
表1-19 文件权限的字符表示
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/50_01.jpg?sign=1739353879-i9mGR9qCZlVKULYA6ExWXMZczZlQyGMm-0-92871ce91c86c117ec94d5d876eedbec)
文件权限的进制表示如表1-20所示。
表1-20 文件权限的进制表示
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/50_02.jpg?sign=1739353879-LNzEwGdHSyZy0tWWFnUhAMNOBHC8eqKm-0-84b9b4c099b1487b9cbfb8db4dc3acd1)
Linux系统中,文件/文件夹权限由9位组成,前3位表示所有者的权限,中间3位表示用户组的权限,后3位表示其他用户的权限,如表1-21所示。
表1-21 权限位
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/50_03.jpg?sign=1739353879-K1IhOAiCOKw8GWRgEVnkQiLyE9FepPLl-0-074480e73aaa15c0ab87a693331655f4)
举例如下:
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/50_04.jpg?sign=1739353879-XCam9Kv9y1gC42655q13aV7WCTOSjF1Z-0-ee3e8effd930bf2be5675141fe24e9c4)
以上内容表示,列出的是文件夹“account”的信息。该文件夹的所有者是“root”,具有可读、可写、可执行的权限;文件夹所属的用户组是“linux”,具有可读、可执行的权限,但没有可写的权限;其他用户对此文件夹具有可读、可执行的权限,但没有可写的权限。
(4)修改文件权限
在Linux系统中,使用chmod命令来修改文件或目录的访问权限。此命令的格式如下:
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/50_05.jpg?sign=1739353879-0DcnyDDmtoQXSLE6nT2vDd4guGuTzavB-0-c887bc5b8906d7d23a64db5a063a9109)
常见的权限表示方法有两种:字母法、数字法。
1)字母法。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/50_06.jpg?sign=1739353879-097yWGyEw1uaF8O21f2nFTIqUVXdb4Y0-0-235e0dd38d83f885354e739bf96d5660)
每个参数代表不同的含义,具体解释如表1-22所示。
表1-22 chmod命令参数及其含义
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/51_01.jpg?sign=1739353879-lwBjE4ooZJCC7W6s4tTud4ixp4ilEKDv-0-71dfea5e50c7d45055220b669fa22fdc)
操作符及其含义如表1-23所示。
表1-23 操作符及其含义
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/51_02.jpg?sign=1739353879-wzsYBWxpOffcQG4QpQq6NFHJTF6JMPsl-0-f4b3b66c3cd0023554426c18d7c1b31a)
chmod命令的字母法使用示例(如图1-60所示):
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/51_03.jpg?sign=1739353879-0naf6RnNTRNGfzR8mbeYEZCp7xZB2i4U-0-aea592644b79378f42a78e3145714323)
该命令表示对1.txt文件赋予其他用户可执行的权限。
2)数字法。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/51_04.jpg?sign=1739353879-x12RmqPRuxrCRN7KMg6T6QJHj39QWhiJ-0-9cae16c0e09b69c276004028055054d7)
在文件权限表示方法中,前文已提到过权限符号所对应的八进制表示方法(3种用户权限对应3位八进制数字)。
chmod命令的数字法使用示例1:
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/51_05.jpg?sign=1739353879-yncvbmYeRdQUAdAJf2eF2hQVBFCdKJ4r-0-2cc1ac6c57d67a189318df057ba63479)
该命令表示将1.txt文件设置为所有者和用户组可读、可写、可执行,以及其他用户可读的权限(774所对应的权限符号为rwxrwxr--),如图1-61所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/51_06.jpg?sign=1739353879-1qMG5mhzeEvT1YzgWRJ0oAc7Q89q6lS0-0-7c2fe17ab40b1f90e5a434c0e2b64ca2)
图1-60 chmod命令的字母法使用示例
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/51_07.jpg?sign=1739353879-rviqfZQYmz9ILfyPI3mkAGYXKpL6nIIQ-0-dcb43718452fc252cfb3acc225732d92)
图1-61 chmod命令的数字法使用示例1
chmod命令的数字法使用示例2:
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/51_08.jpg?sign=1739353879-Gr87I558VPL4voa4wRCNlFZTuFB0vBxQ-0-cead9990dcc75f9488dfc0828a65ce04)
该命令表示递归更改test目录及其所有子目录和文件的权限,赋予所有者、用户组和其他用户可读、可写和可执行权限,如图1-62所示。
(5)目录权限
在Linux渗透/提权中常需要上传漏洞利用程序或其他一些辅助工具,所以需要了解目录相关权限。目录权限主要分3种,如表1-24所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/52_01.jpg?sign=1739353879-6qicF5vSktqn4WyCTMn4eZJfrEXe7c6W-0-fbd428b7329c6d933572ee38fc3a3a7d)
图1-62 chmod命令的数字法使用示例2
表1-24 目录权限
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/52_02.jpg?sign=1739353879-HyPBTruWSZGHnwR22aMlOds4qb9MGSbe-0-eb5148fd2feb168ba4e08dad91ce704a)
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=1739353879-TWVFLQxReIi6SbzJ8mjicoqPYsB64QL4-0-db6c645b7016f9494fd9d0552dfd3853)
图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=1739353879-Vsh9EBKwxurHREy806P0B67lEa9hVVKP-0-0d90f98c9b31fc64ee86088485103e7f)
图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=1739353879-I7DGREszLQuBIlabWfzIWvtMs7AMavgx-0-731a702becf7b656222b93b39a240043)
该命令表示使用字符法为/tmp/ServerScan文件添加SUID特殊权限,如图1-65所示。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/53_02.jpg?sign=1739353879-aB2QXtPaNsDkaK4Y6AXUNaZwmtOZiFog-0-1a9b76bb3f57617c7b0397cbff99c6b3)
图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=1739353879-Qp9ZcDoSMTtYuTFsHUA7c6YunC4A7YOL-0-5151e655c5d5bc31131ffd05d569675b)
图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=1739353879-xxAoizRJC0hpCycobjijNlm4CXJNBTyi-0-e153f97c487ce05bdff5937afd64ed76)
该命令表示使用字符法为/tmp/ServerScan文件添加SGID特殊权限。
![](https://epubservercos.yuewen.com/E8FBE0/29427546503421506/epubprivate/OEBPS/Images/53_05.jpg?sign=1739353879-MIxCWUvGqPR7XD6BQRRhEmcSRW3BPjOK-0-3c40d3f31fa1f820451c79132f2f9a2c)
图1-67 为文件添加SGID权限
(3)SBIT
SBIT(Sticky Bit)是另一种特殊权限,用于在共享目录中保护文件和目录。当一个目录被设置了SBIT权限时,该目录中的文件和子目录只能被其所有者和root用户删除或移动,即使其他用户具有该目录的写权限,也无法修改或删除该目录中的文件和子目录。SBIT权限通常用于保护公共目录,如/tmp目录。