如何以系统管理员(root)身份运行命令


Answers:


94

两种主要的命令行可能性是:

  • su在提示时使用并输入root密码。
  • 放在sudo命令前面,并在出现提示时输入密码。

以root身份运行shell命令

sudo(不运行图形显示时首选)

这是大多数系统(包括Ubuntu,Linux Mint,(可以说)Debian等)上的首选方法。如果您不知道单独的root密码,请使用此方法。

Sudo要求您输入自己的密码。(这样做的目的是为了限制无人看管和解锁时的键盘损坏,并确保您确实希望运行该命令而不是错字。)通常将其配置为不再要求输入一些分钟,因此您可以sudo连续运行多个命令。

例:

sudo service apache restart

如果您需要以root用户身份运行几个命令,请在每个命令前面加上sudo。有时,以root用户身份运行交互式shell更方便。您可以使用sudo -i

$ sudo -i
# command 1
# command 2
...
# exit

相反sudo -i,您可以使用sudo -s。不同的是,-i nitializes环境,以理智的默认值,而-s使用您的配置文件,或好或坏。

有关更多信息,请访问sudo网站,或man sudo在系统上键入。Sudo是非常可配置的。例如,可以将其配置为允许特定用户仅以root用户身份执行特定命令。阅读sudoers手册页以获取更多信息。用于sudo visudo编辑sudoers文件。

su

su命令存在于大多数类Unix系统上。只要您知道该用户的密码,它就可以让另一个用户运行命令。在未指定用户的su情况下运行时,将默认为root帐户。

例:

su -c 'service apache restart'

必须使用该-c选项传递要运行的命令。请注意,您需要使用引号,以便命令不会被外壳解析,而是完整地传递给su运行的根外壳。

要以root用户身份运行多个命令,启动交互式shell更方便。

$ su
# command 1
# command 2
...
# exit

在某些系统上,您必须位于组号0(称为wheel)中才能使用su。(关键是要限制root密码意外泄露给他人的损害。)

以root身份登录

如果设置了root密码并且您拥有该密码,则只需root在登录提示符下键入并输入root密码即可。请非常小心,避免以root用户身份运行复杂的应用程序,因为它们可能会执行您不希望做的事情。以root身份直接登录主要在紧急情况下非常有用,例如磁盘故障或将自己锁定在帐户之外。

单用户模式

单用户模式或运行级别1也为您提供root特权。这主要用于无法引导到多用户运行级别的紧急维护情况。您可以通过传递singleemergency在内核命令行上引导进入单用户模式。请注意,引导到单用户模式与正常引导系统并以root用户登录不同。而是,系统将仅启动为运行级别1定义的服务。通常,这是拥有可用系统所需的最少服务数量。

您还可以通过使用telinit命令到单用户模式:telinit 1; 但是,此命令要求您已经通过其他方法获得了root特权才能运行。

在许多系统上,引导到单用户模式将使用户可以访问根shell,而无需提示输入密码。值得注意的是,systemd当您以这种方式引导时,基于-的系统会提示您输入root密码。

其他程序

卡利夫

Calife允许您通过输入自己的密码(如果获得授权)以其他用户身份运行命令。它类似于更普遍的sudo(请参见上文)。Calife比sudo轻巧,但可配置性较差。

运维

Op使您可以以其他用户(包括root)的身份运行命令。这不是运行任意命令的完善工具:您键入,op然后键入由系统管理员配置的助记符,以运行特定命令。

Super允许您以其他用户(包括root)的身份运行命令。该命令必须已被系统管理员允许。

以root身份运行图形命令

另请参阅Wikipedia

PolicyKit(使用GNOME时首选)

只需在命令中添加所需命令即可pkexec。请注意,尽管这在大多数情况下都有效,但它并不是普遍适用的。

请参阅man pkexec以获取更多信息。

KdeSu,KdeSudo(使用KDE时首选)

kdesukdesudo是图形前端到susudo分别。它们使您可以轻松地以root用户身份运行X Window程序。它们是KDE的一部分。类型

