tut*_*uca 41 sudo authentication
...但仍然需要需要管理员权限的应用程序?
为了允许以下内容:
$ 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!
Run Code Online (Sandbox Code Playgroud)
作为参考,我在亚马逊的 e3 实例上看到了这个设置
任何的想法?
Mar*_*kal 53
您需要编辑 sudoers 文件。请注意,成功会给你一个不太安全的系统,失败可能会破坏 sudo。始终使用 编辑 sudoers 文件sudo visudo,因为 visudo 会检查错误,如果发现错误,则不会保存文件。
在没有密码的情况下授予所有权限以 root 身份运行是一个坏主意,因此只允许通过您需要的一个可执行文件(apache2ctl);将以下内容附加到文件的最底部:
YOURNAME ALL = NOPASSWD: /usr/bin/apache2ctl
Run Code Online (Sandbox Code Playgroud)
如果您愿意,您可以将可执行文件的路径替换为“ALL”,从而为您提供完整的无密码 sudo。
用您的用户名替换 YOURNAME,然后按Ctrl+X保存并退出。如果发生错误,它将提供还原、编辑或保存。
确保您使用可执行文件的完整路径:
即。/usr/bin/apache2ctl而不仅仅是apache2ctl. 这很重要,因为没有明确说明路径 sudo 将允许用户当前路径上名为 apachectl 的任何程序以 root 身份运行。
Chr*_*ris 25
这个问题的真正答案可能很复杂,因为 sudo非常强大,并且可以配置为做很酷的事情。这在文档中有详尽的解释。
简短的回答是sudo visudo在终端中运行。如果这是您第一次运行 visudo,它会询问您喜欢哪种编辑器。nano通常被认为是最容易使用的,但请选择您最熟悉/最熟悉的编辑器。您需要决定要授予谁访问权限;它可能ALL适用于每个人(一个非常糟糕的主意)、用户或系统组。组以 % 符号为前缀。例如,如果您想为steroid_users组中的每个人授予root 权限而不需要所有命令的密码,您可以添加:
%steroid_users ALL=(ALL) NOPASSWD: ALL
Run Code Online (Sandbox Code Playgroud)
到文件末尾,退出并保存文件。如果一切顺利,并且您是 steroid_users 组的成员,则sudo *some-command*无需输入密码即可发布。
请记住,任何在您登录时有权访问您终端的人——或者如果您为基于密钥的身份验证设置了 ssh,或者(甚至更糟)启用了无密码会话登录——完整且不受限制地访问您的整个系统。如果您的系统上有多个用户,或者这是一个文件服务器,则所有用户文件都可能处于危险之中,因为 root 可以做任何事情!
此外,如果你犯了一个错误,visudo 将输出错误信息而不是保存对文件的更改。这将有助于防止完全破坏 sudo。你真的应该阅读文档。Sudo 旨在为用户提供足够的访问权限来完成他们的工作,而无需暴露您的整个系统。仅为某些命令提供无密码访问可能是有利的。
我希望这有帮助。
小智 5
您需要编辑“/etc/sudoers”文件(有“visudo”命令。)在您的用户或组允许的命令列表之前添加 NOPASSWD。如果您的用户在“管理员”组中 - 您需要以下内容:
%admin ALL=(ALL) NOPASSWD: ALL
Run Code Online (Sandbox Code Playgroud)
检查https://help.ubuntu.com/community/Sudoers,顺便说一句。