내 사용자 셸은 이지만 zsh
루트로 이동해야 하는 경우가 있는데 셸 사용자 정의(프롬프트, 별칭 등)가 제공되지 않는 경우가 있습니다. 그래서 이 모든 것을 추가하려면 전체 쉘을 zsh
.
그러나 놀랍게도 쉘을 로 변경한 후에는 사용자에게 좋아요가 생성 zsh
되지 않았습니다 . 온라인을 살펴본 후 함수에서 오류가 발생한다는 .zshrc
것을 알게 되었습니다 .zsh-newuser-install -f
hostname: # zsh-newuser-install -f
zsh-newuser-install: won't run as root. Read the manual.
그래서 그렇게 했지만, 나에게 새로운 것은 아무것도 알려주지 않았습니다.
~에서수동:
현재 구성된 대로 이 기능은 사용자에게 루트 권한이 있으면 즉시 종료됩니다. 이 동작은 재정의될 수 없습니다.
그것은 나에게 말하지 않는다왜, 하지만. " zsh
뿌리를 생성하는 것이 얼마나 어려운지 " 토끼굴을 내려가고 나니 .zshrc
그 어느 때보다 궁금합니다.
내 사용자를 복사할 수 있지만 .zshrc
왜 생성되지 않습니까?
답변1
Linux에 대한 저의 소박한 경험에서 알 수 있듯이 이와 같은 경고가 표시될 때마다 심각한 보안 취약점이 있을 가능성이 높으며 이를 찾아보아야 합니다. 여기서 "매뉴얼을 읽는다"는 것은 "매뉴얼을 참조하여 그것이 무엇을 하는지 확인하고 이 작업을 루트로 수행할 때 발생할 수 있는 결과와 실제로 그만한 가치가 있는지 이해하는 것"을 의미한다고 생각합니다.
그렇다면 문제의 ZSH 스크립트에 어떤 문제가 있습니까?
ZSH에는 완성 및 자동 로딩과 같은 강력한 기능이 많이 있습니다. 이것들은 모두스크립트 기반. 많은 스크립트에는 을 클릭 Tab하면
root
기본적으로 스크립트 완료를 위해 컴퓨터에 대한 전체 루트 액세스를 제공하는 타사 소프트웨어 패키지가 함께 제공됩니다 .나는 ZSH 개발자들이 식별되지 않은 다수의 제3자 코드에 대한 루트 액세스 권한을 부여하는 책임을 포기하고 싶어한다고 생각하며, 그것이 옳은 일이라고 생각합니다. 실제로 루트로 실행되는 항목은 가능한 한 적어야 합니다. 이것이
sudo
요즘 이 이데올로기가 기본 이념이 된 이유입니다. 를 실행하면sudo
실행 중인 작업은 루트로 실행되지만 인프라(터미널, 셸, 완성자, 형광펜)는 권한이 없는 사용자로 실행됩니다. 셸을 로 실행하는 경우root
사용자(및 의도적이든 의도하지 않든 사용하는 모든 도구)가 모든 것에 제한 없이 완전하게 액세스할 수 있다는 점을 인식하는 것이 중요합니다.거칠고 간소하며 평범한 쉘 프롬프트는 좋은 알림입니다.
이것이 내 마음에 가장 먼저 떠오르는 것입니다. 아직 고려하지 않은 다른 부작용이 있을 것이라고 99% 확신합니다.
답변2
다른 사람들이 지적했듯이/bin/sh에서 루트 쉘을 변경하는 것은 좋은 생각이 아닙니다. 여전히 UID는 0이지만 zsh를 쉘로 사용하는 또 다른 계정(예: toor)을 추가하는 것이 좋습니다. 이것의 장점은 루트의 쉘이 영향을 받지 않으므로 손상되지 않으며 다른 쉘의 오류로 인해 로그인을 업데이트할 수 없다는 것입니다. 또 다른 옵션은 루트의 작은 부분 이상을 루트로 작업해야 할 때입니다. 명령, 그냥 실행
일반 rc 파일을 사용하여 zsh를 루트로 시작하고 $HOME은 일반 홈 디렉토리를 가리킵니다.
이제 zsh 프레임워크(예: oh my zsh)를 사용하면 안전하게 비활성화할 수 있는 안전하지 않은 종속성 완료 디렉터리와 같은 경고가 표시될 수 있습니다.