以 root 身份运行 shell 命令

以 root 身份运行 shell 命令

我需要以管理权限运行命令。有人说我应该以 root 身份运行命令。我该怎么做呢?

答案1

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

  • 使用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重新将环境初始化为正常的默认值,而-s使用您的配置文件更好或更坏。

欲了解更多信息,请参阅须藤网站,或输入man sudo在您的系统上。 Sudo 是非常可配置的;例如,可以将其配置为让某个用户仅以 root 身份执行某些命令。阅读sudoers手册页了解更多信息;用于sudo visudo编辑 sudoers 文件。

su命令存在于大多数类 UNIX 系统上。它允许您以另一个用户的身份运行命令,前提是您知道该用户的密码。当未指定用户运行时,su将默认为 root 帐户。

例子:

su -c 'service apache restart'

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

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

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

在某些系统上,您需要处于组号 0(称为wheel)中才能使用su。 (重点是限制 root 密码意外泄露给某人时造成的损害。)

以 root 身份登录

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

单用户模式

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

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

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

其他节目

加州生活

加州生活如果获得授权,您可以通过键入自己的密码以其他用户身份运行命令。它类似于更广泛使用的 sudo(见上文)。 Calife 比 sudo 更轻量,但可配置性也较差。

奥普

奥普允许您以其他用户(包括 root)身份运行命令。这不是一个运行任意命令的成熟工具:您键入op后跟助记符由系统管理员配置以运行特定命令。

极好的

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

以 root 身份运行图形命令

也可以看看维基百科

PolicyKit(使用 GNOME 时首选)

只需在您想要的命令前面加上 command 即可pkexec。请注意,虽然这在大多数情况下有效,但并不普遍有效。

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

KdeSu、KdeSudo(使用 KDE 时首选)

kdesukdesudosu分别是和 的图形前端sudo。它们允许您以 root 身份轻松运行 X Window 程序。他们是凯德。类型

kdesu -c 'command --option argument'

并输入 root 密码,或键入

kdesudo -c 'command --option argument'

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

其他节目

克苏斯

克苏斯(“让 su 简单点,愚蠢的”)是 su 的图形版本。

比苏

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

过时的方法

gksugksudo

gksu和分别是和的gksudo图形前端。它们允许您以 root 身份轻松运行 X Window 程序。他们是susudo侏儒。类型

gksu command --option argument

并输入 root 密码,或键入

gksudo command --option argument

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

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

通过一种基于 shell 的方法手动

使用“以 root 身份运行 shell 命令部分”中的方法之一。您需要确保在转换到 root 期间DISPLAY环境变量和环境都不会被重置。XAUTHORITY这可能需要对这些方法进行额外配置,这超出了本问题的范围。

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

以 root 身份编辑文件

如何以 root 身份编辑文件?

答案2

使用su

$ su -c command

或者

$ su
# command
# exit

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

答案3

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

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

RBAC 的要点是,通过向用户和/或角色授予授权和权利,或者向用户授予角色,您可以创建极其细粒度的模型,确定谁可以使用哪些权限运行什么。

本质上,您在 /etc/security/auth_attr 中识别授权,然后将它们授予 /etc/user_attr 中的用户或角色。

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

完成这些事情后,您实际上可以pfexec <command>使用授予的特权或授权来运行命令用户为命令。

RBAC 的好处是,没有向命令本身或用户授予额外的权限,仅向用户 + 命令的组合授予额外的权限。因此,它比创建二进制 + 或仅使用 sudo 让用户能够执行几乎任何操作更安全。 (我知道你可以锁定 sudo,但根据我的经验,大多数人不会)

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

Ben Rockwood 有一篇关于 RBAC 的精彩博客文章,可以在以下位置阅读:在(开放)Solaris 上使用 RBAC

答案4

或者你可以给一些命令赋予超能力。我说的是特殊权限,其中命令在所有者的许可下执行。

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

PS - SUID 和 SGID 位应小心给出。它们会使您的系统变得不安全。

相关内容