以 root 身份运行 Bash 脚本

有没有办法让我以root身份运行Bash脚本而不需要每次输入密码?我想要自动化启动我的LAMPP安装过程,这需要我运行一些sudo命令来启动和停止服务。最好的情况是,我想将其构建为一个可执行文件,这样我只需点击一个图标就可以了。 ;)

显然,我知道密码,所以这不是问题。我只是希望更进一步地懒惰,不必每次启动本地主机时都输入密码。毕竟,这就是编程的意义所在,对吧?


您可以在启动时自动化启动诸如LAMP之类的服务;不需要使用sudo-bash hack。 - ish
我考虑过这个问题,但我并不一定希望我的本地服务器始终运行着。只有在我真正需要的时候才希望它运行。 - Scotty C.
2个回答

你可以将脚本添加到你的sudoers配置文件中:
sudo visudo

然后找到以下内容:
%sudo ALL=(ALL) ALL

添加在之后:

 your_username ALL=(ALL) NOPASSWD: /path/to/your/script

按下CTRL+X并确认。

好的,我做错了什么,但是我不知道是什么。两个命令仍然要求输入密码。 :Ssudoers 文件编辑: scotty ALL=(ALL) NOPASSWD: /opt/lampp/startup.sh我的可执行脚本的几行代码: `#!/bin/bashsudo /opt/lampp/lampp startapache sudo /opt/lampp/lampp startmysql` - Scotty C.
显然,上述脚本跨越多行,但这里的评论没有显示出来。 - Scotty C.
你重启了吗? - jasmines
@jasmines,我觉得你至少应该对这个过程给予一个警告。 - Anwar
@jasmines 嘿,很抱歉这么晚才回复你。最近工作忙得不可开交。无论如何,是的,我已经重新启动了,但是可执行文件还是要求输入密码。 - Scotty C.
这里是为什么使用setuid不是一个好主意的原因。 - Pablo Bianchi

你可以打开终端,然后输入“sudo gnome-terminal”,输入密码,然后只需复制、粘贴安装LAMPP的命令即可。或者你可以编写一个脚本,比如"run.sh",然后运行"sudo sh run.sh"。希望对你有所帮助。

2OP在询问如何在不输入密码的情况下运行。如果您包括修改sudoers文件以允许仅使用NOPASSWORD运行此脚本,那么这可以作为一个答案。然而,在目前的形式下,它是无效的。 - Mahesh