zsh compinit: небезопасные каталоги. Compaudit показывает каталог / tmp

Я запускаю zsh на Raspberry Pi 2 (Raspbian Jessie). zsh compinit жалуется на то, что каталог /tmp небезопасен. Итак, я проверил права доступа к каталогу:

$ compaudit
There are insecure directories:
/tmp
$ ls -ld /tmp
drwxrwxrwt 13 root root 16384 Apr 10 11:17 /tmp

Судя по всему, в каталоге / tmp любой может делать что угодно. Что имеет смысл, учитывая его цель. Поэтому я попробовал предложения по этому вопросу о переполнении стека. Я также пробовал похожие предложения на других сайтах. В частности, предлагается отключить групповые разрешения на запись в этом каталоге. Из-за того, как разрешения выглядели в соответствии с ls -ld, мне также пришлось отключить «все» разрешения на запись. Так:

$ sudo su
% chmod g-w /tmp
% chmod a-w /tmp
% exit
$ compaudit
# nothing shows up, zsh is happy

Это заткнись. Однако другие программы начали ломаться. Например, gnome-terminal вылетал всякий раз, когда я набирал букву «l». Из-за этого мне пришлось снова включить разрешения на запись и просто запустить compinit -u в моем .zshrc.

Что я хочу знать: есть ли лучший способ исправить это? Я не уверен, что позволить compinit использовать небезопасный каталог - хорошая идея. Мое репозиторий dotfiles размещен здесь, а файл, в котором я сейчас запускаю compinit -u, - это здесь.


person jo12bar    schedule 10.04.2016    source источник
comment
Почему / tmp даже в вашем $fpath? Он действительно содержит файлы завершения?   -  person jackrabbit    schedule 10.04.2016
comment
Это исправлено для меня. Используйте эту ссылку   -  person arglee    schedule 24.01.2017


Ответы (1)


Во-первых, исходные разрешения для /tmp были правильными. Убедитесь, что вы восстановили их правильно: ls -ld /tmp должен начинаться с drwxrwxrwt. Вы можете использовать sudo chmod 1777 /tmp для установки правильных разрешений. /tmp должен быть доступен для записи всем, и любые другие разрешения с большой вероятностью могут нарушить работу.

compaudit жалуется на каталоги в fpath, поэтому один из каталогов в вашем fpath имеет форму /tmp/… (не обязательно сам /tmp). Проверьте, как устанавливается fpath. Обычно каталоги в fpath должны быть только подкаталогами каталога установки zsh и помещениями в ваш домашний каталог. Подкаталог /tmp не попал бы туда без чего-то необычного с вашей стороны.

Если вы не можете узнать, где к fpath добавлен случайный каталог, запустите zsh -x 2>zsh-x.log и найдите fpath в файле трассировки zsh-x.log.

безопасно использовать каталог в /tmp, но только если вы создали его безопасно. Разрешения на /tmp позволяют кому угодно создавать файлы, но пользователи могут удалять или переименовывать только свои собственные файлы (это то, что t в конце разрешений означает). Поэтому, если каталог создан безопасно (например, с mktemp -d), его можно безопасно использовать в fpath. compaudit недостаточно сложен, чтобы распознать этот случай, и в любом случае у него не будет достаточно информации, поскольку безопасность каталога зависит от того, как он был создан.

person Gilles 'SO- stop being evil'    schedule 11.04.2016
comment
Спасибо! zsh -x 2>zsh-x.log сказал мне, что я загружаю неправильные файлы для моего fpath. Очевидно, я перебирал переменную $ZSH oh-my-zsh вместо моей переменной $DOTFILES_ZSH (как и везде). Никогда бы не поймал. - person jo12bar; 21.04.2016