Python渗透测试编程技术:方法与实践(第2版)
上QQ阅读APP看书,第一时间看更新

2.3.1 文件系统

使用Linux操作系统时,最先遇到的问题就是用户权限,很多程序都要求只有root权限的用户才能运行。但是在很多情况下,更高的权限也意味着更大的风险。如果以root用户的身份操作失误,可能会对正在测试的系统造成破坏。所以在很多时候以非root用户的身份进行测试是一个更好的选择。

2020.1版本的Kali Linux 2中默认的用户不再是以前的root,而是kali,当这个用户在试图完成一些root权限的访问和操作时,需要使用sudo并验证密码的方式,sudo表示暂时切换到超级用户模式以执行超级用户权限,提示输入密码时该密码为当前用户的密码,而不是超级账户的密码。为了频繁执行某些只有超级用户才能执行的权限,而不用每次输入密码,可以使用命令“sudo -i”。

接下来了解Kali Linux 2的文件系统。

接触过Linux的读者肯定听说过这样一句话——在Linux中一切皆文件。这一点和Windows的差异十分明显,在Linux中,无论目标是一个文本,还是一个设备(例如网卡),都可以使用相同的界面完成操作。也就是说,在Windows中是文件的内容,它们在Linux中也是文件,而那些在Windows中不是文件的内容,例如进程、硬盘等,甚至管道、socket也是文件。总之,在Linux中一切都可以完成读、写、改操作。Linux的所有文件共同构成了文件系统,在了解Linux的文件系统前先来了解以下几个概念。

□ 文件:一组在逻辑上具有完整意义的信息项的系列。

□ 目录:相当于Windows下的文件夹,用来容纳相关文件。因为目录可以包含子目录,所以目录可以层层嵌套,形成文件路径。在Linux中,目录也是以一种特殊文件被对待的,所以用于文件的操作同样也可以用在目录上。

□ 目录项:在一个文件路径中,路径中的每一部分都被称为目录项,如路径/etc/apache2/apache2.conf中,目录/、etc、apache2和文件apache2.con都是一个目录项。

Kali Linux 2的文件系统如图2-18所示。接下来对其中一些重要目录进行简单介绍。

图2-18 Kali Linux 2的文件系统

□ /boot:用来存储Linux操作系统的内核及在引导过程中使用的文件。

□ /dev:dev是设备(device)的英文缩写,在这个目录中包含了所有Linux操作系统中使用的外部设备。它实际上是一个访问这些外部设备的端口。我们可以非常方便地去访问这些外部设备,就和访问一个文件、一个目录没有任何区别。

□ /etc:配置文件存储的目录,例如人员的账号密码文件、各种服务的起始文件等。一般来说,这个目录下的各文件属性是可以让一般用户查阅的,但是只有root有修改权限。

□ /home:系统默认的用户home目录,新增用户账号时,用户的home目录都存储在此目录下,Kali Linux 2中kali用户的目录就在/home下。

□ /lib、/usr/lib、/usr/local/lib:系统使用函数库的目录,程序在执行过程中,调用一些额外参数时就需要函数库的协助。

□ /mnt:用于存储挂载储存设备的挂载目录,例如磁盘、光驱、网络文件系统等。

□ /media:挂载的媒体设备目录,一般外部设备挂载到这里,如cdrom等。例如插入一个U盘,一般会发现,Linux自动在这个目录下建立一个disk目录,然后把U盘挂载到这个disk目录上,通过访问这个disk来访问U盘。

□ /opt:用来安装附加软件包,是用户级的程序目录,可以理解为Windows操作系统中的D:/Software。

□ /proc:/proc文件系统是一种特殊的、由软件创建的文件系统,内核使用它向外界导出信息,/proc系统只存在内存当中,而不占用外存空间。

□ /root:系统管理员root的目录。

□ /sbin:放置系统管理员使用的可执行命令,如adduser、shutdown等。与/bin不同的是,这几个目录是给系统管理员root使用的命令,一般用户只能“查看”而不能设置和使用。

□ /tmp:一般用户或正在执行的程序临时存储文件的目录,任何人都可以访问,重要数据不可放置在此目录下。

□ /srv:服务启动之后需要访问的数据目录,如WWW服务需要访问的网页数据存储在/srv/www内。

□ /usr:应用程序存储目录,/usr/bin存储应用程序,/usr/share存储共享数据,/usr/lib存储不能直接运行的,却是许多程序运行所必需的一些函数库文件。

□ /var:放置系统执行过程中经常变化的文件,/usr是安装时会占用较大硬盘容量的目录,那么/var就是在系统运行后才会渐渐占用硬盘容量的目录。

□ /bin:可执行二进制文件的目录,如常用的命令有ls、tar、mv、cat等。