如何在没有密码的情况下使用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 非常强大,可以配置为做很酷的事情。 这在文档中有详细解释。

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

 %steroid_users ALL=(ALL) NOPASSWD: ALL 

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

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

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

我希望这有帮助。

您需要编辑’/ etc / sudoers’文件(有’visudo’命令)。在您的用户或组的允许命令列表之前添加NOPASSWD。 如果您的用户位于“管理员”组中 – 您需要关注:

 %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 % ALL = NOPASSWD: apache2ctl 

要么

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

我想这会做到这一点。

但是要小心删除sudo的密码。

现在回答简单的问题! 没有办法搞砸任何东西或捏造你的装置。

只需输入您的密码几次,然后您就不必再次输入密码了! 这将允许您将本地管理员帐户添加到组“root”,然后从模板中取消注释,这将允许整个组“root”超级用户权限。 您可以在本文后面的部分阅读此安全问题/解决方案。

%username&是用户名的全局变量(用所需的用户名替换)

步骤1:打开终端窗口,然后输入“ sudo usermod -a -G root %username%

第2步:然后复制/粘贴此…

 sudo sed -i 's/# auth sufficient pam_wheel.so trust/auth sufficient pam_wheel.so trust/g' /etc/pam.d/su` 

第2步或类型

 sudo nano /etc/pam.d/su` 

转到第19行并在# auth sufficient pam_wheel.so trust之前删除“#”(对于某些人可能是不同的行号)

*第一个命令将%username%添加到组“root”

第二个/第三个命令允许组“root”的所有成员在没有密码的情况下成为超级用户,而不允许用户使用“root”su权限进行身份validation。


尾注:

不要乱用/etc/sudoers …有很多检查/平衡’su’认证必须通过。 超级用户身份validation使用与所有其他登录身份validation相同的pam.d过程。 “/etc/security/access.conf”具有通过tcp / ip(192.168.0.1)通信和telnet服务(tty1&tty2&tty3 …等)进行访问控制的布局。这允许通过传输协议对每个应用程序进行更精确的过滤。 如果您担心安全问题,那么当您离开房间时,您应该关注远程/代码威胁与实际触摸您计算机的人!

妄想症的食物(不要在评论中输入这个):

 sudo sed -i 's/#-:ALL EXCEPT (wheel) shutdown sync:LOCAL/-:ALL EXCEPT (wheel) shutdown sync:LOCAL/g' /etc/security/access.conf 

^这会阻止对不是系统成员或root用户的任何人访问控制台。 有时程序会安装被利用的用户名/组!