
머리말을 하자면, 저는 이 모든 것이 처음이고 아직 배우는 중이므로 용어와 위치를 찾는 데 있어서는 솔직하게 이야기해 주시기 바랍니다.
설정: Proxmox 가상 환경 7.2-3 + 컨테이너 + ubuntu-22.04-standard_22.04-1_amd64.tar.zst
문제: 내 Ubuntu 서버의 터미널/콘솔의 경우 어제 단지 모양을 변경하기 위해 fisher 및 fish shell을 설치했습니다. 컨테이너를 다시 시작하려고 시도했을 때 디렉토리에 배치한 물고기의 위치와 관련된 것으로 보이는 로그인 문제를 받았습니다. 완전히 확신할 수는 없지만.
컨테이너에 다시 로그인하는 방법을 모르므로 모든 것을 다시 설정하여 처음부터 시작하지 않아도 됩니다. 도움을 주시면 감사하겠습니다.
추가 배경 정보 및 이미지:
답변1
첫째, 좋은 소식은 회복할 수 있는 방법이 거의 확실하다는 것입니다. 나쁜 소식은 이 경우 어떻게 해야 할지 정확히 모르겠다는 것입니다. 아래에서 효과가 있을 것으로 생각되는 몇 가지 제안을 하겠지만 Proxmox를 실행하지 않으므로 직접 테스트할 수는 없습니다.
하지만 먼저 다음과 같은 제안을 드리고 싶습니다.
- 소프트웨어를 설치할 때 다음을 사용하십시오.공식 문서첫째, 위에서 언급한 것과 같은 "기술적" 사이트가 아닙니다.
위에 링크해주신 글은단지 명백히 잘못된 것이며 시스템 손상을 초래할 것입니다.. 올바른 프로세스는 Fish 팀에 의해 다음과 같이 문서화되어 있습니다.
- 우분투 설치 안내서(메인에서 연결됨물고기페이지).
- 에 대한 문서기본 쉘 설정
사과와 함께 약간의 호언장담 -- 귀하가 링크한 사이트와 같은 사이트는 "유료 콘텐츠 사이트"입니다. 그들은 "프리랜서"("심사를 받았음에도 불구하고") 작가의 기사에 대한 비용을 지불합니다. 불행하게도 콘텐츠의 품질은 크게 다를 수 있습니다. 제가 본 최악의 예를 들자면, 작년에 제가 자주 방문하는 기술 주제에 대한 하위 레딧에 새로운 방문자가 들어왔습니다. 그 사람은 다음과 같이 썼습니다(다른 말로 표현했지만 정확함).
저는 [주제]에 대한 지식도 없고 사용해 본 적도 없지만 [주제]로 [xyz]를 수행하는 방법에 대한 기사를 작성해 달라는 요청을 받았습니다. 누구든지 나에게 지침을 줄 수 있습니까?
참고로 난 모른다어느그들이 글을 쓰고 있던 사이트.
물론 모든 유료 콘텐츠 사이트의 글이 모두 그런 것은 아니지만 위에서 참고하신 글은~이다나쁜. 묻지도 따지지도 않고 시스템을 손상시키는 모든 문서는나쁜. 주요 문제는 다음과 같습니다.
해당 문서의 4단계("피쉬 쉘을 기본 쉘로 만들기")는 다음과 같습니다.
sudo chsh -s /usr/local/bin/fish
그것은 단지 여러 가지 실수를 하나로 묶은 것입니다!
첫째, 최악의 경우 - 우분투에서 Fish에 대한 잘못된 경로입니다. 즉, macOS에서 Fish가 설치될 위치라고 생각합니다. Ubuntu에서는 (일반적으로) 이지만
/usr/bin/fish
Fish 문서에서 지적했듯이 항상 위치를 확인해야 합니다.당신의체계.사용자 이름 없이 사용하면
sudo chsh
루트 사용자의 쉘이 변경됩니다. 이것은 나쁘고 회복을 훨씬 더 어렵게 만듭니다.를 사용하여 현재 사용자의 셸을 변경하려는 경우
sudo
구문은 다음과 같습니다.sudo chsh -s <path/to/shell> $USER
chsh
그러나 루트 사용자(일명sudo chsh
)가 "잘못된 쉘" 경로를 설정할 수 있도록 허용하므로 그것조차도 나쁜 생각입니다 . 경고는 표시되지만/etc/passwd
사용자가 지시한 잘못된 쉘 경로를 사용하도록 계속 변경됩니다 .sudo chsh -s /this/is/bad $USER grep $USER /etc/passwd
잘못된 경로가 설정된 것을 볼 수 있습니다.
참고 사항: 저는 이러한 실수를 쉽게 복구할 수 있는 가상 환경인 Linux용 Windows 하위 시스템을 사용하고 있기 때문에 손상에 대한 두려움 없이 시스템에서 이러한 기능을 시험해 볼 수 있습니다. Proxmox 컨테이너는 실제로 WSL이 "내부적으로" 사용하는 기술과 매우 유사해야 하므로 거기에도 마찬가지로 쉬운 복구 메커니즘이 있다고 가정합니다.
그만큼옳은Ubuntu에서 쉘을 Fish로 변경하는 명령은 간단합니다.
chsh -s /usr/bin/fish
을 사용하지 않는 한 sudo
변경됩니다.당신의사용자의 쉘, 그리고 그것은확인껍질이 좋은 것입니다.
복구 계획
Proxmox에서 Ubuntu를 컨테이너로 사용하고 있다고 언급하셨습니다. 좋은 것 같아요. VM을 사용하는 경우 유효한 셸을 사용하여 Proxmox에서 Ubuntu로 부팅해야 합니다. 그것은 여전히 가능할 것이다.
여기서도 나쁜 소식은 이 작업을 수행하는 방법을 잘 모르겠고 Proxmox가 실행되지 않는다는 것입니다.아래에Ubuntu의 경우, 이 질문에 답하려면 다른 사이트(예: Proxmox 포럼)가 필요할 수 있습니다. 일반적으로 다음을 수행해야 합니다.
Proxmox 명령줄에 액세스합니다.
Proxmox 문서에서 다음을 사용해야 한다고 가정합니다.
pct
컨테이너를 관리하는 도구입니다.유효한 셸을 사용하여 Ubuntu 컨테이너에 액세스합니다. 시도해 볼 수도 있습니다
pct exec <vmid> /usr/bin/bash
..
root
pct
일단 당신은가지다유효한 셸에서 Ubuntu 컨테이너에 루트로 액세스합니다.
chsh -s /usr/bin/bash
현재 사용자의 셸이 유효하지 않기 때문에 이것이 작동하지 않을 가능성이 있습니다. 그러나 나는 루트가 여전히 쉘을 재설정할 수 있다고 믿습니다(일반 사용자는 절대 그렇지 않습니다). 그러나 문제가 발생하면 다른 대안은 다음과 같습니다.
vipw
이렇게 하면 을(를) 직접 편집 하고 을 (를)
/etc/passwd
변경할 수 있습니다 ./usr/local/bin/fish
/usr/bin/bash
그러면 루트 사용자의 쉘이 다시 양호한 쉘로 재설정됩니다. 루트의 경우 쉘을 Bash로 남겨 두는 것이 좋습니다. Fish 문서에 설명된 대로 루트가 아닌 일반 사용자를 위해 쉘을 Fish로 변경하세요.