Zsh compinit: небезопасные каталоги

Что это значит и как я могу это исправить?

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

Запуск compaudit возвращает следующее:

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

Ответ 1

Это исправлено для меня:

$ cd /usr/local/share/zsh
$ sudo chmod -R 755 ./site-functions

Кредит: сообщение в списке рассылки zsh


EDIT: Как указано @biocyberman в комментариях. Возможно, вам потребуется обновить владельца site-functions:

$ sudo chown -R root:root ./site-functions

На моей машине (OSX 10.9) мне не нужно это делать, кроме YMMV.

EDIT2: В OSX 10.11 только это сработало:

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

Также пользователь: персонал является правильным разрешением по умолчанию для OSX.

Ответ 3

Большинство ответов приходят с решением, но не упоминают, почему возникает это предупреждение. Вот выдержка из ZSH compinit:

В целях безопасности compinit также проверяет, будет ли система завершения использовать файлы , не принадлежащие пользователю root или текущему пользователю, или файлы в каталогах, которые world- или доступны для записи группой, или которые не принадлежат пользователем root или текущим пользователем. Если такие файлы или каталоги найдены, compinit спросит, действительно ли должна использоваться система завершения. Чтобы избежать этих тестов и заставить все найденные файлы использоваться без запроса, используйте опцию -u, а для того, чтобы compinit беззвучно игнорировал все небезопасные файлы и каталоги, используйте опцию -i. Эта проверка безопасности полностью пропускается, если задана опция -C.

Следовательно, решение подразумевает исправление одного (или всех) из следующего:

  • установка текущего пользователя в качестве владельца всех каталогов/подкаталогов/файлов по причине:

    compaudit | xargs chown -R "$(whoami)"
    
  • Снятие прав на запись для группы/других для файлов в деле:

    compaudit | xargs chmod go-w
    

Другой подход - пропустить эти проверки, используя

compinit -u

но на самом деле я этого не советую, так как скрытие проблем под ковриком решает проблемы в краткосрочной перспективе.

Ответ 4

Я получил те же предупреждения, когда я sudo -i начал корневую оболочку, решение @chakrit не работало для меня.

Но я обнаружил, что -u работает переключатель compinit, например. в вашем .zshrc/zshenv или там, где вы назвали compinit

compinit -u

NB: Не рекомендуется для производственной системы

См. также http://zsh.sourceforge.net/Doc/Release/Completion-System.html#Initialization

Ответ 5

Принятый ответ не работал у меня на macOs Sierra (10.12.1). Если бы это было рекурсивно из /usr/local

cd /usr/local
sudo chown -R <your-username>:<your-group-name> *

Примечание.. Вы можете получить свое имя пользователя whoami и свою группу с помощью id -g

Ответ 6

Эти две строки исправлены для меня.

sudo chown -R _user_:root /usr/local/share/zsh

sudo chown -R _user_:root /usr/local/share/zsh/*

Ответ 7

На macOS Sierra вам нужно запустить: sudo chown -R $(whoami):staff /usr/local

Ответ 8

в Мохаве это помогло: sudo chmod gw/usr/local/share

Ответ 9

Я использовал следующую команду для удаления ошибки.

sudo chmod -R 755 /usr/local/share/zsh/site-functions

Ответ 10

Я исправил это, делая

sudo chown root:staff -R /usr/local/share/zsh

в моем случае другие каталоги внутри share/также имеют группу "staff"

Ответ 11

Это работает для моего Mac после обновления до High Sierra.

Удалить глобальный доступ для записи:

sudo chmod g-w /usr/local/share/zsh/site-functions
sudo chmod g-w /usr/local/share/zsh

Ответ 12

Сегодня утром некоторые пакеты в моей системе обновились и оставили мне это сообщение об ошибке. Я использую Ubuntu 18.04.

По-видимому, что-то в обновлении изменило имя пользователя и группу на числа вместо root, как показано ниже:

# There are insecure files: /usr/share/zsh/vendor-completions/_code
# sudo ls -alh
-rw-r--r-- 1  131  142 2.6K 2019-10-10 16:28 _code

Я просто изменил пользователя и группу для этого файла обратно на root, и проблема исчезла. Мне не нужно было менять какие-либо разрешения, и я бы предостерегал против этого, если только первопричина проблемы не будет понята.

sudo chown root _code && sudo chgrp root _code

После переключения 131 и 142 обратно на root, это сообщение об ошибке от zsh исчезло.