ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Kali Linux常用命令大全:从帮助系统到文件与权限管理

Kali Linux常用命令大全:从帮助系统到文件与权限管理

简介:《Kali Linux常用命令大全》是一份面向网络安全初学者、渗透测试人员及Linux入门用户的命令速查手册,针对Kali Linux操作系统中使用频率最高的基础命令进行系统化整理,可帮助读者快速熟悉文件操作、系统状态查看与文本处理等核心技能,减少日常命令行摸索时间。资源包内共包含1个docx格式文档,整体大小约1.96MB,内容按功能模块分章节编排,从最基本的ls目录查看、cd路径切换,到whatis/help/man/info帮助命令、login登录/exit退出、su/sudo用户切换、shutdown/reboot电源管理、touch/mkdir/cp/mv文件管理均有详细说明与参数示例,结构清晰便于按需查阅。文档还覆盖系统信息命令df/free/top及文本处理命令grep/sed/awk,适合作为渗透测试前掌握Kali环境的入门配套材料。目前已有633人学习下载,对于希望系统建立Kali命令框架、提升操作效率的用户来说,是一份轻量实用的随时查阅参考。

1. 拿全套Kali命令之前:先想清楚它解决什么问题

拿到一台预装了几百个工具的Kali,最先卡住你的往往不是某个工具不会用,而是连基本操作都要停下来现查:想翻隐藏文件忘了参数,想切回上一个目录不知道用cd -,想确认最近谁登录过系统不知道last怎么读。这份《Kali常用命令大全》就是把这类高频命令按用途归好类的速查手册,覆盖文件操作、帮助系统、登录会话、电源管理几大块,每条都带参数说明和注意事项。

它适合两类人。一类是刚开始接触web渗透、平时主要靠在图形界面里点工具的新手,先花半天把命令过一遍,后面跑工具才不至于寸步难行;另一类是已经会一些Linux操作但总记混参数的老手,把它当现场速查表用,查一眼就接着干活。

下面我按“先会查帮助、再会管文件、最后会管会话与电源”的顺序拆一遍,重点标出哪些参数在渗透场景里真正常用,哪些坑值得提前绕开。

2. 帮助命令优先:whatis、man与中文手册的落地配置

2.1 为什么先啃帮助系统

很多人的习惯是拿到Kali先装工具、跑脚本,真到命令行里卡住了才去搜索引擎。但在渗透测试现场,不一定有稳定网络供你慢慢查,系统自带的帮助文档才是第一道救命稻草。Kali预装的命令和工具大多是外部程序,参数又多又怪,光靠记忆不现实,学会用帮助系统可以让大部分问题就地解决。

我的习惯是第一件事不碰工具,先确认帮助体系能正常工作——whatis能查到描述、man能翻到完整手册、内建命令能用help兜底。这套东西通了,后面每遇到一个新工具,都可以在几十秒内拿到参数说明,比到处翻笔记靠谱得多。这条对新手和老手都适用,区别只在于老手查得更快。

2.2 四层帮助命令的选型差异

Linux帮助命令分四层,信息量和使用场景差别很大。whatis只给一句话描述,适合快速回忆某个命令是干嘛的;help专门服务Shell内建命令,像cd、echo这类;man是完整手册页,覆盖大部分外部命令;info则是GNU项目的信息文档,内容更详细,Kali默认没装。

命令信息来源信息量适用场景
whatisman数据库一句话描述快速确认命令用途
helpShell内建简要选项列表cd、echo等内建命令
man/usr/share/man手册页完整参数与示例外部命令标准帮助
infoGNU信息文档详细文书深度了解GNU工具
whatis nmap help cd man nc

whatis nmap会输出一行关于nmap的简要描述,确认用途够用。help cd给出的是zsh里cd的选项说明,注意它只对内建命令有效,对nmap这类外部命令会直接报错。man nc则是查看nc的完整手册,页面里会写清每个参数、退出状态和示例,遇到不确定的-e、-z这类参数时翻一下最稳。如果whatis查询不到结果,常见原因是man数据库没建立,执行sudo mandb重建索引后再查即可。

2.3 中文man的安装与别名配置

原资源里给了一条很实用的路子:Kali上装中文手册页,再给zsh配一个cman别名,让man默认读中文。Kali默认Shell是zsh,这个细节后面还会提到,配置时要注意别写错文件。

sudo apt update sudo apt install -y manpages-zh echo 'alias cman="man -M /usr/share/man/zh_CN"' >> ~/.zshrc source ~/.zshrc

