콘솔에 대한 액세스를 열 수 없습니다. 루트 계정이 parrotOS에서 잠겨 있습니다.

콘솔에 대한 액세스를 열 수 없습니다. 루트 계정이 parrotOS에서 잠겨 있습니다.

내 parrotOS가 부팅되지 않습니다. 이 문제가 발생하기 전에는 시스템을 크게 변경하지 않았습니다. 이전에는 시스템을 재부팅하는 데 아무런 문제가 없었습니다. 저는 parrotOS 5.2를 사용하고 있습니다.

내 fstab은 괜찮아 보입니다. 이 문제가 발생하기 전에는 편집하지 않았습니다.

이제 컴퓨터를 시작하면 비상 모드에서 오류 메시지가 나타납니다.


>> 콘솔에 대한 액세스를 열 수 없습니다. 루트 계정이 잠겨 있습니다. 자세한 내용은 sulogin(8) 매뉴얼 페이지를 참조하십시오.



아무 키나 누르면 메시지가 반복되며 복구 모드에서도 마찬가지입니다.

fstab 편집(스왑 및 중요하지 않은 드라이브 제거)과 Rescue.service 파일 편집을 시도하여 sulogin --force 부팅을 시도했지만 작동하지 않습니다. 또한 fsck를 실행했는데 0(오류 없음)이 반환되었습니다.

구출 서비스에서 시도한 내용입니다.

ExecStart=-/bin/sh -c "/sbin/sulogin --force; /bin/systemctl --job-mode=fail --no-block default"

내 생각에 이것은 데비안 버그와 관련이 있는 것 같습니다.https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=802211

다음 문서를 찾았지만 어떻게 해야 할지, 환경 변수 $SYSTEMD_SULOGIN_FORCE=1을 설정하는 방법을 잘 모르겠습니다.

systemd-sulogin-shell:

  • $SYSTEMD_SULOGIN_FORCE=1 - 루트 비밀번호를 사용할 수 없는 경우(예: 루트 계정이 잠긴 경우) 루트 비밀번호 요청을 건너뜁니다. 자세한 내용은 sulogin(8)을 참조하십시오.

5.2.3. 루트 비밀번호가 없으면 복구 부팅 옵션을 사용할 수 없습니다. Buster는 sulogin을 구현하므로 복구 옵션으로 부팅하려면 항상 루트 비밀번호가 필요합니다. 설정되지 않은 경우 복구 모드를 실제로 사용할 수 없습니다. 그러나 커널 매개변수 init=/sbin/sulogin --force를 사용하여 부팅하는 것은 여전히 ​​가능합니다. 복구 모드(단일 모드라고도 함: systemd(1) 참조)로 부팅할 때 이와 동등한 작업을 수행하도록 systemd를 구성하려면 sudo systemctl edit estimate.service를 실행하고 다음 내용이 포함된 파일을 만듭니다. [ Service]Environment=SYSTEMD_SULOGIN_FORCE= 1 특정 오류가 발생하거나(systemd.special(7) 참조) 긴급 상황이 커널 ​​명령줄에 추가된 경우 자동으로 시작되는 Emergency.service 장치에 대해 이 작업을 수행하는 것도(또는 그 반대) 유용할 수 있습니다. (예를 들어, 복구 모드를 사용하여 시스템을 복구할 수 없는 경우) 보안에 미치는 영향에 대한 배경 및 논의는 #802211을 참조하세요.

답변1

"콘솔에 대한 액세스를 열 수 없습니다. 루트 계정이 잠겨 있습니다..."라는 메시지가 나타나면 어떻게 해야 합니까?

이 경우 OP는 커널 부팅 매개변수 지정을 시도해야 합니다 init="/sbin/sulogin --force". 커널 매개변수는 일반적으로 공백으로 서로 구분되므로 따옴표가 필요할 수 있습니다.

2023년 5월 13일패치가 적용됩니다systemd-sulogin-shellSYSTEMD_SULOGIN_FORCE=1커널 명령줄에서도 지정할 수 있습니다 . 즉, 최신 버전이 있는 경우 systemd부트로더를 사용하여 커널 부팅 매개변수에 다음 옵션을 입력하면 루트 계정이 잠겨 있어도 시스템이 강제로 복구 모드 액세스 권한을 부여하도록 할 수 있습니다.

SYSTEMD_SULOGIN_FORCE=1 init=/sbin/sulogin

그러나 systemd버전이 2023년 5월 13일 이전인 경우 배포판에서 이 패치를 특별히 백포트하지 않는 한 작동하지 않습니다.

rescue.service루트 계정이 잠겨 있어도 액세스를 허용하도록 구성하는 방법

미리 할 수 ​​있는 일은 다음과 같습니다.시스템이 여전히 정상적으로 부팅되는 동안.

루트 계정이 잠겨 있거나 루트 암호를 사용할 수 없는 경우에도 시스템이 복구 모드에서 콘솔에 루트 셸을 자동으로 제공하도록 하려면 다음 단계를 따르십시오.

1 단계. )

systemctl edit rescue.servicesudo/를 사용하여 루트로 실행합니다. 그러면 /etc/systemd/system/rescue.service.d/override.conf파일을 생성하는 편집기가 열립니다 . 이전 버전에서는 편집기가 처음에 비어 있습니다. 최신 버전에서는 참조용으로 systemd기존 정의에 대한 설명 주석과 주석이 달린 버전이 있습니다 . rescue.service두 경우 모두 다음 두 줄을 입력하면 됩니다.

[Service]
Environment=SYSTEMD_SULOGIN_FORCE=1

변수를 추가하는 이 방법은 다음보다 최신 버전 SYSTEMD_SULOGIN_FORCE에서 작동합니다 .systemd2018년 10월 17일또는 배포판에서 이 패치를 백포트했습니다.

배포판에 따라 emergency.service유사한 수정 사항을 적용할 수도 있습니다.

2 단계. )

initramfs 파일을 업데이트하십시오. Debian 및 관련 배포판에서는 이것이 update-initramfs -u -k all작동합니다. 다른 배포판에서는 다른 initramfs 생성기를 사용합니다. 최신 RedHat/Fedora 및 관련 제품에서는 dracut -f이것이 작동합니다. Arch에서는 명령이 필요할 수 있지만 mkinitcpio어떤 옵션이 필요한지 잘 모르겠습니다.

rescue.service모든 호출에서 SYSTEMD_SULOGIN_FORCE=1 환경 변수가 유효한지 확인하려면 initramfs를 업데이트하세요. 가능한 모든 경우에 이것이 반드시 필요한 것은 아니지만 후회하는 것보다 안전을 유지하는 것이 좋습니다.

관련 정보