当前位置: 首页>>技术教程>>正文


如何在没有密码的情况下使用sudo运行应用程序?

, ,

问题描述

…但仍需要需要管理员权限的应用程序?

为了允许以下内容:

$ apache2ctl restart
httpd not running, trying to start
(13)Permission denied: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs

$ sudo !!
sudo apache2ctl restart             #no password asked
$                                   #works!

作为参考,我在亚马逊的e3实例上看到了这个设置

任何的想法?

最佳解决思路

您需要编辑sudoers文件。请注意,成功会给您一个不太安全的系统,失败会破坏sudo。总是使用sudo visudo编辑sudoers文件,因为visudo会检查错误,如果找不到文件,则不会保存文件。

在没有密码的情况下以root身份运行所有权限是一个坏主意,所以只需通过你需要的一个可执行文件(apache2ctl);将以下内容附加到文件的最底部:

YOURNAME ALL = NOPASSWD: /usr/bin/apache2ctl

如果您愿意,可以使用”ALL”替换可执行文件的路径,为您提供完整的无密码sudo。

用您的用户名替换YOURNAME并按Ctrl + X保存并退出。如果发生错误,它将提供恢复,编辑或保存。

确保使用可执行文件的完整路径:即。 /usr/bin/apache2ctl而不仅仅是apache2ctl。这很重要,因为如果没有明确说明路径sudo将允许用户当前路径上任何名为apachectl的程序以root身份运行。

次佳解决思路

这个问题的真正答案可能很复杂,因为sudo非常强大,可以配置为做很酷的事情。这在documentation中有详细解释。

简短的回答是在终端中运行sudo visudo。如果这是您第一次运行visudo,它会询问您喜欢哪个编辑器。 nano通常被认为是最容易使用的,但选择你最熟悉/熟悉的编辑器。您需要决定要授予谁的权限;对于每个人(一个非常糟糕的主意),用户或系统组,它可能是ALL。组以%符号为前缀。例如,如果您希望为steroid_users组中的所有人提供root权限,而无需为要添加的所有命令设置密码:

%steroid_users ALL=(ALL) NOPASSWD: ALL

到文件末尾,退出并保存文件。如果一切顺利,并且您是steroid_users组的成员,您将能够发出sudo *some-command*而无需输入密码。

请记住,在您登录时有权访问终端的任何人 – 或者如果您为key-based身份验证设置了ssh,或者(甚至更糟)已启用无密码会话登录 – 完整且不受限制地访问整个系统。如果您的系统上有多个用户,或者这是一个文件服务器,则所有用户文件都可能存在风险,因为root可以执行任何操作!

此外,如果您犯了错误,visudo将输出错误消息而不保存对文件的更改。这有助于防止完全破坏sudo。你应该真正阅读documentation。 Sudo旨在为用户提供足够的访问权限来完成他们的工作,而无需暴露整个系统。仅为某些命令提供无密码访问可能是有利的。

我希望这有帮助。

第三种解决思路

您需要编辑’/etc/sudoers’文件(有’visudo’命令。)在您的用户或组的允许命令列表之前添加NOPASSWD。如果您的用户位于’admin’组中 – 您需要以下内容:

%admin ALL=(ALL) NOPASSWD: ALL

检查https://help.ubuntu.com/community/Sudoers,顺便说一句。

第四种思路

您可以将nopasswd标志添加到用户列表,但这并不能消除所有密码问题。只会询问第一个。

  1. 编辑sudoers:sudo visudo(你必须使用sudo。这是一个管理文件。)

  2. 在管理行之后(最后)添加带有nopasswd标志的用户。例如:cyrex ALL = NOPASSWD: ALLcyrex ALL = (ALL) NOPASSWD: ALL

第五种思路

sudo visudo
%<GROUP> ALL = NOPASSWD: apache2ctl

要么

sudo visudo
%<GROUP> ALL = NOPASSWD: /etc/init.d/apache2

我想这会做到这一点。

但要小心删除sudo的密码。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1995.html,未经允许,请勿转载。