Intereting Posts

Как остановить rpcbind от запуска в Arch Linux?

Система My Arch Linux запускает rpcbind автоматически. Что мне нужно сделать, чтобы остановить systemd для этого? В /etc/fstab нет удаленных файловых систем. Единственное, что я нашел, почему запускается rpcbind, – это то, что, по-видимому, требуется для многопользовательской цели, но в каталоге нет службы. Как я могу понять, почему он действительно запущен?

Существует отчет об ошибках в трекерах Arch .

Лучше всего было бы замаскировать службу:

 systemctl mask rpcbind.service 

См. Статьи блога Lennart Poettering, системные сведения для администраторов, часть V, для получения подробной информации о маскировке:

3. Вы можете замаскировать службу. Это похоже на отключение службы, но на стероиды. Это не только гарантирует, что сервис не запускается автоматически больше, но даже гарантирует, что сервис не может быть запущен вручную. Это немного скрытая функция в systemd, поскольку она не является обычно полезной и может запутать пользователя. Но вот как вы это делаете:

 $ ln -s /dev/null /etc/systemd/system/ntpd.service $ systemctl daemon-reload 

Сопоставляя ссылку на служебный файл на /dev/null вы сообщаете системеdd никогда не запускать данную службу и полностью блокировать ее выполнение. Файлы модулей, хранящиеся в /etc/systemd/system переопределяют файлы из /lib/systemd/system которые имеют одно и то же имя. Первый каталог – это административная территория, последний из которых – ваш менеджер пакетов. Установив свою символическую ссылку в /etc/systemd/system/ntpd.service вы, следовательно, убедитесь, что systemd никогда не прочитает /lib/systemd/system/ntpd.service служебный файл /lib/systemd/system/ntpd.service .

systemd распознает единицы, символически привязанные к /dev/null и покажет их как замаскированные. Если вы попытаетесь запустить такую ​​услугу вручную (например, с помощью запуска systemctl), это приведет к ошибке с ошибкой.

Если нет wanted/rpcbind.service его скорее всего не запускают напрямую, а запускают через активацию сокета. Вы можете сказать, как именно это было в последнее время начато путем поиска indirect а не static в строке Loaded вывода состояния (обратите внимание, что systemctl автоматически добавляет .service к имени устройства, поскольку он не был включен в командную строку) :

 $ 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 

Независимо от того, вы можете проверить, активирована ли активация сокета:

 $ 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) 

(В приведенном выше примере я отключил устройство, но еще не остановил существующего слушателя, который запускает rpcbind когда он получает запрос.)

Выполнение следующего должно убить обоих и убедиться, что они никогда не запускаются:

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

Затем проверка состояния должна производить что-то вроде:

 $ 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. 

С systemd способ остановить службы, начиная с загрузки, – использовать параметр disable , поэтому в этом случае вы должны использовать команду systemctl disable rpcbind , ниже приведен пример вывода, который я вижу при работе в моей системе Fedora 20;

 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'