Sudo/root権限で起動時に/usr/bin
からスクリプトとバイナリファイルを起動する必要があります。私はこのフォーラムから多くのガイドを試しましたが、何も機能しませんでした(rc.local
およびsystemd
スタイル、Upstart)-多分何かおかしいです。私のOSはUbuntu GNOME 16.10。です。
スクリプトは次のようになります
#!/bin/bash
Sudo ./usr/bin/myprogram
Sudo bash /home/USER/script.bash
スクリプトとプログラムの両方が実行可能です。起動時にSudoでそれらを起動する最適な方法がわかりません。
優しくしてください。私は新しいユーザーです。
GUIを必要としないコマンドラインアプリケーションの場合、それらの呼び出しを/etc/rc.local
に配置するだけで十分です。これは既にルートとして実行されているため、Sudo
は不要です。以下は、2つの監視スクリプトを開始するために使用する独自の/etc/rc.local
の例です。
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
/home/xieerqi/bin/batmon.sh &
/home/xieerqi/bin/sh/temperature.sh &
exit 0
GUIアプリケーションの場合、別のアプローチをとる必要があります。スタートアップアプリケーションアプリを開き、次のコマンドを追加する必要があります。
bash -c "sleep 10;gksu /usr/bin/my_vpn_program"
これにより、GUIの起動に十分な時間が10秒間与えられ、パスワードダイアログが表示され、パスワードを正しく入力するとコマンドが起動します。事実上、これはミニbashスクリプトです。代わりにpkexec
を使用できます。また、pkexec
の代わりにgksu
が推奨されると言う人もいます。
あるいは、毎回パスワードを入力したくない場合は、ユーザーに認証なしでルート権限でこの特定のコマンドを実行させることができます。そのためには、/etc/sudoers
ファイルを編集する必要があります。 WARNING:Sudo visudo
を使用して端末からファイルを編集することをお勧めします。以下は、pm-suspend
コマンドで同じ設定を使用する方法の例です。
# Allow using pm-suspend for my user without password
xieerqi ALL = NOPASSWD: /usr/sbin/pm-suspend
この行は、/etc/sudoers
ファイルの最後に追加して保存する必要があります。設定する各コマンドの先頭にSudo
またはgksu
を追加する必要があることに注意してください。したがって、前に示したのと同じbash
コマンドを使用する必要があります。
解決策はとても簡単なので、見逃しました。 :) rc.localはrootによって実行されるため、ファイル内のSudoはまったく不要です。
言い換えれば、あなたが提案したようにrc.localに入れますが、スクリプトからSudo
を省略します。 rc.localはすでにルートとして実行されているため、これらはまったく不要です。
お役に立てれば!