第一行更新软件源索引,第二行安装中文man包。第三行的man -M是指定手册搜索路径,/usr/share/man/zh_CN是中文手册页存放目录,把这条alias写进~/.zshrc后,执行cman就能直接看中文手册。最后一行source让配置立即生效。装完后要有个心理预期:不是所有man页面都有中文翻译,核心命令大多有,冷门工具还是会回退到英文页。

注意:Kali默认使用Zsh,别名别写进.bashrc,否则新开的终端不生效。写完~/.zshrc记得source一下。

3. 文件系统高频命令:目录切换、文件复制与链接参数速查

3.1 ls、cd、pwd在渗透场景里的正确用法

文件操作是每个会话里最频繁的动作,Kali的/var/log、/etc、/tmp几个目录在渗透测试里翻得最多。ls最常用的组合是-a、-l、-t、-h:-al看全部文件包括隐藏文件,-lt按修改时间排序方便找最近变动的文件,-lh让文件大小以易读的K、M单位呈现。ll在Kali的zsh里不保证默认存在,我自己习惯在配置里给ls -alh起个别名,后面第6章会一起给。

ls -alh /etc ls -lt /var/log cd /var/log cd - pwd -P

第一条罗列/etc下含隐藏文件在内的所有条目并带可读大小;第二条把/var/log下的文件按修改时间倒序排,找“最近被改过的日志”时很好用。第三条cd /var/log切到日志目录,第四条cd -是切回上一个工作目录,在内网来回翻配置文件时效率提升明显。最后pwd -P打印的是物理路径而非符号链接路径,配合软链接工作时能看清你实际站在哪个目录层级。

3.2 cp、mv、rm参数速查与删除禁忌

文件复制、移动、删除在Kali里最常见的应用场景是整理扫描结果、备份配置、清理临时文件。三个命令参数看着多,真正高频的就那几组,我按资源内容整理成一张速查表:

命令重点参数含义
cp-a等价于-dpR,复制时保留属性与符号链接
cp-p保留源文件属性
mv-i目标已存在时覆盖前询问
mv-u源文件更新时才覆盖
rm-r/-R递归删除目录及子目录
rm-f强制删除不询问
cp -a /etc/passwd /tmp/passwd.bak mv -i /tmp/passwd.bak /root/passwd.bak rm -rf /tmp/passwd.bak

第一条保留权限和属性做备份,这在需要保持文件原始模式时很关键,比如备份一个可执行脚本。第二条加了-i,如果目标目录已有同名文件会先询问,防止误覆盖。第三条rm -rf是双刃剑,资源里特别提到:对于链接文件,rm只删除链接本身,原有文件不会动,所以删软链接基本安全;但删硬链接时要意识到它和原文件共享同一个inode,删掉一个并不等于释放数据块。历来翻车案例大多发生在rm -rf后才发现路径写错,我的习惯是删目录前先ls确认一次。

3.3 touch、mkdir、ln:创建与链接

touch有两个用途:创建空文件,以及把已存在文件的时间属性更新为当前时间。渗透里常拿它测试目标目录是否有写权限,能touch出文件说明可以写。mkdir -p递归创建多级目录,比一层层mkdir省事。ln创建链接时,软链接必须写绝对路径这个坑值得单独说。

touch /tmp/test-write.txt mkdir -p /tmp/loot/a/b/c ln -s /etc/passwd /tmp/passwd-link ls -l /tmp/passwd-link

第一条在/tmp创建空文件,验证当前用户对目录的写权限。第二条递归建三层目录,适合在收集漏洞利用过程中需要组织多级文件的时候。第三条创建指向/etc/passwd的符号链接,注意ln -s的参数顺序是“源文件在前、链接名在后”,很多新手第一次会写反。第四条用ls -l检查链接是否生效,如果目标显示红色或者闪烁,基本可以断定是源路径写成相对路径导致断链。

注意:ln -s的源文件务必写绝对路径,否则离开当前目录后链接立刻失效,这是软链接最容易踩的坑。

4. 文件查看与定位:cat、less、find三个高频场景

4.1 cat、more、less、head、tail:查看命令怎么选

日志和配置文件是渗透测试里的情报来源,查看命令选不对会浪费大量时间。cat适合小文件,-n显示行号,-A能把不可见字符显示出来——处理从Windows传过来的脚本时,行尾的^M一眼就能看到。more是按页显示的老牌分页器,按键习惯接近vi,但只能向前翻,实际用下来不如less顺手。less支持前后翻页、/向下搜索、?向上搜索,是所有查看命令里最值得长期用的一个。

