Linux 서버의 자동 루트 로그인

Linux 서버의 자동 루트 로그인

다양한 Linux 서버 배포판(Fedora, Ubuntu, Centos 등)에서 테스트를 실행하려고 합니다.

부팅 후 (로그인 없이) 프로그램 실행을 허용할 수 있는 초기화 시스템이 있다는 것을 알고 있습니다. 문제는 배포판 간의 모든 다른 초기화 시스템에 대해 특별한 경우를 갖고 싶지 않다는 것입니다. 부팅 후 루트 자동 로그인을 허용하는 방법이 있습니까?

이렇게 하면 모든 배포판에 대해 동일한 쉘 스크립트를 가질 수 있습니다. 아니면 이 문제를 해결할 수 있는 방법이 있나요?

답변1

부팅 후 (로그인 없이) 프로그램 실행을 허용할 수 있는 초기화 시스템이 있다는 것을 알고 있습니다.

아쉽게도 요즘은 없어요하나init 시스템 널리 사용되는 init 시스템은 6가지가 있습니다. 예를 들어 sysv init, systemd, upstart 등이 있습니다.

어쨌든, 시스템에서 루트 액세스 권한이 있는 콘솔을 제공하기를 정말로 원한다면 초기화 시스템을 업데이트하고 싶을 것입니다.

나는 내 시스템 몇 대의 직렬 포트에 대해 이 작업을 수행합니다. 나는 매우 다른 두 가지 구성을 가지고 있으며 두 가지 다른 릴리스의 데비안만을 사용하고 있습니다. 모든 배포판에 적용할 단일 방법을 생각해 낼 수 있을 것이라고는 상상할 수 없습니다. 일이 시작되는 방식에 일관성이 없습니다. Systemd는 배포판 전체에서 매우 유사해야 하지만 아직 널리 받아들여지지는 않습니다.

sysv init(wheezy)가 있는 데비안은 직렬 포트의 루트에 드롭됩니다.

# /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
...

systemd(jessie)가 있는 Debian은 직렬 포트의 루트에 드롭됩니다.

#/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

가장 좋은 방법은 루트로 로그인하는 아이디어를 포기하고 대신 puppet과 같은 구성 관리 도구를 사용하거나 다양한 배포판 릴리스 차이점을 추상화할 수 있는 것입니다. 해당 도구가 테스트 실행을 트리거하도록 하세요.

답변2

"성능을 보고하기 위해 다양한 Linux 배포판에서 물리적으로 테스트해야 하는 프로그램이 있습니다."라는 댓글을 추가하셨습니다.

이 경우에는 다음을 사용하는 것이 좋습니다.도커, 그렇게 하면 전체 OS 등이 실제로 필요하지 않습니다. 하지만 어떤 이유로 프로그램을 물리적 인스턴스에서 실행해야 하는 경우 다음과 같은 작업 실행 환경을 확인하는 것이 좋습니다.젠킨스

답변3

원하는 것이 무엇인지 혼란스럽습니다. 그러나 Linux에서 부팅한 후 루트로 무언가를 실행하려면 대부분의 배포판에서 여기에 붙이십시오.

/etc/rc.local

아니면 가끔

/etc/rc.d/rc.local

답변4

명령줄 프로그래밍인 경우 SSH를 통해 실행하는 것이 더 나은 접근 방식입니다. 또한 SSH 키를 사용하여 비밀번호 없이 로그인할 수 있습니다.

관련 정보