linux下如何控制sudo访问

sudo命令允许您在Linux上运行命令,就像您是其他人一样,比如root。sudo还允许您使用粒度控制谁可以访问root的功能。允许用户完全访问或允许他们使用一小部分命令。我们教你怎么做。...

sudo命令允许您在Linux上运行命令,就像您是其他人一样,比如root。sudo还允许您使用粒度控制谁可以访问root的功能。允许用户完全访问或允许他们使用一小部分命令。我们教你怎么做。

sudo和root权限

我们都听说过(过于简单化)Linux中的所有东西都是一个文件。实际上,操作系统中几乎所有的东西,从进程、文件、目录、套接字和管道,都通过文件描述符与内核进行通信。因此,尽管不是所有的东西都是一个文件,但大多数操作系统对象的处理方式都和以前一样。在可能的情况下,Linux和类Unix操作系统的设计遵循这一原则。

“一切都是文件”的概念在Linux中意义深远。很容易看出,Linux中的文件权限是如何成为用户特权和权限的支柱之一的。如果您拥有一个文件或目录(一种特殊类型的文件),您可以对其执行您喜欢的操作,包括编辑、重命名、移动和删除它。您还可以设置该文件的权限,以便其他用户或用户组可以读取、修改或执行该文件。每个人都受这些权限的控制。

除了超级用户之外,所有人都被称为root。根帐户是一个特殊特权帐户。它不受操作系统中任何对象的权限约束。根用户可以对任何东西做任何事情,而且几乎可以在任何时候做任何事情。

当然,任何有权访问root密码的人都可以这样做。它们可以恶意或意外地造成严重破坏。事实上,根用户也可能因为犯了错误而造成严重破坏。没有人是绝对正确的。这是危险的东西。

这就是为什么现在认为不以root用户身份登录是最佳实践的原因。使用常规用户帐户登录,并使用sudo在短时间内提升您的权限。通常这只是发出一个命令。

相关:在Linux中,“一切都是文件”是什么意思?

sudoers列表

sudo已经安装在ubuntu18.04.3、manjaro18.1.0和fedora31计算机上,用于研究本文。这并不奇怪。sudo从20世纪80年代初就出现了,并且已经成为几乎所有发行版的超级用户操作的标准手段。

安装现代发行版时,在安装过程中创建的用户将添加到名为sudoers的用户列表中。这些用户可以使用sudo命令。因为你有sudo能力,你可以使用它们来添加其他用户到sudoers列表中。

当然,将完全的超级用户身份随意地分发给任何人,或者只给那些有部分或特定需要的人,都是鲁莽的。sudoers列表允许您指定允许不同用户使用sudo的命令。这样,你就不会给他们通往王国的钥匙,但他们仍然可以完成他们需要做的事情。

以其他用户身份运行命令

最初,它被称为“超级用户做”,因为你可以做的事情作为超级用户。它的范围现在已经扩大了,您可以使用sudo执行命令,就像您是任何用户一样。它已被重命名以反映新功能。它现在被称为“替代用户do”

要使用sudo作为另一个用户运行命令,我们需要使用-u(user)选项。在这里,我们将以用户mary的身份运行whoami命令。如果使用sudo命令而不使用-u选项,则将以root用户身份运行该命令。

当然,因为您使用的是sudo,系统会提示您输入密码。

sudo -u mary whoami

linux下如何控制sudo访问

whoami的响应告诉我们运行该命令的用户帐户是mary。

您可以使用sudo命令作为另一个用户登录,而不需要知道他们的密码。系统将提示您输入自己的密码。我们需要使用-i(登录)选项。

sudo -i -u mary pwd whoami ls -hl exit

linux下如何控制sudo访问

您以玛丽的身份登录。mary用户帐户的“.bashrc”、“.bash\u别名”和“.profile”文件的处理方式与mary用户帐户的所有者自己登录的方式完全相同。

  • 命令提示符更改以反映这是用户帐户的会话。
  • pwdcommand报告您现在在mary的主目录中。
  • whoami告诉我们您正在使用用户帐户mary。
  • 目录中的文件属于mary用户帐户。
  • exit命令返回到正常的用户帐户会话。

编辑sudoers文件

要将用户添加到可以使用sudo的用户列表中,您需要编辑sudoers文件。非常重要的是,您只能使用visudo命令来执行此操作。visudo命令可防止多人同时尝试编辑sudoers文件。它还可以在保存文件内容时对其执行语法检查和解析。

如果您的编辑未通过测试,则不会盲目保存文件。你可以选择。您可以取消并放弃更改,返回并再次编辑更改,或强制保存不正确的编辑。最后一个选择是一个严重的坏主意。别想那么做。你会发现自己处于这样一种情况:每个人都被意外地锁在了sudo之外。

虽然使用visudo命令启动编辑过程,但visudo不是编辑器。它调用一个现有的编辑器来执行文件编辑。在Manjaro和Ubuntu上,visudo命令启动了简单编辑器nano。在Fedora上,visudo推出了功能更强但不够直观的vim。

