Como impedir que o rpcbind seja iniciado no Arch Linux?

4

O systemd do meu Arch Linux inicia rpcbind automaticamente. O que tenho que fazer para impedir que systemd faça isso? Não há sistemas de arquivos remotos em /etc/fstab . A única coisa que eu achei por que o rpcbind é iniciado é que ele é supostamente desejado pelo destino multiusuário, mas não há serviço no diretório. Como posso descobrir por que isso realmente começou?

    
por David 27.12.2014 / 08:06

3 respostas

7

Existe um relatório de erros abertos no rastreador do Arch .

O seu melhor seria mascarar o serviço:

systemctl mask rpcbind.service

Veja a série de postagens de blog de Lennart Poettering, systemd para administradores, parte V para detalhes sobre mascaramento:

3. You can mask a service. This is like disabling a service, but on steroids. It not only makes sure that service is not started automatically anymore, but even ensures that a service cannot even be started manually anymore. This is a bit of a hidden feature in systemd, since it is not commonly useful and might be confusing the user. But here's how you do it:

$ ln -s /dev/null /etc/systemd/system/ntpd.service
$ systemctl daemon-reload
By symlinking a service file to /dev/null you tell systemd to never start the service in question and completely block its execution. Unit files stored in /etc/systemd/system override those from /lib/systemd/system that carry the same name. The former directory is administrator territory, the latter terroritory of your package manager. By installing your symlink in /etc/systemd/system/ntpd.service you hence make sure that systemd will never read the upstream shipped service file /lib/systemd/system/ntpd.service.

systemd will recognize units symlinked to /dev/null and show them as masked. If you try to start such a service manually (via systemctl start for example) this will fail with an error.
    
por 27.12.2014 / 08:32
2

Se não houver wanted/rpcbind.service , provavelmente não será iniciado diretamente, mas iniciado pela ativação do soquete. Você pode saber se foi assim que começou mais recentemente procurando indirect em vez de static na linha Loaded da saída de status (observe que systemctl adicionou automaticamente o .service ao nome da unidade como não foi incluído na linha de comando):

$ systemctl status rpcbind
● rpcbind.service - RPC bind service
   Loaded: loaded (/usr/lib/systemd/system/rpcbind.service; indirect; vendor preset: enabled)
   Active: active (running) since Fri 2017-03-31 15:39:29 WIB; 37min ago
 Main PID: 6763 (rpcbind)
   CGroup: /system.slice/rpcbind.service
           └─6763 /sbin/rpcbind -w

Independentemente disso, você pode verificar se você ativou o soquete ativado:

$ systemctl status rpcbind.socket
● rpcbind.socket - RPCbind Server Activation Socket
   Loaded: loaded (/usr/lib/systemd/system/rpcbind.socket; disabled; vendor preset: enabled)
   Active: active (listening) since Fri 2017-03-31 15:39:29 WIB; 37min ago
   Listen: /var/run/rpcbind.sock (Stream)
           [::]:111 (Stream)
           0.0.0.0:111 (Stream)

(No exemplo acima, desativei a unidade, mas ainda não parei o ouvinte existente que inicia rpcbind quando recebe uma solicitação.)

Executar o seguinte deve matar os dois e garantir que eles nunca sejam iniciados:

$ systemctl disable rpcbind.service rpcbind.socket
$ systemctl stop rpcbind.service rpcbind.socket

Uma verificação de status deve produzir algo nos seguintes termos:

$ systemctl status rpcbind.service rpcbind.socket
● rpcbind.service - RPC bind service
   Loaded: loaded (/usr/lib/systemd/system/rpcbind.service; indirect; vendor preset: enabled)
   Active: inactive (dead) since Fri 2017-03-31 16:17:05 WIB; 49s ago
 Main PID: 6763 (code=exited, status=0/SUCCESS)

[...log messages...]
Mar 31 16:17:05 myhost systemd[1]: Stopped RPC bind service.

● rpcbind.socket - RPCbind Server Activation Socket
   Loaded: loaded (/usr/lib/systemd/system/rpcbind.socket; disabled; vendor preset: enabled)
   Active: inactive (dead) since Fri 2017-03-31 16:17:48 WIB; 6s ago
   Listen: /var/run/rpcbind.sock (Stream)
           [::]:111 (Stream)
           0.0.0.0:111 (Stream)

[...log messages...]
Mar 31 16:17:48 myhost systemd[1]: Closed RPCbind Server Activation Socket.
Mar 31 16:17:48 myhost systemd[1]: Stopping RPCbind Server Activation Socket.
    
por 31.03.2017 / 12:09
0

Com o systemd, a maneira de parar os serviços que começam na inicialização é usar a opção disable , portanto, neste exemplo você usaria o comando systemctl disable rpcbind , abaixo está um exemplo da saída que vejo quando estou rodando no meu Fedora 20 sistema;

chris::test::07:08:29-> sudo systemctl disable rpcbind
rm '/etc/systemd/system/multi-user.target.wants/rpcbind.service'
rm '/etc/systemd/system/sockets.target.wants/rpcbind.socket'
    
por 27.12.2014 / 08:09