blob: 290760ef0224ad694357cc68b9a8a79f85981e7a (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
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
}
|