Zsh에서 구성 도구 비활성화

Zsh에서 구성 도구 비활성화

.zshrc사용자의 홈 디렉토리에 파일 없이 시작하면 zsh쉘 프롬프트에 직접 액세스 권한을 부여하는 대신 대화식 구성 유틸리티가 실행됩니다.

나는 이것을 zshDebian Wheezy 시스템의 기본 쉘로 설정했습니다. 따라서 zsh수동으로 변경하지 않으면 새로 생성된 모든 사용자는 로그인 셸을 갖게 됩니다. .zshrc에도 기본값이 있으므로 /etc/skel내 시스템의 모든 일반 사용자는 홈 디렉토리에 파일 복사본을 가지고 있습니다. 시스템 사용자에게는 해당되지 않습니다.

sudosh이제 시스템 사용자(예: 특정 네트워크 데몬의 사용자)를 전달하거나 변경하면 해당 사용자의 홈 디렉터리에서 사용할 수 없는 구성 도구가 실행됩니다 ..zshrc

각 데몬의 홈 디렉토리에 를 넣는 것은 옳지 않다고 느끼며 .zshrc많은 시스템에서 설정하고 유지 관리하는 것도 고통스러울 것입니다. 하지만 저는 여전히 bash이러한 사용자에게 덜 편한 버전 으로 다운그레이드하고 싶지 않습니다 .

사용자의 홈 디렉토리에 파일을 생성하지 않고도 구성 도구를 비활성화할 수 있는 방법이 있습니까 zsh? 또한 .zshrc단일 파일을 시스템 전체 기본값으로 설정하는 방법은 파일이 없는 모든 사용자에게 좋을 것입니다..zshrc

답변1

에서:http://www.zsh.org/mla/users/2007/msg00398.html

The shell then executes code in the file
scripts/newuser in the shared library area (by default
/usr/local/share/zsh/<VERSION>/scripts/newuser).  This feature can be
turned off simply by removing this script.  The module can be removed
entirely from the configured shell by editing the line starting
"name=zsh/newuser" in the config.modules file, which is generated in the
top level distribution directory during configuration: change the line to
include "link=no auto=no".

그리고,, & 옵션이 설정된 모든 쉘에서 얻습니다 /etc/zsh/zshrc. (대부분의 대화형 zsh 프로세스가 이 작업을 수행합니다)interactivercsglobalrc


또는 정의되지 않을 때까지 사용자가 함수를 사용할 수 없다는 명백한 부작용이 있는 zsh-newuser-install() { :; }함수를 추가하세요./etc/zsh/zshenv

UID 테스트를 추가하여 이를 최적화할 수 있습니다.

if (( EUID < 1000 )) && (( EUID != 0 )); then # or whatever the highest daemon uid on your system
  zsh-newuser-install() { :; }
fi

관련 정보