我可以在不启动 root 的登录 shell 的情况下以 root 身份启动进程吗?

rah*_*hmu 8 login root

我试图更改登录外壳。

这是第一行的/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 的情况下使用该帐户启动进程?

slm*_*slm 4

有su权限

您可以使用以下命令更改任何用户的 shell。

su -c "/usr/bin/chsh -s /bin/bash root"
Run Code Online (Sandbox Code Playgroud)

如果您有物理访问权限

在 Grub 启动期间,只要您具有控制台访问权限并且没有密码阻止您访问 Grub 菜单,您就可以进入任何系统。

在系统首次启动期间,当 Grub 菜单出现时,如果您进入菜单并编辑(按e键)内核行,您可以添加以下内容之一以使内核以单用户模式启动。

  • 单身的
  • 初始化=/bin/sh
  • 1

该行看起来像这样:

 kernel /vmlinuz-2.6.15-27-386 root=/dev/mapper/Ubuntu-root ro init=/bin/bash
Run Code Online (Sandbox Code Playgroud)

在 Grub 中,它应该类似于以下内容:

       grub 的 ss

完成更改后,启动内核(按 键b)。

这将使您可以通过 shell 临时访问系统,您可以在其中使用 vi/vim 对文件进行所需的任何更改/etc/passwdreboot完成后只需输入即可。

  • 你的 su 命令将不起作用,因为它会尝试调用 root 的 shell,而该 shell 不存在。 (4认同)
  • 他说他没有物理访问权限,因此他可能无法看到 GRUB 菜单。 (2认同)