当前位置: 首页 > 科技观察

在Linux中运行特定命令无需sudo密码

时间:2023-03-16 21:54:39 科技观察

我在AWS上部署了一个Ubuntu系统,里面有一个脚本,其最初目的是分钟)检查特定服务是否正在运行,如果它自动重启服务由于某种原因停止。但问题是我需要sudo权限才能启动此服务。如您所知,当我们以sudo用户身份运行命令时,我们应该提供密码,但我不想这样做,实际上我想做的是以sudo用户身份运行此服务而不提供密码。如果你曾经遇到过这样的情况,我知道一个简单的方法来做到这一点。今天,在这个简短的指南中,我将教你如何在类Unix操作系统中运行特定命令而无需sudo密码。让我们看看下面的例子。$sudomkdir/ostechnix[sudo]passwordforsk:正如你在上面的截图中看到的,当我在根目录(/)中创建一个名为ostechnix的目录时,我需要提供sudo密码。每当我们尝试使用sudo权限执行命令时,我们都必须输入密码。在我的预谋中,我不想提供sudo密码。下面是我如何在我的Linux机器上运行sudo命令而不输入密码。在Linux中不使用sudo密码运行特定命令由于某些原因,如果您希望允许用户在不提供sudo密码的情况下运行特定命令,则需要在sudoers文件中添加此命令。如果我们希望名为sk的用户在不提供sudo密码的情况下执行mkdir,让我们看看如何做到这一点。使用以下命令编辑sudoers文件:$sudovisudo将以下命令添加到该文件的底部。skALL=NOPASSWD:/bin/mkdir其中sk是用户名。根据上面的行,用户sk可以从任何终端执行mkdir命令,而无需输入sudo密码。您可以使用逗号分隔值添加其他命令(例如chmod),如下所示。skALL=NOPASSWD:/bin/mkdir,/bin/chmod保存并关闭这个文件,然后注销(或重启)你的系统。现在以普通用户sk身份登录并尝试使用sudo运行这些命令,看看会发生什么。$sudomkdir/dir1看到了吗?即使当我以sudo权限运行mkdir命令时,系统也不会提示我输入密码。从现在开始,用户sk运行mkdir时,就不需要再输入sudo密码了。当运行命令而不是添加到sudoers文件的命令时,系统将提示您输入sudo密码。让我们用sudo运行另一个命令。$sudoaptupdate看到了吗?此命令将提示我输入sudo密码。如果您不希望此命令提示您输入sudo密码,请编辑sudoers文件:$sudovisudo像这样将apt命令添加到sudoers文件中:skALL=NOPASSWD:/bin/mkdir,/usr/bin/apt你注意上面命令中的apt二进制可执行文件的路径和mkdir的不一样吗?是的,您必须提供正确的可执行路径。要查找任意命令的可执行文件路径,比如这里的apt,可以使用whichis命令查看,如下:$whereisapt:/usr/bin/apt/usr/lib/apt/etc/apt/usr/share/man/man8/apt.8.gz可以看到,apt命令的执行路径是/usr/bin/apt,所以我在sudoers文件中加入了这个路径。正如我之前提到的,您可以添加任意数量的命令,并以逗号分隔。添加操作后,保存并关闭sudoers文件,注销,然后重新登录到您的系统。现在检查您是否可以在不使用密码的情况下运行以sudo开头的命令:$sudoaptupdate看到了吗?apt命令不允许我输入sudo密码,即使我使用sudo运行它也是如此。另一个例子如下所示。如果要运行特定的服务,比如apache2,那么在sudoers文件中加入如下命令:skALL=NOPASSWD:/bin/mkdir,/usr/bin/apt,/bin/systemctlrestartapache2现在用户sk是您可以在不输入sudo密码的情况下运行sudosystemctlrestartapache命令。我可以再次使用特殊的命令提示符输入sudo密码吗?当然!只需删除添加的命令,注销并重新登录即可。除了这种方法,还可以在命令前加上PASSWD:指令。让我们看下面的例子:在sudoers文件中添加或修改以下行:skALL=NOPASSWD:/bin/mkdir,/bin/chmod,PASSWD:/usr/bin/apt在这种情况下,用户sk可以运行mkdir和chmod命令,无需输入sudo密码。但是,当他运行apt命令时,他必须提供sudo密码。免责声明:本指南仅用于教育目的。使用此方法时必须非常小心。这种秩序可以是富有成效的,也可以是破坏性的。例如,如果允许用户在不输入sudo密码的情况下执行rm命令,他们可能会无意或有意地删除一些重要文件。我警告过你!所以这就是它的全部。希望这对你有帮助。更多精彩内容即将呈现,敬请期待!干杯!