相关:如何退出Vi或Vim编辑器

如果你喜欢在软呢帽上使用nano,你可以很容易地做到。首先,安装nano:

sudo dnf安装nano

linux下如何控制sudo访问

然后visudo必须用以下命令调用:

sudo EDITOR=nano visudo

linux下如何控制sudo访问

这看起来是个很好的化名候选人。打开nano编辑器时会加载sudoers文件。

linux下如何控制sudo访问

向sudo组添加用户

使用visudo打开sudoers文件。使用此命令或上述命令指定您选择的编辑器:

sudo visudo

linux下如何控制sudo访问

滚动sudoers文件,直到看到%sudo条目的定义。

linux下如何控制sudo访问

百分号表示这是组定义而不是用户定义。在某些发行版中,%sudo行在行首有一个散列。这使这句话成为一个评论。如果是这种情况,请删除哈希并保存文件。

%sudo行如下所示:

  • %sudo:组的名称。
  • ALL=:此规则适用于此网络上的所有主机。
  • (全部:全部):此组的成员可以作为所有用户和所有组运行命令。
  • 全部:此组的成员可以运行所有命令。

稍微改写一下,这个组的成员可以作为任何用户或任何组在这台计算机或这个网络中的任何其他主机上运行任何命令。因此,给某人root权限和sudo使用能力的一个简单方法是将他们添加到sudo组中。

我们有两个用户,Tom和Mary,分别拥有Tom和Mary的用户帐户。我们将使用usermod命令将用户帐户tom添加到sudo组。G(groups)选项指定要将tom帐户添加到的组。-a(append)选项将此组添加到用户帐户tom已经在的组列表中。如果没有此选项,用户帐户tom将被放置在新组中,但会从任何其他组中删除。

sudo usermod -a -G sudo tom

linux下如何控制sudo访问

让我们检查一下Mary属于哪些组:

groups

linux下如何控制sudo访问

用户帐户mary仅在mary组中。

让我们和汤姆商量一下:

groups

linux下如何控制sudo访问

tom用户帐户,因此,tom属于tom和sudo组。

让我们试着让玛丽做一些需要sudo特权的事情。

sudo less /etc/shadow

玛丽不能查看受限文件“/etc/shadow”中的内容。她因未经允许使用sudo而受到温和的批评。让我们看看汤姆的情况:

sudo less /etc/shadow

linux下如何控制sudo访问

汤姆一输入密码,就会看到/etc/shadow文件。

linux下如何控制sudo访问

仅仅是把他加入sudo小组,他就被提升到了那些可以使用sudo的精英阶层。完全不受限制。

授予用户受限sudo权限

汤姆得到了完全的sudo权利。他可以做任何根或者sudo团队中其他人能做的事情。那可能会给他比你乐意交出的更多的权力。有时需要用户执行需要root权限的功能,但没有正当理由让他们拥有完全sudo访问权限。您可以通过将它们添加到sudoers文件并列出它们可以使用的命令来实现这种平衡。

我们来见见Harry,Harry用户帐户的所有者。他不在sudo组,他没有sudo特权。

groups

linux下如何控制sudo访问

Harry能够安装软件是很有用的,但我们不希望他拥有完全的sudo权限。好的,没问题。让我们启动visudo:

sudo visudo

linux下如何控制sudo访问

向下滚动文件,直到通过组定义。我们要给哈里加一条线。因为这是一个用户定义而不是组定义,所以我们不需要以百分号开头。

linux下如何控制sudo访问

用户帐户的条目为:

harry ALL=/usr/bin/apt-get

请注意,“harry”和“ALL=”之间有一个制表符

这表示harry可以在连接到此网络的所有主机上使用列出的命令。列出了一个命令,即“/usr/bin/apt-get”。我们可以通过将多个命令添加到命令列表(用逗号分隔)来授予Harry访问多个命令的权限。

将该行添加到sudoers文件,然后保存该文件。如果您想再次检查该行的语法是否正确,我们可以使用-c(只检查)选项让visudo扫描文件并检查语法:

sudo visudo -c

linux下如何控制sudo访问

进行检查,visudo报告一切正常。Harry现在应该可以使用apt get安装软件,但如果他试图使用任何其他需要sudo的命令,就应该被拒绝。

sudo apt-get install finger

linux下如何控制sudo访问

合适的sudo权限已经授予了Harry,他可以安装这个软件。

如果哈利尝试使用另一个需要sudo的命令会怎么样?

sudo shutdown now

linux下如何控制sudo访问

哈里被阻止执行命令。我们已经成功地授予他特定的,受限的访问权限。他可以使用指定的命令而不是别的。

使用sudoers用户别名

如果我们想给Mary相同的特权,我们可以在sudoers文件中为用户帐户Mary添加一行,方法与我们对Harry所做的完全相同。另一种更简洁的方法是使用用户别名。

