Там в рассылке в 2013-ом это озвучили прямо и однозначно, в плане systemd и sysv.
ну, был-бы желающий всё это хозяйство грамотно тянуть, что-бы он не ломал systemd, а альтернативный вариант никому не помешает.
Это для мечтателей
Руслан, его нельзя не ломать. systemd так устроен преднамеренно.
У пользователя с systemd один вариант: шаг вправо, шаг влево - расстрел на месте.
Если его вынести, пользователь альтовыми зависимостями лишится openssh и openssh-server.
Кстати полгода назад таких зависимостей не было у systemd и выносился он на ура:
https://forum.altlinux.org/index.php?topic=36177.msg276168#msg276168Если оставить systemd, при первом же повышении версии systemd с перезагрузкой, последует отказ в авторизации, и тут только два варианта, - плохо и совсем хреново:
# tail -n1 /lib/tmpfiles.d/systemd-nologin.conf
#F! /run/nologin 0644 - - - "System is booting up. See pam_nologin(8)"
# apt-get reinstall systemd
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
0 будет обновлено, 0 новых установлено, 1 пакетов будет переустановлено, 0 пакетов будет удалено и 5 не будет обновлено.
Необходимо получить 0B/1088kB архивов.
После распаковки потребуется дополнительно 0B дискового пространства.
Продолжить? [Y/n] y
Совершаем изменения...
# tail -n1 /lib/tmpfiles.d/systemd-nologin.conf
F! /run/nologin 0644 - - - "System is booting up. See pam_nologin(8)"
Можно скриптом вообще забить на этот systemd-шный конфиг, но это жутчайший костыль, хотя работать и будет безотказно:
# cat /etc/init.d/rm-run-nologin
#!/bin/sh
#
# chkconfig: 12345 46 06
# description: Elimination refusing authorization to sysvinit
# Source function library.
. /etc/init.d/functions
start()
{
rm -f /run/nologin
}
stop()
{
echo
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
*)
msg_usage "${0##*/} {start}"
esac
exit
Но этому скрипту-сервису нужен постинсталл-скрипт, который автоматом добавит сервис на уровни 12345 и включит, что бы сразу же после инсталляции системы на перезагрузке пользователь не получил отказ в авторизации.
А зафиксировать комментарий никак не выйдет, - Лёня Поттеринг всё предусмотрел до мелочей чтобы sysv загнать в могилу побыстрее:
# chattr +i /lib/tmpfiles.d/systemd-nologin.conf
# apt-get reinstall systemd
Чтение списков пакетов... Завершено
Построение дерева зависимостей... Завершено
0 будет обновлено, 0 новых установлено, 1 пакетов будет переустановлено, 0 пакетов будет удалено и 5 не будет обновлено.
Необходимо получить 0B/1088kB архивов.
После распаковки потребуется дополнительно 0B дискового пространства.
Продолжить? [Y/n] y
Совершаем изменения...
Preparing... ########################################################################### [100%]
1: systemd error: unpacking of archive failed on file /lib/tmpfiles.d/systemd-nologin.conf: cpio: rename failed - Операция не позволена
E: Произошли ошибки при выполнении транзакции
Моё имхо:
Если пользователь вдруг захочет ssh, вариант слома мы должны исключить, при любых обстоятельствах.
Ну и каким-то постинсталл скриптом воткнуть в /etc/fstab совет Миши Ефремова сразу после инсталляции системы:
echo '/run /var/run bind defaults,bind 0 0' >> /etc/fstab
В общем с /run/nologin нарисовались два варианта, - предлагаю обсудить и выбрать оптимальный.
В отношении NM (имхо), прислушался бы к совету Миши Шигорина и перешёл бы на etcnet.
Не предлагаю, это мысли на мусор:
Этот скрипт м.б. полезен с etcnet для ноутбуков у которых кнопка wifi, это кнопка hard block
(см. description для wpa_supplicant:
it controls the roaming and IEEE 802.11 authentication/association of the wlan driver )
После кнопки ноутбука Hard blocked on, скрипт найдёт беспроводной интерфейс и восстановит authentication/association
В других ноутбуках, и скорее всего в большинстве, это кнопка Soft blocked, которая не ломает authentication/association of the wlan driver
# cat wireless_etcnet_restart
#!/bin/bash
WL_IFACE="$(grep -rH DRIVER /sys/class/net/*/device/ 2>/dev/null | \
grep $( lspci -k|grep -A2 Netw|tail -n 1 | sed 's/ //g'|cut -f2 -d : ) | cut -f5 -d / )"
WPA_PIDS="$(ps -eo pid,args|grep 'wpa_supplicant\|wpa_cli'|grep -v grep|awk '{print $1}'|sed 'N;s/\n/ /')"
# Kill wpa processes, *.pid file and lock file
[ -z "$WPA_PIDS" ] || kill -3 $WPA_PIDS
rm -f /var/run/wpa_*.pid
rm -f /var/run/wpa_supplicant/{$WL_IFACE}
/etc/init.d/network restart