직렬 콘솔에서 비밀번호 없는 루트 로그인 허용

직렬 콘솔에서 비밀번호 없는 루트 로그인 허용

저는 (CentOS/RHEL) 가상 머신을 사용하여 로컬 개발을 많이 수행합니다. 기본 루트 비밀번호로 모든 것을 구성하는 대신(네트워크에 노출되면 문제가 발생할 수 있음) 직렬 콘솔에서 비밀번호 없는 루트 로그인만 허용하도록 구성하겠습니다.

ExecStart첫 번째 시도는 다음 옵션을 사용하여 기본 명령을 [email protected]명령줄로 바꾸는 것이었습니다 --autologin.

ExecStart=-/sbin/agetty -o '-p -- \\u' --keep-baud 115200,38400,9600 --noclear --autologin root ttyS0 $TERM

프롬프트를 건너뛰더라도 login:여전히 루트 비밀번호를 묻는 메시지가 표시됩니다. 이것은 Linux에서 프로그램의 한계인 것 같습니다 login.

또한 기본 로그인 프로그램을 다음과 같은 셸로 바꾸려고 했습니다.

ExecStart=-/sbin/agetty -o '-p -- \\u' --keep-baud 115200,38400,9600 --noclear -n -l /bin/bash ttyS0 $TERM

그러나 이것은 selinux와 충돌합니다. 쉘을 얻었지만 bash아무 것도 액세스할 수 없습니다.

bash: /root/.bashrc: Permission denied
# ls /etc/systemd
ls: cannot open directory '/etc/systemd': Permission denied

웹의 다른 곳에서는 사람들이 비밀번호 해시를 제거하는 것을 제안했지만 /etc/{password,shadow}이는 물론 다른 문제를 야기합니다. 이제 모든 사용자는 su -비밀번호를 가질 수 없습니다.

작동시키는 방법에 대한 아이디어가 있습니까?

답변1

몇 가지 실험을 거쳐 유용한 정보를 얻었습니다.

  1. 실행하고 다음을 추가합니다.systemctl edit [email protected]

    [Service]
    ExecStart=
    ExecStart=-/sbin/agetty -o '-p -- \\u' --keep-baud 115200,38400,9600 --noclear --autologin root ttyS0 $TERM
    

    이렇게 하면 사용자가 agetty자동으로 로그인되지만 root이렇게 변경해도 여전히 루트 비밀번호를 묻는 메시지가 표시됩니다.

  2. 비밀번호를 요구하지 않고 콘솔에서 /etc/pam.d/login로그인을 인증하도록 구성할 수 있습니다. root상단에 다음을 추가합니다 /etc/pam.d/login.

    auth sufficient pam_listfile.so item=tty sense=allow file=/etc/securetty onerr=fail apply=root
    

    이렇게 하면 PAM 스택이 로그인 tty를 확인 /etc/securetty하고 다른 인증 메커니즘이 발견되면 건너뜁니다.

  3. 직렬 포트 추가 /etc/securetty:

    # echo ttyS0 > /etc/securetty
    

이러한 변경을 수행한 후 부팅할 때 직렬 콘솔에 다음이 표시됩니다.

CentOS Linux 8 (Core)
Kernel 4.18.0-80.11.2.el8_0.x86_64 on an x86_64

localhost login: root (automatic login)

Last login: Sun Nov 17 00:29:36 on ttyS0
[root@localhost ~]#

...로그아웃하면 즉시 쉘 프롬프트로 돌아갑니다.

/etc/securetty여기서는 과거에 실제로 다른 작업을 수행했던 파일 이름을 사용하고 있습니다 ( root로그인이 허용되는 터미널을 제어함). 따라서 이것이 귀찮다면 다른 파일을 사용하십시오 :).

관련 정보