Я хочу иметь возможность входить на свои серверы через IPMI / последовательную консоль ttyS1.
Поскольку IPMI уже запрашивает пароль, пароль root выводится на консоль через /etc/issue
.
Через Ubuntu Server 16.04 вход в систему root работает безупречно. В CentOS / vzlinux я не могу заставить его работать.
Я сделал следующее:
echo ttyS1 >> /etc/securetty
cat >> /etc/security/access.conf << EOF
+ root : cron crond tty0 tty1 tty2 tty3 tty4 tty5 tty6 ttyS0 ttyS1
- root : ALL
EOF
Теперь проблема заключается в конфигурации pam. Getty вылетит с ошибками pam:
Я думаю, что это оскорбительные строки конфигурации pam:
В /etc/pam.d/*-ac
файлы создаются автоматически и не должны перезаписываться.
Как мне исправить эту проблему «правильным» способом?
Как я могу внести изменения только в вход в систему через ttyS1?
Systemd по умолчанию создает только последовательный блок getty для системной последовательной консоли, если он определен. Обычно это делается с помощью console=
в командной строке ядра.
Поскольку вы пытаетесь использовать последовательный tty, который не является определенной консолью, вы должны включить getty самостоятельно. Это тривиально просто, так как это созданный Ед. изм:
systemctl enable serial-getty@ttyS1.service
systemctl start serial-getty@ttyS1.service
Вам не нужно взламывать или копировать какие-либо служебные файлы.
Моя проблема оказалась проблемой systemd. По какой-то причине systemd не сгенерировал блок "dev-ttyS1.device" и поэтому остановил getty (Unit serial-getty@ttyS1.service is bound to inactive unit dev-ttyS1.device. Stopping, too
)
Это устранило мои проблемы с getty:
srvfile="/etc/systemd/system/serial-getty@ttyS1.service"
echo -n "# This file has been created because of a bug in systemd\n\n" > $srvfile
cat /lib/systemd/system/serial-getty@.service >> $srvfile
sed -i 's/dev-%i\.device //g' $srvfile
sed -i 's/dev-%i\.device//g' $srvfile