cat -n /etc/hosts less /var/log/syslog tail -f /var/log/apache2/access.log

第一条带行号输出hosts,排查域名解析问题够用。第二条用less打开系统日志,配合/error直接定位关键字,几百KB的文件翻起来也不卡。第三条是tail -f,实时尾随访问日志输出,做web渗透时盯扫描结果、盯漏洞利用后的回连记录,这个命令能一直挂着。head和tail默认只显示10行,-n指定行数,-c按字符数截取,后者在日常操作里用得少。

4.2 find、locate、which:三种定位方式

定位文件有三个层次:find实时遍历文件系统,条件最灵活;locate查索引数据库,速度快但依赖updatedb定期更新;which只在PATH环境变量里找可执行文件,用于确认命令的真实位置。三者场景不同,不能互相替代。

find /var/log -name "*.log" -mtime -1 locate -i nmap which nc python3

第一条在/var/log下找最近一天内修改过的.log文件,-mtime -1表示一天以内,这个参数在做日志分析时非常常用。第二条-i忽略大小写查nmap相关路径,locate输出速度快,但刚创建的文件它找不到,因为索引还没更新。第三条which查看nc和python3的绝对路径,内网环境里可能同时存在系统自带和手工上传的多种版本,用它确认你实际执行的是哪个二进制,避免“明明装了工具却调不对版本”的尴尬。find还可以用-size +100M找大文件、-perm按权限位筛选,提权阶段找特殊权限文件时再组合细化。

4.3 gzip与tar:压缩打包的固定搭配

gzip只能压缩单个文件,压缩后文件名会多出.gz后缀;tar负责把一堆文件和目录打包成一个文件,两者配合才是完整的压缩方案。资源里提到的-c建立新压缩文件、-z调gzip算法、-x解压、-v显示过程、-f指定文件名,下面这个组合覆盖了最常见的使用方式。

gzip -v /var/log/messages tar -czf logs.tar.gz /var/log tar -xzf logs.tar.gz -C /tmp/logs

第一条把/var/log/messages压缩成.gz,-v显示压缩率。第二条把整个/var/log目录打包并用gzip压缩,-c创建、-z压缩、-f指定输出文件名,这组参数是打包的固定写法。第三条解压到/tmp/logs,-x解包、-C指定解压目标目录。有一个常见坑:直接在绝对路径下执行tar -czf,解包后文件会带上完整路径层级,我一般在目标目录的上级先cd进去再打包,解出来结构才干净。

5. 登录、会话与电源命令:常见问题排查清单

5.1 login、exit与last:登录审计是第一个现场

login平时用得少,但它背后承载的是Kali的多用户登录模型——一个系统可以同时接受多个用户从不同虚拟控制台登录,切换用Alt+F1到F6。exit没有参数,作用就是退出当前Shell,回到登录界面。真正高频的是last,它读取/var/log/wtmp记录,显示近期用户或终端的登录情况,是应急响应里判断“谁来过”的第一手证据。

last -n 10 last -d

第一条显示最近10条登录记录,-n指定条数,看最近异常时段内有哪些账号登录过。第二条把日志里的IP地址解析成主机名,但资源里也提醒过:在没有配置反向解析的内网环境里,这个功能基本没意义,反而拖慢输出速度。last这条命令在事件排查中被问到的频率很高,管理员靠它确认是否有未授权的登录行为。如果怀疑系统被入侵,第一步就是先跑last和lastb,把会话记录存成文件归档再继续分析。

5.2 su与sudo:权限切换别踩边界

Kali的日常操作里,权限切换是最高频也最容易混淆的动作。资源里对su和sudo的区别给了一句关键说明:su切换用户时只切换root身份,但shell环境仍保留普通用户的设置;而sudo允许普通用户执行管理员账户才能执行的命令,执行完回到原身份。

su - root sudo whoami sudo -i

第一条su -带一个减号,会重新开启登录Shell并加载root的环境变量,推荐用这个而不是裸su root。第二条sudo whoami输出root,验证当前用户具备临时提权能力。第三条sudo -i则是以root身份启动交互式Shell,适合需要连续执行多条管理命令的场景。两者的边界在资源里写得很清楚,我补充一个实际教训:混淆这个边界最常见的结果是——用su切换后在脚本里调用命令发现环境变量不对,或者用sudo执行重定向到文件时提示权限不足,因为重定向是Shell做的,不在sudo提权范围内。

