Kali Linux设置root用户全攻略:密码、单用户模式与常见坑
2026/9/18 7:39:45 网站建设 项目流程

第一次用Kali的时候,我装完系统第一件事就是打开终端敲sudo passwd root。你大概率也一样。明明是一个以“安全测试”为招牌的发行版,装完却默认不让你用root,很多刚接触Kali的人在这个地方就要卡半天——不是不知道root是什么,而是搞不明白“为什么别人教程里直接是root,我这边却要sudo加密码”。

这篇文章就把Kali里设置root用户这件事彻底讲透。标题虽然是“2020最新”,但Kali是滚动更新发行版,从2020年到今天,安装器和桌面环境换了好几轮,root设置的底层思路反而一直没变:要么在系统里直接给root设密码,要么通过单用户模式在开机阶段重置root密码。这两种方式各有用武之地,前者适合刚装完系统、想图省事的人,后者适合忘了密码或者不小心把自己锁在外面的情况。不管你属于哪种,这篇都值得看完。

1. 为什么在Kali里root权限这么重要:权限模型与典型场景

1.1 sudo和root究竟差在哪

很多新手把sudo和root当成一回事,这是一个很大的误解。sudo的意思是“以其他用户身份执行命令”,默认是以root身份,但它和直接登录root有本质区别。

拿我常用的一个比喻来说:root是系统里的“房东”,拥有整套房子的所有钥匙,能拆墙、改水电、动承重结构;普通用户是“租客”,只能在自己房间里活动。sudo则是“门卫代开门”——你每次要进特殊房间,门卫帮你刷一次卡,刷完你办完事还得回到自己房间。而su -才是真正“变成房东本人”,在这个终端里所有后续操作都是房东身份,不用再反复刷卡。

具体到命令层面,最常见的几个写法是:

sudo passwd root # 给root设置密码 sudo -i # 以root身份开一个交互式shell,环境变量也切过去 sudo -s # 以root身份开shell,但环境变量可能还留着一部分 su - # 切换到root,需要root密码

它们的核心区别在于:sudo依赖的是当前用户是否在sudo组里,校验的是当前用户的密码su直接校验root自己的密码。所以你如果只是设了root密码但从不使用su,那么root密码就只是个“备用钥匙”,平时根本不用。

1.2 哪些场景必须root,哪些其实不需要

Kali里的安全工具多到爆,但不是所有工具都必须root才能跑。我自己实际使用中总结过一张表,新手可以照着判断:

场景是否需要root原因说明
apt install安装软件包需要写系统目录、更新dpkg数据库
修改/etc/hosts/etc/network/interfaces需要系统级网络配置
Wireshark抓包需要(或配置capability)默认需要访问网卡原始数据
airodump-ng等无线工具需要需要把无线网卡切到监听模式
msfconsole做一般操作不一定普通扫描不需要root,绑定低端口才需要
写Python脚本、编译程序不需要用户目录下有完全权限
浏览网页、看文档不需要root反而可能引发配置文件权限问题

这条区分特别重要。因为很多人装完Kali第一件事就是开root,然后用root去干所有事,结果某天用普通用户打开浏览器,发现书签没了、下载目录打不开——这多半是root模式下创建的文件,普通用户没权限读,反过来也一样。root权限是“方便”,但也是“责任”。

2. 直接设置root用户:一条命令解决核心问题

2.1 第一步:给root设置密码

这是最常规的操作,也最简单。打开终端,执行:

sudo passwd root

系统会先要求你输入当前用户的密码来验证sudo权限,然后会让你输入两次新的root密码。看到passwd: password updated successfully就代表设置成功了。

这里有个细节值得说:如果你用的是Live模式(U盘启动但不安装)跑Kali,默认账户是kali,密码是kali,你要给root设密码同样先执行sudo passwd root。很多人卡在这一步是因为Live模式下某些精简版本里没有安装sudo,会提示sudo: command not found。遇到这种情况,先切到root:

su -

Live模式下的root初始状态是没有密码的,所以直接su -就能进去,进去后执行passwd root就可以重新设置root密码。这也是新手经常搞混的地方,以为必须先有root密码才能su,实际上在多数Kali Live环境里root是“无锁”状态,不需要密码就能进入。

2.2 验证与切换:su和sudo -i怎么选

设置好之后,验证方式很简单,新开一个终端敲:

su -

输入刚设置的root密码,看到提示符变成root@kali:~#就对了。Kali的默认提示符是┌──(kali㉿kali)-[~]这种带装饰的风格,切到root后装饰符号会变,但一眼能认出来。

我个人更推荐日常使用sudo -i,而不是su -。原因很简单:sudo -i只需要当前用户密码,不会明文暴露root密码的使用频率,系统日志里只记录“某个sudo用户执行了提权”,相对更干净;su -则要求你必须输入root密码,每次都会留下认证记录。另外在部分安装了SELinux或者特殊PAM配置的发行版上,su还会被限制,而sudo的兼容性更好。Kali默认没有SELinux,但既然要学Linux,养成用sudo的习惯总没错。

2.3 想让root用户直接图形界面登录?得改两个地方

给root设完密码后,很多人的下一步就是“重启,在登录界面选root”。结果发现登录界面根本没有root这个选项,或者输入密码直接提示认证失败。这不是你密码设错了,而是Kali默认禁用了root的图形登录。

Kali 2020时代的默认桌面是XFCE,用的显示管理器是LightDM;后续一些版本改成GNOME,用的是GDM。两者配置方式不一样,这也是网上教程互相打架的原因。

如果是LightDM(XFCE桌面),需要创建或修改配置文件:编辑/etc/lightdm/lightdm.conf,在[Seat:*]段落里加入:

[Seat:*] allow-guest=false greeter-show-manual-login=true

greeter-show-manual-login=true是关键,它让登录界面出现“手动输入用户名”的输入框,这样你才能敲root进去。

如果是GDM(GNOME桌面),手动登录默认也是隐藏的,需要修改:

sudo nano /etc/gdm3/daemon.conf

找到[daemon]段落,加入:

[daemon] AutomaticLoginEnable=false TimedLoginEnable=false

同时在PAM层放行root。编辑/etc/pam.d/gdm-password,注释掉这一行:

auth required pam_succeed_if.so user != root quiet_success

这行PAM规则的默认逻辑是“非root用户且认证成功才放行”,注释掉就相当于不再拦截root。改完重启显示管理器,或者直接重启系统,登录界面选“未列出”,输入root和密码就能进去了。

不过说实话,Kali默认的XFCE或GNOME桌面以root身份登录后,多少会有点小毛病。最常见的就是文件管理器警告:以root身份运行时,GNOME的Nautilus会弹一条不支持以 root 用户运行的warning,部分功能(比如预览、缩略图生成)会罢工。这不是你配置出了问题,是GNOME从设计上就对root运行图形程序不友好。我的习惯是图形界面仍然用普通用户登录,只在终端里用sudo提权,这样能避开一大堆“root桌面”的连带问题。

2.4 允许root通过SSH远程登录的配置

还有一种需求是远程SSH登录Kali,并且想直接用root。Kali默认的OpenSSH配置也是禁止root登录的,需要手动放开。

编辑/etc/ssh/sshd_config

sudo nano /etc/ssh/sshd_config

找到PermitRootLogin这一行,改成:

PermitRootLogin yes

改完重启SSH服务:

sudo systemctl restart ssh

然后就可以用root + root密码通过SSH登录了。这里必须提醒一句:如果你把Kali暴露在公网上,开启SSH的root登录等于直接给全世界发了一张“来试密码”的邀请函。Kali默认禁用root SSH是有安全考量的。我自己只在虚拟机里这么干,或者在内网靶场环境里临时开一下,用完后立刻改回prohibit-passwordno。如果实在需要远程root操作,建议配合密钥登录而不是纯密码,安全等级完全不一样。

