有选择地在Linux上部署你的超能力

sudo命令允许特权用户以root身份运行所有或选定的命令,但了解它是如何运行的,并且不起作用是一个很大的帮助。

苏达当您需要偶尔运行具有超级用户能力的命令时,Command非常方便,但是当它不能完成您期望的所有功能时,您有时会遇到问题。假设你想在某个日志文件的末尾添加一个重要的消息,你可以尝试这样做:

$ echo“重要注释”>> / var / log / somelog -bash:/ var / log / somelog:没有权限

好的,看起来你需要雇用一些额外的特权。通常,您无法使用用户帐户写入系统日志文件。让我们再试一次苏达

$ sudo !!sudo echo“重要说明”>> / var / log / somelog -bash:/ var / log / somelog:没有权限

嗯,那也没用。让我们尝试一些不同的东西。

$ sudo'echo“重要说明”>> / var / log / somelog'sudo:echo“重要说明”>> / var / log / somelog:找不到相关命令

这是怎么回事?

对上面显示的第一个命令的响应表明您缺少写入日志文件所需的特权。在第二个示例中,您只是尝试以根权限运行前面输入的命令,但结果是没有权限错误。在第三个中,您尝试通过将整个命令置于引号并耗尽时重新运行该命令找不到相关命令错误。所以,出了什么问题?

  • 第一个命令:如果没有根权限,就不能写入日志。
  • 第二条命令:你的超能力不能延伸到重定向。
  • 第三个命令:sudo无法识别您投入引号的所有内容作为“命令”。

如果你在没有sudo访问权限的情况下尝试使用sudo,你会看到这样的错误:

Nemo不在sudoers文件中。将报告此事件。

你能做什么?

一个相当简单的选择是使用sudo命令短暂成为root。鉴于您有sudo权限,您可以使用这样一个命令来执行此操作:

$ sudo su [sudo] nemo的密码:#

请注意,提示符已更改,以指示您的新权限。然后你可以以root用户的身份运行原来的命令:

# echo "重要提示" >> /var/log/somelog . log

然后你可以进入^维然后回到自己。当然,一些sudo配置可能会阻止您使用sudo成为root。

另一种选择是将用户切换到root命令,但这需要知道根密码。很多人在不提供root密码的情况下就可以访问sudo,所以这并不总是有效。

如果您将用户切换到root,那么您可以以root身份运行命令到您的核心内容。这种方法的问题是1)每个人都锻炼根特权必须知道根密码(不安全)和2)你不会受犯大错误的影响如果你失败后退出你的特权地位需要root特权运行特定的命令。sudo命令用于允许您使用根权限只要当您真的需要它并控制每个Sudo用户的root权力有多少。它还旨在轻松恢复为您在正常用户状态工作。

另请注意,这一点是根据您访问sudo的假设,并且您的访问不会缩小定义。更多的那一刻。

另一种选择是使用不同的命令。如果通过编辑来添加到文件是一个选项,那么您可以使用“sudo vi /var/log/somelog”这样的命令,尽管编辑活动日志文件通常不是一个好主意,因为系统可能需要频繁地对其进行写入。

最终但更复杂的选项是使用若干命令之一来解决我们之前看到的问题,但它们涉及更复杂的语法。第一个命令允许您使用!!重复您的命令!!获得“权限被拒绝”拒绝之后:

注意事项>> /var/log/somelog -bash: /var/log/somelog: Permission denied:gs/>/|sudo tee -a / <===== $ tail -1 /var/log/somelog

第二种允许您添加您的消息传递您的消息球座使用sudo命令。请注意——一个指定将文本追加到文件中:

$ echo“重要说明”|sudo tee -a / var / log / somelog $ tail -1 / var / log / somelog重要说明

sudo是多么可控的?

对这个问题的快速答案是它取决于管理它的人。大多数Linux系统默认为非常简单的设置。如果用户分配给特定组,则可能被调用管理,该用户将能够以root身份运行任何命令,而不需要知道root密码。这是大多数Linux系统的默认设置。中的特权组中添加用户后/ etc / group文件,这个人可以以根权限运行任何命令。另一方面,可以设置sudo,使某些用户只能以root身份运行单个命令或一组命令中的任何命令,仅此而已。

属性中添加如下所示的行/ etc / sudoers例如,用户“nemo”将被允许运行显示本用户信息具有根权限的命令。虽然这在“现实世界”中可能没有任何意义,但作为一个例子,它是相当有效的。

#用户别名规范nemo all =(root)nopasswd:whoami#cmnd alias规范cmnd_alias whoami = / usr / bin / whoami

请注意,我们添加了命令别名(cmnd_alias),该命令别名

当nemo运行命令时sudo whoami.,他会看到这个:

$ sudo whoami根

请注意,由于Nemo使用sudo运行命令,因此响应显示本用户信息显示当命令运行时,用户为

对于其他命令,Nemo将看到这样的东西:

$ sudo日期[sudo] for nemo:抱歉,用户Nemo不允许以蝴蝶在root上执行'/ bin / date'。

默认sudo设置

在默认方法中,我们将利用如下所示的那样/ etc / sudoers文件:

$ sudo egrep“admin | sudo”/ etc / sudoers#管理组的成员可以获得root权限%admin all =(全部)所有<=====#允许组sudo的成员执行任何命令%sudo all =(全部:全部)所有<=====

在这些线条,%管理%sudo.两者都有指允许任何添加到其中一个组中的组的组,以使用sudo命令用root运行任何命令。

如下所示的一行来自/etc/group文件,使列出的个人成为该组的成员,从而给予他们sudo特权,而不需要对/etc/sudoers文件进行任何更改。

sudo: x: 27日:无,尼莫

包起来

sudo命令旨在允许您根据需要轻松地部署超级用户访问,而且还可以在需要的情况下以非常有限的权限访问提供非常有限的访问。您可以遇到需要不同的方法的问题,而不是简单的“sudo命令”以及您从中获得的响应苏达应该指出你遇到了什么问题。

加入网络世界社区有个足球雷竞技appFacebooklinkedin对自己最关心的话题发表评论。
有关的:

版权所有©2018.Raybet2

2021年IT薪资调查:结果是