Назад | Перейти на главную страницу

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

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

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

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

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

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

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

/etc/rc.local

Или иногда

/etc/rc.d/rc.local

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

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

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

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

Я делаю это для последовательного порта в нескольких своих системах. У меня две очень разные конфигурации, и я использую 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/serial-getty@ttyS1.service
#  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, или который может абстрагироваться от некоторых различий между выпусками дистрибутивов. Пусть этот инструмент запускает ваши тестовые прогоны.