diff options
Diffstat (limited to '.zsh/omz/compfix.zsh')
| -rw-r--r-- | .zsh/omz/compfix.zsh | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/.zsh/omz/compfix.zsh b/.zsh/omz/compfix.zsh new file mode 100644 index 0000000..290760e --- /dev/null +++ b/.zsh/omz/compfix.zsh @@ -0,0 +1,40 @@ +# Handle completions insecurities (i.e., completion-dependent directories with +# insecure ownership or permissions) by: +# +# * Human-readably notifying the user of these insecurities. +function handle_completion_insecurities() { + # List of the absolute paths of all unique insecure directories, split on + # newline from compaudit()'s output resembling: + # + # There are insecure directories: + # /usr/share/zsh/site-functions + # /usr/share/zsh/5.0.6/functions + # /usr/share/zsh + # /usr/share/zsh/5.0.6 + # + # Since the ignorable first line is printed to stderr and thus not captured, + # stderr is squelched to prevent this output from leaking to the user. + local -aU insecure_dirs + insecure_dirs=( ${(f@):-"$(compaudit 2>/dev/null)"} ) + + # If no such directories exist, get us out of here. + [[ -z "${insecure_dirs}" ]] && return + + # List ownership and permissions of all insecure directories. + print "[oh-my-zsh] Insecure completion-dependent directories detected:" + ls -ld "${(@)insecure_dirs}" + + cat <<EOD +[omz] For safety, we will not load completions from these directories until +[omz] you fix their permissions and ownership and restart zsh. +[omz] See the above list for directories with group or other writability. +[omz] To fix your permissions you can do so by disabling +[omz] the write permission of "group" and "others" and making sure that the +[omz] owner of these directories is either root or your current user. +[omz] The following command may help: +[omz] compaudit | xargs chmod g-w,o-w +[omz] If the above didn't help or you want to skip the verification of +[omz] insecure directories you can set the variable ZSH_DISABLE_COMPFIX to +[omz] "true" before oh-my-zsh is sourced in your zshrc file. +EOD +} |
