저는 (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
몇 가지 실험을 거쳐 유용한 정보를 얻었습니다.
실행하고 다음을 추가합니다.
systemctl edit [email protected]
[Service] ExecStart= ExecStart=-/sbin/agetty -o '-p -- \\u' --keep-baud 115200,38400,9600 --noclear --autologin root ttyS0 $TERM
이렇게 하면 사용자가
agetty
자동으로 로그인되지만root
이렇게 변경해도 여전히 루트 비밀번호를 묻는 메시지가 표시됩니다.비밀번호를 요구하지 않고 콘솔에서
/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
하고 다른 인증 메커니즘이 발견되면 건너뜁니다.직렬 포트 추가
/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
로그인이 허용되는 터미널을 제어함). 따라서 이것이 귀찮다면 다른 파일을 사용하십시오 :).