如何在Linux中运行没有Sudo密码的特定命令

  • 如何在Linux中运行没有Sudo密码的特定命令已关闭评论
  • 163 views
  • A+
所属分类:linux

如何在Linux中运行没有Sudo密码的特定命令

我在AWS上部署了我的Ubuntu系统上的脚本。此脚本的主要目的是检查特定服务是否以固定间隔运行(确切地说每隔一分钟),并且如果由于任何原因而停止,则自动启动该服务。但问题是我需要sudo权限来启动服务。您可能已经知道,我们应该在运行sudo用户时提供密码。但我不想这样做。我真正想要做的是以无密码的形式运行sudo服务。如果你遇到这样的情况,我知道一个小小的工作,今天,在这个简短的指南中,我将教你如何在类Unix操作系统中运行没有sudo密码的特定命令。

看看下面的例子。

$ sudo mkdir /ostechnix
[sudo] password for sk:

如何在Linux中运行没有Sudo密码的特定命令

正如您在上面的屏幕截图中看到的,我需要在root(/)文件夹中创建名为ostechnix的目录时提供sudo密码。每当我们尝试使用sudo权限执行命令时,我们都必须输入密码。但是,在我的场景中,我不想提供sudo密码。这是我在Linux机器上运行没有密码的sudo命令所做的。

在Linux中运行没有Sudo密码的特定命令

出于任何原因,如果您希望允许用户在不提供sudo密码的情况下运行特定命令,则需要在sudoers文件中添加该命令。

我希望名为sk的用户执行mkdir命令而不提供sudo密码。让我们看看如何做到这一点。

编辑sudoers文件:

$ sudo visudo

在文件末尾添加以下行。

sk ALL=NOPASSWD:/bin/mkdir

如何在Linux中运行没有Sudo密码的特定命令

这里,sk是用户名。根据上面的行,用户sk可以从任何终端运行'mkdir'命令,没有sudo密码。

您可以使用逗号分隔值添加其他命令(例如chmod),如下所示。

sk ALL=NOPASSWD:/bin/mkdir,/bin/chmod

保存并关闭文件。注销(或重启)您的系统。现在,以普通用户“sk”身份登录并尝试使用sudo运行这些命令,看看效果。

$ sudo mkdir /dir1

如何在Linux中运行没有Sudo密码的特定命令

看到?即使我使用sudo权限运行'mkdir'命令,也没有密码提示。从现在开始,用户sk在运行'mkdir'命令时无需输入sudo密码。

运行除sudoers文件中添加的那些命令之外的所有其他命令时,系统将提示您输入sudo密码。

让我们用sudo运行另一个命令。

$ sudo apt update

如何在Linux中运行没有Sudo密码的特定命令

此命令提示我输入sudo密码。

如果您不希望此命令提示您询问sudo密码,请编辑sudoers文件:

$ sudo visudo

在visudo文件中添加'apt'命令,如下所示:

sk ALL=NOPASSWD: /bin/mkdir,/usr/bin/apt

您是否注意到apt二进制可执行文件路径与mkdir不同?是的,您必须提供正确的可执行文件路径。要查找任何命令的可执行文件路径,例如'apt',请使用如下所示的'whereis'命令。

$ whereis apt
apt: /usr/bin/apt /usr/lib/apt /etc/apt /usr/share/man/man8/apt.8.gz

如您所见,apt命令的可执行文件是/usr/bin /apt,因此我将其添加到sudoers文件中。

就像我已经提到的,您可以使用逗号分隔值添加任意数量的命令。完成后保存并关闭sudoers文件。注销并再次登录到您的系统。

现在,检查您是否能够使用sudo前缀运行命令而不使用密码:

$ sudo apt update

如何在Linux中运行没有Sudo密码的特定命令

看到?即使我用sudo运行它,apt命令也没有问我密码。

这是另一个例子。如果要运行特定服务,例如apache2,请按如下所示添加它。

sk ALL=NOPASSWD:/bin/mkdir,/usr/bin/apt,/bin systemctl restart apache2

现在,用户可以在没有sudo密码的情况下运行“sudo systemctl restart apache2”命令。

在上述情况下,我可以对特定命令重新进行身份验证吗?当然,是的!只需删除添加的命令即可。注销并重新登录。

或者,您可以在命令前添加“PASSWD:”指令。请看下面的例子。

添加/修改以下行,如下所示。

sk ALL=NOPASSWD:/bin/mkdir,/bin/chmod,PASSWD:/usr/bin/apt

在这种情况下,用户sk可以运行'mkdir'和'chmod'命令而无需输入sudo密码。但是,他必须在运行'apt'命令时提供sudo密码。

免责声明:这仅用于学校目的。应用此方法时应该非常小心。这种方法可能具有生产力和破坏性。例如,如果您允许用户在没有sudo密码的情况下执行'rm'命令,他们可能会意外或故意删除重要内容。

  • 安卓客户端下载
  • 微信扫一扫
  • weinxin
  • 微信公众号
  • 微信公众号扫一扫
  • weinxin
avatar