在sudoers文件中,用户别名包含用户帐户名的列表。然后可以在定义中使用用户别名的名称来表示所有这些用户帐户。如果要更改这些用户帐户的权限,则只能编辑一行。

让我们创建一个用户别名并在sudoers文件中使用它。

sudo visudo

linux下如何控制sudo访问

Scroll down in the file until you come to the User_Alias specification line. 007Ys3FFgy1gp5ru2c92lj30hy0amwfg

通过键入以下内容添加用户别名:

User_Alias INSTALLERS = harry, mary

每个元素之间用空格分隔,而不是制表符。逻辑分解为:

  • User\u Alias:这告诉visudo这将是一个User\u别名。
  • 安装程序:这是此别名的任意名称。
  • =harry,mary:要包含在此别名中的用户列表。

现在,我们将编辑之前为用户帐户添加的行:

harry ALL=/usr/bin/apt-get

将其更改为:

INSTALLERS ALL=/usr/bin/apt-get

这表示“INSTALLERS”用户别名定义中包含的所有用户帐户都可以运行apt get命令。我们可以用Mary来测试,她现在应该可以安装软件了。

sudo apt-get install colordiff

linux下如何控制sudo访问

Mary能够安装软件,因为她是“INSTALLERS”用户\u Alias,并且该用户\u Alias已获得这些权限。

三个快速的sudo技巧

如果忘记将sudo添加到命令中,请键入

sudo !!

最后一个命令将被重复,sudo添加到行的开头。

一旦您使用了sudo并使用了密码进行了身份验证,您就不必在15分钟内将密码用于其他sudo命令。如果要立即忘记身份验证,请使用:

sudo -k

有没有想过在哪里可以看到失败的sudo命令尝试?它们进入“/var/log”/身份验证日志“文件。您可以通过以下方式查看:

less /var/log/auth.log

linux下如何控制sudo访问

我们可以看到用户帐户mary的条目,当她试图以用户“root”的身份运行shutdown命令时,她是在TTY pts/1上登录的

以巨大的力量…

…将一部分授权给其他人的能力。现在您知道如何有选择地授权其他用户。

  • 发表于 2021-04-02 22:30
  • 阅读 ( 159 )
  • 分类:互联网

你可能感兴趣的文章

如何在linux上查找和修复损坏的包

...就是为您准备的。我们将简要详细地讨论损坏的软件包,如何检查系统是否包含损坏的软件包,以及如何正确地重新安装它们。 ...

  • 发布于 2021-03-11 11:30
  • 阅读 ( 262 )

如何在linux下配置raid硬盘阵列

有备用硬盘,你想更有效地使用你的Linux电脑?RAID可以提供性能提升或添加冗余,具体取决于它的配置方式。让我们快速进入多磁盘世界。 ...

  • 发布于 2021-03-12 05:36
  • 阅读 ( 204 )

如何保护linux上的usb端口

... 让我们来看看您可以如何尝试并减轻这些设备带来的风险。 ...

  • 发布于 2021-03-13 04:54
  • 阅读 ( 202 )

如何使用双因素身份验证保护linux-ubuntu

...到移动设备的验证码。这意味着,即使你的密码被泄露(如何使你的密码更强大),恶作剧的黑客将需要访问你的移动设备,以获得完全访问你的帐户。 ...

  • 发布于 2021-03-13 11:11
  • 阅读 ( 180 )

如何控制linux启动服务和守护进程

...许多应用程序,您甚至可能不知道这些应用程序。下面是如何控制它们。 ...

  • 发布于 2021-03-15 11:22
  • 阅读 ( 215 )

如何用ssh远程管理linux服务器

...。它之所以成为远程服务器管理的首选是有原因的。学习如何通过SSH远程管理Linux服务器,从连接到安装软件和文件传输。 ...

  • 发布于 2021-03-15 17:05
  • 阅读 ( 497 )

raspberry pi终端命令:raspberry pi用户快速指南

... 我们不希望您在不知道命令行如何工作的情况下就开始使用它。本质上,它是一种指示计算机执行任务的方法,但没有鼠标。 ...

  • 发布于 2021-03-18 12:27
  • 阅读 ( 519 )

如何使用steam play在linux上玩几乎所有windows游戏

... 下面介绍如何在Linux上使用测试版的Steam play玩Windows游戏。 ...

  • 发布于 2021-03-23 19:13
  • 阅读 ( 354 )

如何在windows、mac和linux上禁用usb存储设备

...上有大量敏感数据的情况下完全禁用USB存储设备。下面是如何在Windows、Mac和Linux上做到这一点。 ...

  • 发布于 2021-03-26 07:27
  • 阅读 ( 656 )

如何在ubuntu上安装ftp服务器

... 许多Linux服务器运行Ubuntu。那么,让我们看看如何在Ubuntu服务器上设置FTP服务器。 ...

  • 发布于 2021-03-30 13:11
  • 阅读 ( 311 )
Pvtj9465
Pvtj9465

0 篇文章

相关推荐