丢失 root 的默认 shell
今天犯了一个愚蠢的错误,修改 /etc/passwd 文件把 root 的默认 csh shell(/bin/csh)改成 bash shell(/bin/bash),退出后 root 就 su 不进去了,提示找不到 /bin/bash。
% su root Password: su: /bin/bash: No such file or directory
看了提示信息才回过神来,刚在 FreeBSD上 装的 bash shell 的路径是 /usr/local/bin/bash,不是 /bin/bash,我想当然的以为 FreeBSD 会把 bash 装到 /bin/bash。
在 Linux 下遇到这种问题可以这样解决,su 时指定一个 shell 登陆:
$ su --shell=/bin/sh - 或者 $ su -s /bin/sh
在 FreeBSD,Solaris,AIX,以及达到 C2 安全标准的 Unix 上面遇到这种问题就只能重装系统了,让 VPS 管理员重新 load 一个操作系统。或者如果管理员能 physical access 你的服务器的话,应该可以用 cdrom 启动你的系统后恢复,不过太麻烦了,还要给管理员 root 密码,没有重要数据丢失的话不如重新 load 一下。看看FreeBSD 对安全性的要求:
继续阅读 »