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.
Ответ 2
compaudit | xargs chmod g-w
сделает трюк, см. http://www.wezm.net/technical/2008/09/zsh-cygwin-and-insecure-directories/
Ответ 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 исчезло.