我在本地 Linux (sabayon) 操作系统上安装了 Apache,仅用于编程测试。
我想要的是一个脚本,以便服务器在我需要时立即启动。
这是代码:
#!/bin/bash
# een script dat de apache server start
/etc/init.d/apache2 start
唯一的问题是Apache需要root权限,但我是普通用户。现在我可以使用 来从命令行运行此脚本sudo ./apache_start.sh
,但我不希望这样。我只想双击它并启动 Apache 服务器。
那么我该怎么做才能让脚本以 root 用户而不是普通用户身份运行呢?
我不在乎是否有要求输入密码的提示,我只是不想打开控制台、导航到文件等等。
答案1
如果您想做您正在做的事情,则不能使用默认的初始化脚本。此外,如果您希望它在端口 80 上运行,则在没有 root 权限的情况下无法启动它,因为只有 root 可以在端口 80 上启动侦听器。
在我看来,你有两个选择。在高于 1024 的端口上运行,然后从命令行手动执行 apache。或者使用 sudo:
visudo
添加一行包含您的用户名
username ALL=NOPASSWD: /etc/init.d/apache2 start, /etc/init.d/apache2 stop
你的桌面快捷方式告诉它执行
sudo /etc/init.d/apache2 start
答案2
你可以使用gksudo
直观的方式获取root权限,这很好。
apache-start.sh
#!/bin/bash
if [ "$EUID" = "0" ]; then
# we're root, so just run it
service apache2 start
exit 0
fi
# otherwise, try running it with a visual prompt for superuser
gksudo service apache2 start