据我所知,以下命令应该使我获得 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 登录的系统上,您可以输入su
root 密码并进行身份验证。这样会为您提供 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
,根须藤,此主题,这个问题, 这标签 维基,以及上游站点了解更多信息。除了展示你最可能需要的命令之外,我的主要观点是甚至做类似的事情,sudo
并su
使用完全不同的名称缩写选项,包括--login
。如果您曾经运行过命令来获取 root shell,并且您传递了-i
,则该命令很可能是sudo
。