Como parar o serviço sshd sem usar o systemctl?

0

Eu quero usar o Intel Pin Tool para instrumentar o servidor open-ssh. Eu não sei como fazer isso além do seguinte comando.

$PIN_HOME/pin -t somepintool.so -- /usr/sbin/sshd

Então, principalmente eu quero saber como usar a ferramenta pin para instrumentar um serviço usando o systemctl, no entanto, como eu não vejo nenhuma maneira para isso, eu posso lidar com isso se eu souber como parar o serviço sshd sem usar systemctl .

Meu próprio pensamento foi para matar o processo sshd. É uma boa ideia? Alguma outra sugestão?

Obrigado antecipadamente.

    
por masec 03.03.2018 / 23:26

2 respostas

0

Se você tiver dois serviços que não devem ser executados ao mesmo tempo, considere adicionando um Conflicts= entry na seção [Unit] do seu serviço de teste:

Conflicts=

A space-separated list of unit names. Configures negative requirement dependencies. If a unit has a Conflicts= setting on another unit, starting the former will stop the latter and vice versa. Note that this setting is independent of and orthogonal to the After= and Before= ordering dependencies.

If a unit A that conflicts with a unit B is scheduled to be started at the same time as B, the transaction will either fail (in case both are required part of the transaction) or be modified to be fixed (in case one or both jobs are not a required part of the transaction). In the latter case, the job that is not the required will be removed, or in case both are not required, the unit that conflicts will be started and the unit that is conflicted is stopped.

Então, isso pode funcionar (não testado):

pin-sshd.service

[Unit]
Description=Pin debugging of sshd (copied from sshd.service)
After=syslog.target network.target auditd.service
Conflicts=sshd.service

[Service]
ExecStart=/path/to/pin -t somepintool.so -- /usr/sbin/sshd -D -e

[Install]
WantedBy=multi-user.target

Dessa forma, systemd pode fazer o trabalho de garantir que você não tenha os dois serviços em execução e mostrar que é necessário parar e iniciar corretamente. A maioria dos serviços que eu vejo que usam isso tem Conflicts=shutdown.target , então parece que é normalmente usado para garantir que os serviços terminem antes que o desligamento ocorra, mas não há nada que o impeça de usar isso para outros propósitos!

    
por 04.03.2018 / 02:04
0

Não sei ao certo por que matar sshd sem usar systemctl ajudaria aqui. No entanto, nada impede você de informar ao systemd para usar pin ao iniciar sshd ; correr

sudo systemctl edit ssh.service

ou

sudo systemctl edit sshd.service

(dependendo do arquivo que você possui - derivados do Debian usam ssh.service , derivativos do Fedora e do RHEL usam 'sshd.service), e digite

[Service]
ExecStart=/path/to/pin -t somepintool.so -- /usr/sbin/sshd -D $SSHD_OPTS

Em seguida, reinicie sshd ...

A substituição será armazenada em um snippet chamado /etc/systemd/system/ssh(d?).service.d/override.conf ; excluir isso restaurará a definição sshd padrão.

    
por 03.03.2018 / 23:31