참고: 이 번들의 버전 6에 관해 비슷한 질문을 했습니다.여기. 7은 systemd를 사용하며 구현이 다를 수 있습니다.
드문 경우지만(예를 들어) 부적절한 종료 또는 부팅 시 강제 fsck 확인 실패로 인해 RHEL 또는 CentOS 7 시스템이 부팅되지 않는 경우 콘솔에서 사용자에게 루트 암호를 묻는 메시지를 표시합니다.
비밀번호 확인을 비활성화하고 루트 쉘을 직접 입력하는 방법은 무엇입니까?
허용되지 않음답변:
init
커널 명령 줄 (예: grub) 재정의- /sbin/sulogin link/를 /sbin/sushell로 바꾸십시오. (이 방법은 작동하지만 보안 프레임워크에 위험 신호를 발생시킵니다.)
- 다른 장치에서 실행
답변1
Systemd가 함께 일하고 있습니다제공하다그리고표적. 목표는 다음과 같습니다.런레벨, 서비스는 다음과 같습니다초기화 스크립트. 대부분의 systemd 구성은 에 있고 /usr/lib/systemd
표준 init는 에 있습니다 /etc/{init.d,rc*.d,inittab}
.
시작하는 동안 문제가 발생한 경우(기본값은게티 타겟또는그래픽 타겟, systemctl get-default
다음으로 전환 할 수 있습니다.긴급 목표.
이 "긴급" 대상은 파일을 순서대로 로드합니다 emergency.service
. 서비스에는 다음을 포함한 여러 줄이 포함되어 있습니다.
...
[Service]
Environment=HOME=/root
WorkingDirectory=/root
ExecStartPre=-/bin/plymouth quit
ExecStartPre=-/bin/echo -e 'Welcome to emergency mode! After logging in, type "journalctl -xb" to view\\nsystem logs, "systemctl reboot" to reboot, "systemctl default" to try again\\nto boot into default mode.'
ExecStart=-/bin/sh -c "/sbin/sulogin; /usr/bin/systemctl --fail --no-block default"
...
호출을 다음으로 바꾸면 됩니다 /sbin/sulogin
.
ExecStart=-/bin/sh -c "/sbin/sushell; /usr/bin/systemctl --fail --no-block default"
비밀번호를 묻는 메시지를 표시하기 위해 sulogin이 아닌 쉘을 직접 입력하겠습니다. ( 을 사용할 수 있지만 /bin/sh
CentOS6 /sbin/sushell
/RHEL6 답변에 맞춰서 실제로 sushell
기본값이 .인 exec를 사용하십시오.)$SUSHELL
/bin/bash
이 변경 사항을 "영구적으로", 즉 yum
업데이트의 영향을 받지 않게 하려면 이 파일의 복사본을 변경하고 에 넣으십시오 /etc/systemd/system/
. 또한 "복구 모드"가 동일한 방식으로 작동하도록 하려면 rescue.service
.여기에 프로세스를 단순화하는 쉘/sed 스크립트:
for SERVICE in rescue emergency ; do
sed '/^ExecStart=/ s%"/sbin/sulogin;%"/sbin/sushell;%' /usr/lib/systemd/system/$SERVICE.service > /etc/systemd/system/$SERVICE.service
done
이를 테스트하려면 시스템이 사용 중이 아닌지 확인하고 대상 systemd
으로 스위치를 지시하십시오 rescue
.
systemctl rescue
그러면 네트워크 연결이 닫히고 콘솔에서 셸이 열립니다. 대상을 사용하여 테스트 할 수 있지만 emergency
(어떤 이유로든) 제대로 작동하지 않으며 종료하려면 완전히 재부팅해야 할 수도 있습니다.
부팅 메뉴(grub)에서도 테스트할 수 있습니다. 비상 모드를 테스트하는 것은 쉽습니다. 실행하고 메뉴가 나타나면 "e"를 눌러 편집한 다음 화살표 키를 사용하여 linux16
다음으로 시작하는 줄로 이동하고 추가합니다( CTRL-A
줄의 끝으로 이동하려면 누르세요) emergency
.
linux16 ... emergency
복구 모드를 테스트하는 단계는 위와 동일하지만 더 명확해야 합니다.
linux16 ... systemd.unit=rescue.target
답변2
루트 암호를 우회하고 루트 셸에 액세스하는 데 사용한 방법은 grub에서 init(커널 라인)을 편집하는 것이었습니다.
init=/bin/bash