kdesu -c 'command --option argument'

并输入root密码,或输入

kdesudo -c 'command --option argument'

并输入您的密码(如果有权运行sudo)。如果您在KdeSu中选中“保留密码”选项,则每个登录会话只需键入一次根密码。

其他程序

tsu

Ktsuss(“保持su简单,愚蠢”)是su的图形版本。

比寿

Beesu是su命令的图形前端,它已在基于Red Hat的操作系统中替代了Gksu。它主要是为RHEL和Fedora开发的。

过时的方法

gksugksudo

gksugksudo是图形前端到susudo分别。它们使您可以轻松地以root用户身份运行X Window程序。它们是Gnome的一部分。类型

gksu command --option argument

并输入root密码,或输入

gksudo command --option argument

并输入您的密码(如果有权运行sudo)。

gksu并且gksudo已经过时了。它们已被GNOME中的PolicyKit取代,并且许多发行版(例如Ubuntu)默认不再安装它们。您不应该依赖于它们的可用性或正常工作。

通过基于外壳的方法之一手动

使用“以root身份运行shell命令”中的方法之一。您将需要确保在过渡到root期间,DISPLAY环境变量和XAUTHORITY环境都不会重置。这可能需要对这些方法进行其他配置,而这些配置不在此问题的范围内。

总体而言,这是一个坏主意,主要是因为图形应用程序将以root身份读写配置文件,并且当您尝试以普通用户身份再次使用这些应用程序时,这些应用程序将无权读取其自己的配置。

以根用户身份编辑文件

请参阅如何以根用户身份编辑文件?


2
应当注意,sudo只有在(1)已安装它和(2)如果您的使用位于sudoers文件中并且允许执行该操作时,该命令才起作用。
n0pe

2
这需要更新。pkexec现在正在替换gksu/ gksudo在许多发行版中。
13年

1
@strugee-您要尝试更新此内容吗?Redhat下的内容也不正确。
slm

8

用途su

$ su -c command

要么

$ su
# command
# exit

无论哪种情况,都会提示您输入root密码。有关更多信息,请参见手册页


3

由于问题不是特定于Linux的,因此以下是在Solaris 9+(或Trusted Solaris 8)中如何实现相同的目标:

从版本9开始,Solaris包含了一套工具,亲切地称为RBAC或基于角色的访问控制。

RBAC的要旨是,通过向用户和/或角色授予授权和权利,或者向用户授予角色,您可以为谁可以使用哪些特权运行什么创建非常精细的模型。

本质上,您可以在/ etc / security / auth_attr中标识授权,然后将其授予/ etc / user_attr中的用户或角色。

您可以在/ etc / security / prof_attr中定义配置文件。然后,您将命令与/ etc / security / exec_attr中的那些概要文件相关联,然后将这些概要文件分配给/ etc / user_attr文件中的用户。

一旦这些事情都做了,你实际运行pfexec <command>来执行与特权或授权被授予命令用户对于命令。

RBAC的好处是,没有授予命令本身或用户的附加特权,只有授予用户+命令的组合的特权。因此,它比制作二进制+ s或仅使用sudo来使用户能够执行几乎所有内容更安全。(我知道您可以锁定sudo,但根据我的经验,大多数人不会这样做)

RBAC的另一个优点是,您可以将root用户设置为角色帐户,并使用'su'命令和root密码将该角色分配给能够成为root用户的用户。root用户还能够以“单用户模式”登录,(我认为)比Linux模式更好,在Linux模式中,您可以禁用root密码passwd -d root或锁定root帐户passwd -l root,这两种方式都可以使root用户登录成为一个超级用户。当出现问题时很难。

Ben Rockwood在RBAC上有一篇很棒的博客文章,可以在(Open)Solaris上的Using RBAC中阅读。


3

或者,您可以赋予某些命令超能力。我说的是特殊权限,其中在拥有者权限下执行命令。

通过获取命令的路径,#which <command>并为该路径设置SUID或SGID。

PS-SUID和SGID位应格外小心。它们会使您的系统不安全。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.