将 root 的 shell 更改为不存在的路径

将 root 的 shell 更改为不存在的路径

我刚刚犯了一个小错误:

  • 全新安装 FreeBSD 8.2
  • 以 root 身份登录
  • 从 ports 安装 bash
  • 创建用户,将 bash 设置为 shell
  • vipw(编辑密码文件)
  • 将 root 的 shell 从/bin/csh改为/bin/bash
  • 登出
  • 以 root 身份登录
  • 错误的!!

正如您可能猜到的那样,bash shell 没有放在 /bin 中 :( 非常愚蠢的错误!

现在我无法以 root 身份登录。我可以以 wheel 用户身份登录,但不能vipw

尝试了以下方法,但没有成功:

  • 重新启动到单个用户,/rescue/vi /etc/passwd
  • 以 wheel 用户身份登录,su -m

那么我该如何将 root shell 改回来呢/bin/csh

我可以重新安装 - 但我宁愿学习一些新东西!

答案1

启动到单用户模式然后:

mount -w /
vipw

将路径更改为/usr/local/bin/bash

exit

答案2

只是个提示... 首次以 root 身份登录后,我会更改 toor 密码。这样,即使数据损坏/磁盘或分区丢失,我也会有一个具有权限的用户和 2 个不同的 shell。

答案3

使用某种类型的实时 CD/DVD。(Gentoo 是一个不错的选择。)只需安装驱动器,然后编辑 /etc/passwd 文件。

答案4

单用户模式的正确命令是:


mount -u -rw /
mount -a -t ufs

然后执行: chsh -s /usr/local/bin/bash root

相关内容