2.5 回退:如何把root重新锁起来

设置root密码之后,万一你后悔了,或者觉得还是保持默认状态更安全,可以随时锁住root账户:

sudo passwd -l root

-l参数是lock,锁住之后root密码就失效了,任何用root密码的登录方式都会失败。但注意,锁住root账户不会影响你已经开启的sudo权限,sudo -i依然能用,因为sudo通过的是当前用户的权限。想重新解锁就执行:

sudo passwd -u root

这个“可逆”的特点很实用,比如你要临时把root密码告诉同事,用完再锁上,整个过程不需要重启系统。

3. 单用户模式设置root用户:忘记密码时的最后通道

3.1 单用户模式是什么,为什么它能重置root密码

系统层面给root设密码很简单,最怕的是“忘了root密码”或者“普通用户密码也忘了”——这时候上面的方法全部失效,因为你连sudo都用不了。这正是单用户模式(Single User Mode)存在的意义。

单用户模式是Linux的一种最小化启动状态,它会忽略正常的登录流程,直接给你一个root shell。这个模式下系统只加载最基本的文件系统和内核模块,不启动网络服务、不启动图形界面、不启动多用户环境,自然也不会校验你的密码。只要你能让系统以单用户模式启动,你就能以root身份执行任何命令,包括重置密码。

这个概念很反直觉,但也是Linux安全模型的经典边界:物理接触等于最高权限。任何一台Linux机器,只要有人能接触物理硬件、能碰键盘,在默认配置下都可以通过单用户模式重置root密码。这也是为什么服务器机房要有物理门禁,为什么全盘加密那么重要——如果硬盘本身加密了,单用户模式也只能停在解密阶段,进不去系统。

3.2 通过GRUB进入单用户模式的完整操作

我在Kali上操作过很多次,流程基本稳定。这里以最常见的虚拟机环境(VMware/VirtualBox/Hyper-V)为例,物理机原理一样。

第一步:重启Kali。重启过程中,当屏幕出现GRUB菜单时,按下键盘的e键进入编辑模式。GRUB菜单一般长这样,有“Kali GNU/Linux”之类的选项。如果你没看到菜单,可能是GRUB的超时时间设为0了,在开机时一直按着Shift键(BIOS启动)或者连按ESC键(UEFI启动)就能强制唤出菜单。

第二步:在编辑界面里,找到以linux开头的那一行,后面跟的是内核路径,形如:

linux /boot/vmlinuz-5.10.0-kali-amd64 root=UUID=... ro quiet splash

把光标移到这行末尾,删掉quiet splash,然后追加一个单词:

single

完整效果大概是:

linux /boot/vmlinuz-5.10.0-kali-amd64 root=UUID=... ro single

第三步:按Ctrl+X或者F10引导系统。此时系统会跳过正常登录流程,直接进入一个root shell,提示符是#,而且不会要求输入密码。

这个模式在不同系统上的叫法不一样,有些新系统的参数是systemd.unit=rescue.target,效果等价于传统的single。在Kali上single仍然有效,我实测2020到2025的多个版本都能用。如果你在某个变体上发现single没反应,换成systemd.unit=rescue.target再试一次即可。

3.3 进入单用户模式后的关键操作:挂载、改密码、重启

成功进入单用户模式的root shell后,先别急着输passwd。有一个极其容易踩的坑:根文件系统此时可能还是只读挂载的。因为GRUB启动参数里的ro指定了read-only,系统为了文件系统安全,在进入救援模式时会保持只读状态。

如果你直接执行passwd root,会提示无法写shadow文件,或者写入了但重启后不生效。正确做法是先重新挂载根文件系统为可写:

mount -o remount,rw /

