zsh-newuser-install을 루트로 실행하지 않는 이유는 무엇입니까?

zsh-newuser-install을 루트로 실행하지 않는 이유는 무엇입니까?

내 사용자 셸은 이지만 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)을 추가하는 것이 좋습니다. 이것의 장점은 루트의 쉘이 영향을 받지 않으므로 손상되지 않으며 다른 쉘의 오류로 인해 로그인을 업데이트할 수 없다는 것입니다. 또 다른 옵션은 루트의 작은 부분 이상을 루트로 작업해야 할 때입니다. 명령, 그냥 실행

sudo -Es2

일반 rc 파일을 사용하여 zsh를 루트로 시작하고 $HOME은 일반 홈 디렉토리를 가리킵니다.

이제 zsh 프레임워크(예: oh my zsh)를 사용하면 안전하게 비활성화할 수 있는 안전하지 않은 종속성 완료 디렉터리와 같은 경고가 표시될 수 있습니다.

관련 정보