将root的shell更改为不存在的path

我只是犯了一个错误:

  • 全新安装FreeBSD 8.2
  • root身份login
  • 从端口安装bash
  • 创build用户,将bash设置为shell
  • vipw (编辑passwd文件)
  • 将根目录的shell从/bin/csh改为/bin/bash
  • 登出
  • 以root身份login
  • 错误!!

正如你可能猜到的,bash shell不是放在/ bin :(很笨的错误!

现在我无法以root身份login。 我可以作为我的车轮用户login,但不能vipw

尝试以下运气没有运气:

  • 重新启动单个用户, /rescue/vi /etc/passwd
  • 以轮用户login, su -m

那么我如何将根shell改回到/bin/csh呢?

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

启动到单用户模式,然后:

 mount -w / vipw 

将path更改为/usr/local/bin/bash

 exit 

使用某种types的现场CD / DVD。 (Gentoo是一个不错的select。)只需安装驱动器,然后编辑/ etc / passwd文件即可。

只是一个提示…第一次login后,我改变了toor密码。 这样,即使数据损坏/磁盘或分区丢失,我有一个用户与特权和2différents炮弹。

你可以su (没有- )?

如果没有,也许sudo -u root /usr/bin/bash可以工作?

否则,从CD引导,挂载根文件系统,更改根文件系统上的etc/passwd文件,同步,卸载,重启。

尝试在启动过程中修改grub启动string,以至于找不到内核。 grub会把你拖到busybox。 它有一个内置的vi编辑器。 装入,编辑并重新启动。

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

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

那么只需要:chsh -s / usr / local / bin / bash root

我刚刚在Synology DiskStation上完成了同样的工作 – 当我匆匆修改root shell时,我认为/ bin / bash可用。 卫生署。

当以pipe理员身份login时,我使用su的-s选项来强制shell:

 -s, --shell=SHELL run SHELL if /etc/shells allows it 

那是:

 su -s /bin/ash 

唷。