执行完没有任何提示就是成功。然后再重置密码:

passwd root

输入两次新密码,看到passwd: password updated successfully后,重启系统:

reboot -f

或者:

exec /sbin/init

重启后就能用新root密码正常登录了。

这条流程我经历过一次“看似成功实则失败”的教训:第一次进单用户模式时没执行remount,直接passwd,系统也没报错,但重启后旧密码依然有效,新密码像没发生过一样。浪费了十分钟才反应过来是只读挂载的问题。所以每次教程里强调remount真不是废话,是实战趟出来的经验。

3.4 单用户模式的几个变体方案

除了在linux行末尾追加single,还有几种变体方法,根据实际环境选择:

方案一:直接指定init=/bin/bash

linux行末尾改成:

linux /boot/vmlinuz-... root=UUID=... ro init=/bin/bash

这种方式比single更粗暴,它直接跳过了systemd,让内核把/bin/bash作为1号进程启动。进入后同样需要先:

mount -o remount,rw / passwd root

但这个模式下系统状态非常“原始”,PATH环境变量都不完整,部分命令可能要写完整路径,比如/usr/bin/passwd。如果你看到passwd: command not found,别慌,用完整路径执行即可。

方案二:使用GRUB命令行

在GRUB菜单界面按c进入grub命令行,手动引导:

grub> set root=(hd0,msdos1) grub> linux /vmlinuz-... root=/dev/sda1 single grub> initrd /initrd.img-... grub> boot

这个方法适合GRUB菜单损坏、找不到内核条目时的应急处理。不过Kali的GRUB配置一般比较正常,新手用不太到这个方案,知道有这回事就行。

3.5 2020之后Kali版本的差异

标题里的“2020最新”在今天看已经有年头了,但如果你现在翻论坛的老教程,会发现很多针对2020前版本的root设置方法,放到现在会失灵,主要差异集中在三点。

第一,Kali官方在2019年底到2020年初明确把默认用户从root改成了普通用户。再早的Kali(以及更早的BackTrack)装完就是root,直接登录就行。2020后的所有版本默认创建普通用户kali,这是分水岭。

第二,默认桌面和显示管理器随版本变化。2020.x默认XFCE+LightDM,后来部分镜像提供GNOME版本,对应GDM。网上很多教程只写其中一种,照抄自然不灵。

第三,GRUB菜单的内核行内容会变化。UUID变了、内核版本号变了、启动参数多了quiet splash或少了某个参数。所以教程里的命令不能无脑复制,要理解“找到linux行、在末尾加参数”这个思路,内核具体文件名可以不同。

4. 实操中容易踩的坑:图形界面、虚拟机与版本差异

4.1 root登录图形界面的常见报错与对策

这是新手问得最多的一类问题。改完root密码,满心欢喜想用root登录桌面,结果报错,常见的就那么几种。

“Authentication failed” / 认证失败:密码肯定是对的,但显示管理器或PAM拦截了root。对策就是前面2.3节讲的,要么改LightDM/GDM的配置允许手动登录,要么注释掉PAM里对root的拦截规则。另外有些精简版Kali安装的是SDDM或其他显示管理器,配置思路一样,找greeter相关配置或PAM文件即可。

部分应用以root运行时的warning:比如在终端里执行sudo nautilus打开文件管理器,会看到类似不支持以 root 用户运行的提示,这是GNOME组件对root权限的自我保护。Nautilus会退化一些功能,但不至于完全打不开。如果不想看到这个提示,两个替代方案:一是安装专门的root文件管理器,比如pcmanfm配合sudo运行;二是用命令行管理文件,mc(Midnight Commander)或者纯shell操作都行。

root登录桌面后WiFi连不上、音量图标消失:很多桌面组件是按普通用户会话初始化的,root会话下某些服务起不来。这个问题在Kali里不算罕见,尤其是NetworkManager在root会话下的管理受限。单论“用root桌面”这件事,体验确实不如普通用户,我再次建议图形界面用普通用户,终端提权用sudo。

