
プログラミングテストのために、ローカル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
現在実行中の操作を実行するには、デフォルトのinitスクリプトを使用できません。また、ポート 80 で実行したい場合は、root 権限がないと起動できません。これはルートマンポート80でリスナーを起動できるからです。
2つのオプションがあるようです。 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
直感的な方法でルートアクセスを得ることができることをお勧めします。
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