セントOS 6.5
サーバーは特にAWS AMIです。これ
upstartを使用して起動時にプロセスを開始しようとしています。
この特定のボックスでは、root
ログインが無効になり、sudo
何かを実行する必要があるたびにパスワードの入力を求められます。
したがって、単にコマンドをスクリプトに入れるだけでは機能しません。
追いかけようとするこの回答、成功できませんでした
/ect/init ディレクトリに次の rio.conf ファイルがあります。
start on runlevel [2345]
stop on runlevel [!2345]
exec echo Password! | sudo -s /usr/bin/riofs --fuse-options="allow_other" --fmode=0777 --dmode=0777 xx.xxxxxx /mnt/applications/recorder/streams/_definst_/s3
これを実行するたびに何も起こらないようです。
Password!
これは単なるサンプルパスワードです。
編集する:
入力すると、exec /usr/bin/riofs
SSHウィンドウが閉じて戻ってくると機能することがわかります。これが何を意味するのか、どのように自動化するのかは全くわかりません。
答え1
sudo
init / upstartスクリプトにある必要はありません。デフォルトでは、すべてのinit / upstartサービスはrootとして実行されます。
このように考えてみてください。どのユーザーで起動スクリプトを実行しますか?個人ユーザーとして実行したい場合はなぜですか?システムはスクリプトだけを見ることができ、個々のユーザーが誰であるかはまったくわかりません。
つまり、exec
行を次のように変更します。
exec /usr/bin/riofs --fuse-options="allow_other" --fmode=0777 --dmode=0777 xx.xxxxxx /mnt/applications/recorder/streams/_definst_/s3
結局私はそれをしません。ファイルシステムをマウントしています/etc/fstab
。次の作業が必要です。
riofs#xx.xxxxxx /mnt/applications/recorder/streams/_definst_/s3 _netdev,allow_other,fmode=0777,dmode=0777 0 0
答え2
ユーザーパスワードなしで機能するようにsudoを設定できます。 visudoをrootとして実行し、ユーザー行にNOPASSWDを追加します。
user ALL=(root) NOPASSWD: ALL
編集する
これが新スクリプトであることを考えると、Patrickの答えは正しいです。
また、任意のスクリプトの場合、0xC0000022Lが適しています。パスワードを必要としないユーザーでこのルート専用スクリプトを実行するとします。
user@host:~$ ls -lah /usr/local/bin/script.sh
-rwx------ 1 root root ... script.sh
visudoを使用すると、ユーザー行は次のようになります。
user ALL=(root) NOPASSWD: /usr/local/bin/script.sh
これにより、このコマンドのみがパスワード要件を免除されます。
答え3
考慮すべき2つのことがあります。
まず、毎回パスワードを入力するのがsudo
面倒な場合は、@mirimirが提案したように "/ etc / sudoers"ファイルを次のように編集してください。
yourusername ALL=(root) NOPASSWD: ALL
または
yourusername ALL=(ALL) NOPASSWD: ALL
永遠に修正してください:-)。
第二に、スクリプトの所有者を確認してください。私は所有者と権限が重要であると確信しています。所有者がこのように変わりましたsudo chown root:root /path/to/script.sh
。また、権限を744に設定することを検討してくださいsudo chmod 744 /path/to/script.sh
。