4.2 虚拟机里设置root的注意事项

用VMware、VirtualBox或Hyper-V装Kali做实验的人非常多,虚拟机和物理机在root设置上有几个不太一样的点。

虚拟机里进GRUB编辑菜单时,鼠标可能被VMware Tools或Hyper-V增强会话“捕获”,导致你按了键盘没反应。解决办法是先在虚拟机的显示菜单里操作,或者直接使用键盘快捷键Ctrl+G切换鼠标捕获状态。VMware里按Ctrl+Alt释放鼠标,VirtualBox里是Right Ctrl,Hyper-V则是Ctrl+Alt+左箭头。这个细节看似无关紧要,但真的有人在GRUB界面卡住,以为键盘坏了。

虚拟机改root密码之前强烈建议拍快照。虚拟机的好处就是可以随便折腾,VMware的Snapshots、VirtualBox的Snapshots、Hyper-V的Checkpoints都行。我自己的习惯是:先快照,再操作,确认没问题后保留快照一两天,再删除。如果操作过程中把系统搞坏了,恢复快照也就是点一下的事。

另外,如果你在Hyper-V里装的是Kali,并且开启了“增强会话模式”,root设置完成后可能无法直接以root登录增强会话桌面。这不是root的问题,而是增强会话服务(xrdp类似机制)在处理root登录时有限制。我在Hyper-V里试过,root能通过普通控制台登录,但增强会话窗口会认证失败。所以Hyper-V下想用root桌面,建议用普通控制台,或者干脆不要开增强会话。

4.3 改配置文件出错后的急救方案

设置root用户涉及到/etc/passwd/etc/shadow、PAM文件、显示管理器配置等多个系统关键文件,手一滑改错一个,系统可能直接无法登录。

最典型的场景是:你想禁止root登录,手动去编辑/etc/shadow,把root密码那一栏改成了*或者!,结果把自己锁死了。或者改PAM配置时把pam_succeed_if写反,导致所有用户都没法图形登录。

急救方案还是单用户模式。重启进入单用户模式后,你拥有root权限,可以直接把配置文件改回来。如果是在编辑/etc/shadow时手误,可以这时候执行passwd root重新生成正确的shadow条目。如果不知道原文件长什么样,备份就很重要了。改任何系统配置之前,先执行:

sudo cp /etc/passwd /etc/passwd.bak sudo cp /etc/shadow /etc/shadow.bak sudo cp /etc/gdm3/daemon.conf /etc/gdm3/daemon.conf.bak sudo cp /etc/lightdm/lightdm.conf /etc/lightdm/lightdm.conf.bak

出问题后把备份拷回去就行。这一步的成本几乎为零,但能救命。

4.4 版本滚动更新带来的“教程过期”问题

Kali是滚动更新发行版,这意味着即使你照着“2020最新”的教程操作,过两年再看,某些路径和默认行为可能悄悄变了。举个例子,Kali的默认桌面在2020.x是XFCE,但官方后来又优化了GNOME版本的支持;默认SSH服务有些版本叫ssh,有些叫openssh-server;GRUB启动参数从某个版本开始默认带splash但不带quiet,显示输出模式都不一样。

所以我的建议是:看教程学“思路”,不要学“死命令”。比如root设置,核心思路永远是三条——给root设密码(sudo passwd root)、决定是否允许图形/SSH登录(改显示管理器和PAM)、忘记密码时用单用户模式重置(GRUB加single)。这个思路放在Ubuntu、Debian、OpenEuler等其它Linux发行版上也基本成立,区别只是配置文件路径和包管理器命令不同。这也是为什么我始终认为,Kali的第一课不该是某个扫描工具怎么用,而应该是“你用的这个系统本身怎么管理”。

5. 日常使用建议:root不是拿来当默认账户的

