sudo nohup e redirecionamento

1

Tentando descobrir o Cmnd_Alias correto para o arquivo sudoers

O comando i que é executado sem qualquer senha é o seguinte:

sudo /usr/bin/nohup /etc/init.d/axtty start >/dev/null 2>&1

As linhas que adicionei ao arquivo sudoers são:

## 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

O comando em menção é executado dentro de um script (axopen), executado pelo membro do grupo sudoaxtools ou pelo crontab do root

/ 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

Quando o axopen é executado no membro do sudoaxtools, ele ainda solicita a senha. Espero que seja devido às >/dev/null 2>&1 de partes.

Secundário

A razão pela qual eu estou usando o nohup é porque o serviço, por algum motivo, não será iniciado, quando executado simplesmente usando

sudo /etc/init.d/axtty start

Então, se alguém tiver ideias para corrigir isso, também será ótimo.

    
por Phliplip 12.07.2018 / 14:18

2 respostas

0

Acabei colocando o script nohup em um script bash separado.

/ 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

Em seguida, alterou a linha sudo'ers contendo o Cmnd_alias para AXTOOLTTYSTART para

Cmnd_Alias AXTOOLTTYSTART = /usr/local/bin/axttystart

O script axopen atualizado, em vez disso, para o sudoing da linha nohup diretamente, sudo o script axttystart

#!/bin/sh

[...]

echo "Starting axtty service.."
$SUDO /usr/local/bin/axttystart
sleep 4
$SUDO /etc/init.d/axtty status
    
por 15.07.2018 / 22:47
3

Você não deseja os redirecionamentos como parte da regra sudo. / etc / sudoers contém o programa que é executado, e os redirecionamentos acontecem separadamente (no nível de shell contendo) do comando sudo:

(shell) sudo /usr/bin/nohup /etc/init.d/axtty start >/dev/null 2>&1

Isso chama o sudo e redireciona a saída; sudo vê:

(sudo) /usr/bin/nohup /etc/init.d/axtty start

Altere esta linha de sudoers:

Cmnd_Alias AXTOOLTTYSTART = /usr/bin/nohup /etc/init.d/axtty start >/dev/null 2>&1

para:

Cmnd_Alias AXTOOLTTYSTART = /usr/bin/nohup /etc/init.d/axtty start
    
por 12.07.2018 / 14:32