sudoersファイルの正しいCmnd_Aliasを見つけてください。
パスワードなしで実行できるコマンドは次のとおりです。
sudo /usr/bin/nohup /etc/init.d/axtty start >/dev/null 2>&1
sudoersファイルに追加した行は次のとおりです。
## Cmnd alias specification
Cmnd_Alias AXTOOLTTYSTART = /usr/bin/nohup /etc/init.d/axtty start >/dev/null 2>&1
Cmnd_Alias AXTOOLTTYSTOP = /etc/init.d/axtty stop
Cmnd_Alias AXTOOLTTYSTATUS = /etc/init.d/axtty status
Cmnd_Alias AXTOOLINTCTLSTART = /sbin/initctl start ttyp?
Cmnd_Alias AXTOOLINTCTLSTOP = /sbin/initctl stop ttyp?
## This will disable password request for the axtools commands
%sudoaxtools ALL=(root) NOPASSWD: AXTOOLTTYSTART, AXTOOLTTYSTOP, AXTOOLTTYSTATUS, AXTOOLINTCTLSTART, AXTOOLINTCTLSTOP
Defaults!AXTOOLTTYSTART !requiretty
Defaults!AXTOOLTTYSTOP !requiretty
上記のコマンドは、sudoaxtoolsグループのメンバーまたはルートのcrontabによって実行されるスクリプト(axopen)内で実行されます。
/usr/local/bin/axopen
#!/bin/sh
SUDO=''
if (( $EUID != 0 )); then
SUDO='sudo'
fi
echo -n "Checking for open connections"
while netstat -d | grep -q axel
do
((c++)) && ((c==900)) && break
echo -n "."
sleep 4
done
echo "done"
echo "Starting axtty service.."
$SUDO /usr/bin/nohup /etc/init.d/axtty start >/dev/null 2>&1
sleep 4
$SUDO /etc/init.d/axtty status
sudoaxtools メンバーを介して axopen を実行すると、まだパスワードの入力を求められます。私はこれが断片化のためであると予想しました>/dev/null 2>&1
。
中学校
nohupを使用する理由は、単にnohupを使用すると、何らかの理由でサービスが開始されないためです。
sudo /etc/init.d/axtty start
したがって、誰もがこの問題を解決するアイデアを持っている場合は良いでしょう。
答え1
sudoルールの一部にリダイレクトしたくありません。 /etc/sudoersには実行されたプログラムが含まれており、リダイレクトはsudoコマンドとは別に発生します(含まれているシェルレベルで)。
(シェル) sudo /usr/bin/nohup /etc/init.d/axtty start >/dev/null 2>&1
これはsudoを呼び出し、sudoが表示する出力をリダイレクトします。
(sudo) /usr/bin/nohup /etc/init.d/axtty 起動
このsudoers行を変更してください。
Cmnd_Alias AXTOOLTTYSTART = /usr/bin/nohup /etc/init.d/axtty start >/dev/null 2>&1
到着する:
Cmnd_Alias AXTOOLTTYSTART = /usr/bin/nohup /etc/init.d/axtty start
答え2
結局、nohupスクリプトを別のbashスクリプトに入れました。
/usr/local/bin/axttystart
#!/bin/sh
## Intermediate bashscript in order to sudo nohup properly
/usr/bin/nohup /etc/init.d/axtty start >/dev/null 2>&1
Cmnd_alias
次に、forを含むsudo'ers行を次に変更しますAXTOOLTTYSTART
。
Cmnd_Alias AXTOOLTTYSTART = /usr/local/bin/axttystart
更新されたaxopenスクリプトは、nohup行であるsudoスクリプトaxttystart
の直接sudo実行を置き換えます。
#!/bin/sh
[...]
echo "Starting axtty service.."
$SUDO /usr/local/bin/axttystart
sleep 4
$SUDO /etc/init.d/axtty status