当不支持“su -i”时,我如何成为root?

当不支持“su -i”时,我如何成为root?

据我所知,以下命令应该使我获得 root 权限:

su -i

然而,当我在 Ubuntu 17.04 Zesty Zapus 中输入它时,我收到以下消息:

su: invalid option -- 'i'
Usage: su [options] [LOGIN]
Options:
  -c, --command COMMAND         pass COMMAND to the invoked shell
  -h, --help                    display this help message and exit
  -, -l, --login                make the shell a login shell
  -m, -p,
  --preserve-environment        do not reset environment variables, and
                                keep the same shell
  -s, --shell SHELL             use SHELL instead of the default in passwd

我记得它之前还能用。我该如何重新启用它?

答案1

我记得它之前还能用。我该如何重新启用它?

你几乎肯定sudo -i之前使用过, 自从su不支持-i选项,即使在早期版本中也不支持这样的选项。(为了确保万无一失,我在 16.04 LTS 上仔细检查了这一点。)您仍然可以使用sudo -i

在启用 root 登录的系统上,您可以输入suroot 密码并进行身份验证。这样会为您提供 root shell,但不会模拟登录 shell。它类似于sudo -s(或sudo --shell),即使 root 帐户被禁用,它也能正常工作。使用sudo,您可以使用自己的密码。在默认配置中,您必须是管理员(即组成员sudo)才能使用它。

类似地,如果您可以以 root 身份登录,那么您也可以使用su -(或su -l,或su --login)模拟 root 登录。将-标志传递给su设置类似于在 root 登录环境中设置的环境变量,并启动登录 shell。它类似于sudo -i(或者sudo --login)。

最常见的使用方法sudo是只运行一个命令,只需运行。 这也可以通过传递 标志来完成,但这很尴尬,因为整个命令及其参数都必须sudo command args...su-c因此它作为单个命令行参数传递给su:(如果您没有向命令传递任何参数,并且命令名称本身不需要引用,则可以省略引号。)su -c 'command args...'

我提到这一切不是提供完整的指南sudo,我建议man sudo根须藤此主题这个问题, 这标签 维基,以及上游站点了解更多信息。除了展示你最可能需要的命令之外,我的主要观点是甚至做类似的事情,sudosu使用完全不同的名称缩写选项,包括--login。如果您曾经运行过命令来获取 root shell,并且您传递了-i,则该命令很可能是sudo

相关内容