5.1 普通用户日常 + sudo提权,是最稳的组合

写了这么多设置root的方法,最后必须泼一盆冷水:日常使用不建议一直待在root里。Kali默认不用root,并不是官方不懂安全测试需要权限,恰恰是因为在root状态下,一个手误就可能毁掉整个系统。

举个例子,很多人分不清rm -rf ~rm -rf /*,在root状态下执行后者的后果,比普通用户状态下严重一万倍。普通用户执行rm -rf /*会噼里啪啦一堆权限不足,至少系统还能开机;root执行同样命令,那就是一场灾难。类似的还有把输出重定向到/dev/sda、修改错误的内核参数、给系统目录chmod 777等等。这些操作在教程里看起来只是两行命令,实际执行起来没有后悔药。

实用的组合是:桌面登录用普通用户kali,需要装软件、改系统配置时用sudo提权,偶尔需要连续执行多条特权命令时用sudo -i切换到root shell,干完活立刻exit回普通用户。这样做的好处是,你的日常操作上下文始终是“受限用户”,出问题的范围被限制在用户目录以内,系统核心文件是安全的。

5.2 给自己留条后路:备用密码、快照、恢复方案

不用root不等于不需要知道root密码。恰恰相反,我强烈建议你给root设一个“备用强密码”,并且把它记在密码管理器里或写在安全的地方。

原因很现实:万一哪天sudo出问题了(比如当前用户被移出sudo组、sudoers文件被改坏),你唯一能登录系统的身份就是root;而如果root密码也没设,或者设了忘了,那就只能走单用户模式。虽然单用户模式肯定能解决,但每次都要重启、进GRUB、敲命令,浪费时间。提前设好root密码,相当于给你的系统买了一份“应急保险”。

快照也是同理。虚拟机用户不提了,物理机用户虽然没有“快照”按钮,但可以用DD备份关键分区,或者至少备份配置文件。Kali装了那么多工具,重装一次的成本远高于普通发行版,所以平时多做备份,别等系统崩了才后悔。

5.3 关于sudo免密和NOPASSWD的取舍

很多人嫌sudo每次都输密码麻烦,会去配置NOPASSWD,让sudo不再询问密码。方法是在/etc/sudoers中添加:

kali ALL=(ALL) NOPASSWD: ALL

或者用sudo visudo修改。这确实方便,但要清楚代价:一旦你的普通用户密码泄露,或者有人在你离开时坐到电脑前,对方可以直接sudo到root,等于把整个系统拱手送人。在没有网银、没有敏感数据的研究机上这么干问题不大,但如果你的Kali装了团队协作工具、连了公司内网、存放了测试报告的明文副本,建议老老实实输密码。我个人是这么配置的:常用工具豁免NOPASSWD,比如systemctlrebootshutdown这几个低频高权限命令仍要密码,但像airmon-ng这种高频工具单独加一条NOPASSWD规则。这样兼顾效率和安全性。

5.4 一个我常用的组合方案

最后分享一下我自己的Kali root管理习惯,给拿不准怎么选的人一个参考。

装完系统后,第一件事sudo passwd root设置一个自己能记住但别人猜不到的root密码;平时桌面用普通用户登录;需要交互式管理时用sudo -i;需要图形界面操作文件时用sudo -i后在终端里跑命令行文件管理,尽量不强行用root打开图形文件管理器;只在虚拟机里开放SSH root登录,物理机保持PermitRootLogin no;每季度检查一次Kali更新,顺便确认GRUB菜单还能正常进入单用户模式。这套组合我用了很久,没出过系统级的事故。

所谓“在Kali里折腾root用户”,本质不是追求一个root标识符,而是理解权限边界、知道何时提权、知道如何在自己把自己锁死时全身而退。把这些搞明白,后面再学渗透测试、二进制分析、无线安全那些工具,你才不会在第一步就被权限问题反复绊倒。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询