Linux/Unix 中的 Sudo 命令

当您使用 sudo 您第一次看到“权力越大,责任越大”的信息。

没错。 “Sudo”是 Superuser Do 的缩写。 使用此命令,任何被授予权限的用户都可以访问类似 root 的权限,而不必实际上是超级用户。

与 sudo Linux中的命令

使用 sudo 命令非常简单,但在用户使用它之前,我们需要配置正确的权限。

1. 授予 sudo 访问用户

要授予特定用户访问权限,现有超级用户需要先在 /etc/sudoers 文件。 Linux 中的此文件包含拥有 sudo 访问权限,以及授予的访问权限级别。 您可以按照文件中列出的添加用户的类似格式,或根据需要修改权限。 示例条目如下所示:

username ALL=(ALL:ALL) ALL 
给予 sudo 使用 /etc/sudoers 文件访问用户
  • “用户名”将是具有权限的用户的名称
  • 开头的 ALL 指定 哪些主机 用户有 sudo 访问
  • 第二个 ALL 指定 哪些用户 用户可以运行命令
  • 第三个 ALL 指定 哪些组 用户可以运行命令
  • 最后的 ALL 指定 哪些命令 允许用户运行。

2. sudo 命令用法

授予访问权限后,您可以以超级用户身份运行允许的命令。 为此,您需要输入“sudo ”。

[email protected]# sudo apt-get update Enter password: 

默认情况下,您需要输入密码才能获得访问权限,但可以通过在 sudoers 文件中授予权限时添加“NOPASSWD”属性来跳过此操作。 虽然不推荐这样做。

3.运行一个 sudo 命令作为另一个用户

在某些情况下,您想要的只是能够运行组织中其他人可以访问的命令。 我们并不是说这是一种黑客行为,而是作为用户切换。

在 Windows 中,如果您必须从其他用户的文档文件夹中复制文件,您只需切换用户,登录到其他帐户并完成工作,然后重新登录到原始帐户。

但是你如何在 Linux 中做同样的事情呢? 我们利用 -u 选项如下面的示例。

[email protected]# sudo -u otherusername (command) Enter otheruser password: 

-u 选项允许您以其他用户身份运行任何命令,只要您有密码。

4. 允许有限的命令为 sudo 为您的用户

在提供升级权限时,我们需要确保只有需要特定访问权限的用户才能拥有它。 如果您在 sudoers 文件中的用户允许的命令部分添加“ALL”,您可能会面临潜在的违规行为

假设您只想让用户在完成后关闭他们的系统。 但是用户需要 sudo 访问这样做。 您可以将 sudoers 文件编辑为 只允许 poweroff 命令而不要求输入密码。

username ALL=NOPASSWD: /sbin/poweroff 

请注意我们如何添加完整路径而不仅仅是命令。 现在,如果您想向多个用户添加多个命令,保留一个选项卡以分配给用户的正确命令可能会很乏味。 在这种情况下,您 可以创建命令别名, 并简单地添加它们来代替上面的“/sbin/poweroff”。 请参阅下图以供参考。

Sudoers 文件限制 Sudo 用户的命令访问权限

5. 其他常用选项 sudo 命令

我们上面列出的选项是一些非常常用的选项。 以下是一些更常见的选项,它们对您来说很方便。

  • -l 代表“列表”,它允许用户列出允许他们在特定主机上运行的命令
  • -p 允许用户在覆盖已在使用的终端提示时指定自定义终端提示
  • -k 每当用户运行 sudo,一个时间戳被记录下来,这个时间戳让用户使用 sudo 没有密码,直到 sudoers 中指定的超时(通常为 5 分钟)。 使用此选项,用户可以 使时间戳无效 所以接下来的用法 sudo 将再次需要密码
  • -K 类似于小写的 -k 选项,但这个选项允许用户 完全删除时间戳.
  • -H 获取所有可用选项及其解释和用法的列表

之间的区别 sudo 和 su 命令

因此,这是两个完全不同的命令,但两者之间相似的一个功能是超级用户对普通用户的访问。 现在,这确实使人们认为这两个命令是相同的或做同样的事情,但事实并非如此。

和 sudo,您可以作为超级用户工作并在登录到您自己的用户帐户时获得进一步的访问权限,但是使用 su 您必须以其他用户身份登录才能访问他们的权限。

结论

你已经看到了多么强大 sudo 命令可以通过在 sudoers 文件中授予用户手中的类似 root 的权限来实现。 始终确保重新检查被授予的权限,以及他们被授予的用户。 希望本教程能帮助你理解 sudo 命令、它的使用以及授予的风险 sudo 更好的。