我需要以管理权限运行命令。有人说我应该以 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 时首选)
kdesu
和kdesudo
su
分别是和 的图形前端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 开发的。
过时的方法
gksu
和gksudo
gksu
和分别是和的gksudo
图形前端。它们允许您以 root 身份轻松运行 X Window 程序。他们是su
sudo
侏儒。类型
gksu command --option argument
并输入 root 密码,或键入
gksudo command --option argument
并输入您的密码(如果有权运行sudo
)。
gksu
并且gksudo
已经过时了。它们在 GNOME 中已被 PolicyKit 取代,并且许多发行版(例如 Ubuntu)不再默认安装它们。您不应该依赖它们是否可用或正常工作。
通过一种基于 shell 的方法手动
使用“以 root 身份运行 shell 命令部分”中的方法之一。您需要确保在转换到 root 期间DISPLAY
环境变量和环境都不会被重置。XAUTHORITY
这可能需要对这些方法进行额外配置,这超出了本问题的范围。
总的来说,这是一个坏主意,主要是因为图形应用程序将以 root 身份读取和写入配置文件,当您尝试以普通用户身份再次使用这些应用程序时,这些应用程序将无权读取自己的配置。
以 root 身份编辑文件
答案2
答案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 位应小心给出。它们会使您的系统变得不安全。