Автоматический вход в систему root на серверах Linux

Автоматический вход в систему root на серверах Linux

Я пытаюсь выполнить тест в разных дистрибутивах Linux-серверов (Fedora, Ubuntu, Centos и т. д.).

Я знаю, что есть система инициализации, которая позволяет выполнять программы после загрузки (без входа в систему). Проблема в том, что я не хочу иметь особый случай для каждой отдельной системы инициализации между дистрибутивами. Есть ли способ разрешить автоматический вход в систему root после загрузки?

Сделав это, я могу иметь тот же скрипт оболочки для любого дистрибутива. Или есть способ обойти эту проблему?

решение1

Я знаю, что существует система инициализации, которая позволяет запускать программы после загрузки (без входа в систему).

К сожалению, в наши дни нетодинinit system существует полдюжины популярных init-систем. Например, sysv init, systemd, upstart и т. д.

В любом случае, если вы действительно хотите, чтобы система предоставляла вам консоль с правами root, вам, вероятно, следует обновить систему инициализации.

Я делаю это для последовательного порта на нескольких моих системах. У меня есть две очень разные конфигурации, и я использую только Debian с двумя разными релизами. Я не могу себе представить, что вы сможете придумать единый метод, который будет применим ко всем дистрибутивам. Просто нет единообразия в том, как все начинается. Systemd должен быть примерно одинаковым во всех дистрибутивах, но пока он не получил широкого распространения.

Debian с sysv init (wheezy) переключитесь на root через последовательный порт

# /etc/inittab
...
# serial port getty spawns sulogin, which drops to a root shell
# on debian if root has a disabled password
T0:23:respawn:/sbin/getty -n -l /sbin/sulogin -L ttyS0 57600 vt102
...

Debian с systemd (jessie) переключитесь на root через последовательный порт

#/etc/systemd/system/getty.target.wants/[email protected]
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

[Unit]
Description=Serial Getty on %I
Documentation=man:agetty(8) man:systemd-getty-generator(8)
Documentation=http://0pointer.de/blog/projects/serial-console.html
BindsTo=dev-%i.device
After=dev-%i.device systemd-user-sessions.service plymouth-quit-wait.service
After=rc-local.service

# If additional gettys are spawned during boot then we should make
# sure that this is synchronized before getty.target, even though
# getty.target didn't actually pull it in.
Before=getty.target
IgnoreOnIsolate=yes

[Service]
ExecStart=-/sbin/agetty -n -l /sbin/sulogin --keep-baud 115200,38400,9600 %I $TERM
Type=idle
Restart=always
UtmpIdentifier=%I
TTYPath=/dev/%I
TTYReset=yes
TTYVHangup=yes
KillMode=process
IgnoreSIGPIPE=no
SendSIGHUP=yes

[Install]
WantedBy=getty.target

Лучшим вариантом может быть отказ от идеи входа в систему как root и использование вместо этого инструмента управления конфигурацией, например puppet или , который может абстрагировать некоторые различия между выпусками дистрибутивов. Пусть этот инструмент запускает ваши тестовые запуски.

решение2

вы добавили комментарий: «У меня есть программа, которую нужно физически протестировать на разных дистрибутивах Linux, чтобы сообщить о ее производительности»

В этом случае вы можете рассмотреть возможность использованиядокер, таким образом, вам на самом деле не нужна полноценная ОС или что-то в этом роде... но если ваша программа по какой-то причине должна запускаться на физическом экземпляре, вы можете попробовать какую-нибудь среду выполнения заданий, напримердженкинс

решение3

Я не совсем понимаю, что именно вам нужно, однако, если вы хотите запустить что-то от имени root после загрузки Linux, в большинстве дистрибутивов это можно сделать вот так:

/etc/rc.local

Или иногда

/etc/rc.d/rc.local

решение4

Если это программирование командной строки, лучшим подходом будет выполнить его через SSH. Кроме того, вы можете использовать ключи SSH для входа без паролей.

Связанный контент