티스토리 뷰

728x90
반응형

How to set compinit mode on zsh

KinD (Kubernetes in Docker)로 MacOS 상에 Multi-Nodes Kubernetes Cluster를 구성하면서 kubectl autocomplete를 설정했는데 아래와 같은 메시지가 터미널 실행 시에 계속 나타나는 문제가 발생했다.

zsh compinit: insecure directories, run compaudit for list.
Ignore insecure directories and continue [y] or abort compinit [n]?

정보를 찾아보니 대 부분 zsh와 관련된 소유권 문제를 많이 이야기하고 있었다. 즉, 외부의 패키지나 라이브러리 등을 설치할 떄 외부의 스크립트를 사용할 경우에 /usr/local/share 폴더의 소유권과 권한이 변경되는 문제로 발생한다는 것이다.

상황을 확인해 보기 위해서 아래의 명령을 수행한다.

$ compaudit

There are insecure directories:
/usr/local/share

또는

There are insecure directories:
/usr/local/share/zsh/.site-functions
/usr/local/share/zsh

위의 같은 결과를 확인할 수 있다.

결과를 바로 소유권 및 권한 처리를 하는 방법은 다음과 같다.

# 검증 및 변경 처리
$ compaudit | xargs chmod g-w    

# 재 검증
$ compaudit

There are insecure directories:

위의 방법이 아니라 개별적으로 처리하는 경우는 다음과 같다.

  • /usr/local/share/zsh/.site-functions 가 나온 경우

    $ cd /usr/local/share/zsh
    $ sudo chown -R root:root ./site_functions
  • /usr/local/share 가 나온 경우

    $ cd /usr/local/share/
    $ sudo chmod -R 755 zsh
    $ sudo chown -R root:staff zsh

원인과 해결 방식에 대한 것이 궁금한 경우는 zsh, Cygwin and Insecure Direcotries를 참고하고, 좀 더 상세한 내용은 zsh: 20 Completion System를 참고하면 된다.

참고 자료

728x90
반응형
댓글
댓글쓰기 폼