命令表现适用场景
su切换为其他用户身份,可能保留原环境变量需要长时间以其他身份工作
sudo单条命令提权,记录审计日志偶尔执行管理员操作

5.3 shutdown、halt、reboot:安全关机不是玄学

Kali作为攻击机,很多人习惯干完活直接关虚拟机窗口,这个动作相当于强制断电。资源里特意强调:Linux后台运行着许多进程,直接断电源可能让进程数据丢失,系统处于不稳定状态,甚至损坏硬件设备。shutdown会通知所有登录用户、冻结login禁止新用户登录,然后逐项关闭服务,最后才关机;halt则不会逐项关闭服务,直接执行硬件关机;reboot参数和halt基本一致,用于重启。

shutdown +5 "System will shutdown after 5 minutes" shutdown -c

第一条是在5分钟后关机并广播通知,适合需要给其他登录用户留缓冲时间的场景。第二条取消已计划的关机,-c只对还没执行的shutdown有效。这里有一个值得记住的参数:shutdown -k只是发送警示信息给所有用户,并不会真的关机,适合演练时用。halt的参数里-n不进行sync同步、-d不写记录、-i先关闭网络接口,这些在正常操作里很少动,但要意识到它们的存在。

5.4 命令失效与环境问题:五条现场排查记录

这一节集中列几条在Kali现场复现率最高的故障,按“现象→原因→解决”的方式写,方便直接对号入座。

现象1:sudo apt install提示Unable to locate package。原因:软件源索引过期,包名在本地索引里查不到。解决:先执行sudo apt update刷新索引再装,Kali默认源更新频率低,新装的系统尤其常见。

现象2:ln -s建完软链接,ls -l显示目标红色或闪烁。原因:源文件写成了相对路径,离开当前目录后链接指向的位置不存在。解决:删除重建,源路径用绝对路径,例如ln -s /etc/passwd /tmp/passwd-link。

现象3:locate找不到刚创建的文件。原因:locate查的是索引数据库,不是实时文件系统,新建文件尚未入库。解决:执行sudo updatedb强制重建索引,再重新locate。

现象4:脚本加了执行权限仍然报Permission denied。原因:目标所在分区以noexec方式挂载,或者当前用户权限不够。解决:用mount -o remount,exec重新挂载所在分区,或确认文件属于当前用户且权限位正确。Kali的/tmp在某些安全加固配置下会带noexec,这也是为什么临时脚本放/tmp跑不起来的原因。

现象5:改了别名,新开终端还是不生效。原因:配置写到了.bashrc,而Kali默认Shell是zsh,也可能写完没source。解决:确认当前Shell是echo $SHELL,配置写入~/.zshrc,执行source ~/.zshrc。

五条里第一条和第五条的排查成本最低,但现场见到最多。多数是环境初始化阶段没走完,不是命令本身的问题。

6. 把命令串成习惯:一套别名与函数配置

前面拆了那么多参数和场景,最后落成一个具体动作:把高频组合做成zsh别名和函数,存进~/.zshrc。命令大全的价值在于查,但更高一层是让常用组合变成肌肉记忆,不用每次翻。

alias ll='ls -alh' alias cman='man -M /usr/share/man/zh_CN' alias logcheck='tail -f /var/log/syslog' sysinfo() { echo "== last login ==" last -n 5 echo "== disk ==" df -h echo "== memory ==" free -h }

第一行把ls -alh绑定到ll,每次列目录直接看到隐藏文件和可读大小,这是日常使用频率最高的别名。第二行是第2章中文man的别名,查手册时少打一串参数。第三行把实时日志检查绑定成logcheck,打开终端就能盯系统日志。sysinfo函数把登录审计、磁盘、内存三条命令串成一次健康检查,在拿到陌生机器时先跑一遍,环境状态一目了然。配置写入~/.zshrc后执行source ~/.zshrc生效。

有一回在某个内网环境里,我图省事没先配别名就直接开干,结果连翻日志都要现场敲一串参数,效率惨不忍睹。从那以后每次拿到新的Kali环境,我第一件事就是检查help和man是否可用、last是否正常、然后把这几个别名和函数配好再开始做事。工具装在皮上,命令熟在骨子里,这份命令大全的价值也在这个习惯里。希望帮到你。

本文还有配套的精品资源,点击获取

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进