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

完成更改后,启动内核(按 键b)。
这将使您可以通过 shell 临时访问系统,您可以在其中使用 vi/vim 对文件进行所需的任何更改/etc/passwd。reboot完成后只需输入即可。
| 归档时间: |
|
| 查看次数: |
3079 次 |
| 最近记录: |