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