Ste*_*fan 71 root administration sudo
我需要运行具有管理权限的命令。有人说我应该以 root 身份运行命令。我该怎么做呢?
小智 96
主要的两种命令行可能性是:
su出现提示时使用并输入 root 密码。sudo命令前面,出现提示时输入密码。这是大多数系统上的首选方法,包括 Ubuntu、Linux Mint、(可以说是)Debian 等。如果您不知道单独的 root 密码,请使用此方法。
Sudo 要求您输入自己的密码。(目的是在您让键盘无人看管和解锁时限制损坏,并确保您真的希望运行该命令并且它不是例如打字错误。)它通常被配置为不再询问一些分钟,因此您可以sudo连续运行多个命令。
例子:
sudo service apache restart
Run Code Online (Sandbox Code Playgroud)
如果您需要以 root 身份运行多个命令,请在每个命令前加上sudo. 有时,以 root 身份运行交互式 shell 更方便。你可以使用sudo -i:
$ sudo -i
# command 1
# command 2
...
# exit
Run Code Online (Sandbox Code Playgroud)
相反sudo -i,您可以使用sudo -s. 不同的是,-i再我nitializes环境,以理智的默认值,而-s用途或好或坏您的配置文件。
有关更多信息,请参阅sudo 网站,或man sudo在您的系统上键入。Sudo 是非常可配置的;例如,它可以配置为让某个用户仅以 root 身份执行某些命令。阅读sudoers手册页了解更多信息;用于sudo visudo编辑 sudoers 文件。
该su命令存在于大多数类 Unix 系统上。它允许您以另一个用户身份运行命令,前提是您知道该用户的密码。在没有指定用户的su情况下运行时,将默认为 root 帐户。
例子:
su -c 'service apache restart'
Run Code Online (Sandbox Code Playgroud)
必须使用-c选项传递要运行的命令。请注意,您需要引号,以便命令不会被您的 shell 解析,而是完整地传递给su运行的根 shell 。
要以 root 身份运行多个命令,启动交互式 shell 会更方便。
$ su
# command 1
# command 2
...
# exit
Run Code Online (Sandbox Code Playgroud)
在某些系统上,您需要在组号 0(称为wheel)中才能使用su. (重点是限制 root 密码不小心泄露给某人时造成的损失。)
如果设置了 root 密码并且您拥有它,则只需root在登录提示处键入并输入 root 密码即可。要非常小心,避免以 root 身份运行复杂的应用程序,因为它们可能会做一些你不想要的事情。直接以 root 身份登录主要在紧急情况下很有用,例如磁盘故障或当您将自己锁定在帐户之外时。
单用户模式或运行级别 1 也为您提供 root 权限。这主要用于无法启动到多用户运行级别的紧急维护情况。您可以通过传递single或emergency在内核命令行上引导到单用户模式。请注意,引导到单用户模式与正常引导系统并以 root 身份登录不同。相反,系统只会启动为运行级别 1 定义的服务。通常,这是拥有可用系统所需的最少服务数量。
您还可以通过使用telinit命令到单用户模式:telinit 1; 但是,此命令要求您已经通过其他方法获得 root 权限才能运行。
在许多系统上,引导到单用户模式将允许用户访问 root shell,而无需提示输入密码。值得注意的是,systemd当您以这种方式启动时,基于 -based 的系统会提示您输入 root 密码。
如果获得授权,Calife允许您通过输入自己的密码以其他用户身份运行命令。它类似于更广泛的 sudo(见上文)。Calife 比 sudo 更轻量级,但可配置性也更低。
Op允许您以其他用户身份运行命令,包括 root。这不是运行任意命令的成熟工具:您键入op后跟由系统管理员配置的助记符来运行特定命令。
Super 允许您以其他用户身份运行命令,包括 root。该命令必须已被系统管理员允许。
另见维基百科。
只需在您想要的命令前面加上 command pkexec。请注意,虽然这在大多数情况下有效,但它并不普遍适用。
有关man pkexec更多信息,请参阅。
kdesu和kdesudo是图形前端到su和sudo分别。它们允许您以 root 身份轻松运行 X Window 程序。它们是KDE 的一部分。类型
kdesu -c 'command --option argument'
Run Code Online (Sandbox Code Playgroud)
并输入root密码,或键入
kdesudo -c 'command --option argument'
Run Code Online (Sandbox Code Playgroud)
并输入您的密码(如果授权运行sudo)。如果您选中 KdeSu 中的“保留密码”选项,则每次登录会话只需键入一次 root 密码。
Ktsuss(“保持 su 简单,愚蠢”)是 su 的图形版本。
贝苏Beesu是 su 命令的图形前端,它已取代基于 Red Hat 的操作系统中的 Gksu。它主要是为 RHEL 和 Fedora 开发的。
gksu 和 gksudo
gksu和gksudo是图形前端到su和sudo分别。它们允许您以 root 身份轻松运行 X Window 程序。它们是Gnome 的一部分。类型
gksu command --option argument
Run Code Online (Sandbox Code Playgroud)
并输入root密码,或键入
gksudo command --option argument
Run Code Online (Sandbox Code Playgroud)
并输入您的密码(如果授权运行sudo)。
gksu并且gksudo已经过时。它们已被 GNOME 中的 PolicyKit 取代,并且许多发行版(例如 Ubuntu)不再默认安装它们。您不应依赖它们是否可用或正常工作。
使用“以 root 身份运行 shell 命令”部分中的方法之一。您需要确保在过渡到 root 期间DISPLAY环境变量和XAUTHORITY环境都不会被重置。这可能需要对超出本问题范围的那些方法进行额外配置。
总的来说,这是一个坏主意,主要是因为图形应用程序会以 root 身份读写配置文件,而当您尝试以普通用户身份再次使用这些应用程序时,这些应用程序将没有权限读取自己的配置。
使用su:
$ su -c command
Run Code Online (Sandbox Code Playgroud)
或者
$ su
# command
# exit
Run Code Online (Sandbox Code Playgroud)
无论哪种情况,系统都会提示您输入root密码。有关更多信息,请参阅手册页。
| 归档时间: |
|
| 查看次数: |
479043 次 |
| 最近记录: |