我尝试更改登录外壳。
第一行如下/etc/passwd
(在 Debian Wheezy 安装上):
rootx:0:0:root:/root:/:zsh
当我尝试登录时root
:
Cannot execute zsh: No such file or directory
我知道zsh
可用:
$ which zsh
/usr/bin/zsh
zsh
好吧,用完整路径替换似乎是合乎逻辑的。但我该怎么办呢?
我的系统上还有另一个用户 ( user
),但它没有 root 权限,也sudo
没有安装在系统上。
假设由于某种原因(加密、物理访问……)我无法在 Live CD 上启动来修改文件。
不过,我确实知道该帐户的凭据root
。
root
我的问题是:有没有什么方法,即使是以编程方式,也可以在不先启动其登录 shell 的情况下启动该帐户的进程?
答案1
有su权限
您可以使用以下命令更改任何用户的 shell。
su -c "/usr/bin/chsh -s /bin/bash root"
如果您有物理访问权限
在 Grub 启动期间,只要您具有控制台访问权限并且没有密码阻止您访问 Grub 菜单,您就可以进入任何系统。
在系统首次启动期间,当 Grub 菜单出现时,如果您进入菜单并编辑(按e键)内核行,您可以添加以下内容之一以使内核以单用户模式启动。
- 单身的
- 初始化=/bin/sh
- 1
该行看起来像这样:
kernel /vmlinuz-2.6.15-27-386 root=/dev/mapper/Ubuntu-root ro init=/bin/bash
在 Grub 中,它应该类似于以下内容:
完成更改后,启动内核(按 键b)。
这将使您可以通过 shell 临时访问系统,您可以在其中使用 vi/vim 对/etc/passwd
文件进行所需的任何更改。reboot
完成后只需输入即可。