Insecure completion-dependent directories detected when try to source using python script

Afik Friedberg picture Afik Friedberg · Jul 25, 2019 · Viewed 8k times · Source

I write the script:

with open("./aa.zsh", "wr") as f:
    f.write("#!/bin/zsh\n")
    f.write("chmod -R 755 ~/.oh-my-zsh\n")
    f.write("source {}\n".format(path))

os.chmod("./aa.zsh", 0o777)
subprocess.call(['./aa.zsh'])

I also tried os.system('./aa.zsh') instead of the last line.

I get this error:

[oh-my-zsh] Insecure completion-dependent directories detected

[oh-my-zsh] For safety, we will not load completions from these directories until

[oh-my-zsh] you fix their permissions and ownership and restart zsh.

[oh-my-zsh] See the above list for directories with group or other writability.

[oh-my-zsh] To fix your permissions you can do so by disabling

[oh-my-zsh] the write permission of "group" and "others" and making sure that the

[oh-my-zsh] owner of these directories is either root or your current user.

[oh-my-zsh] The following command may help:

[oh-my-zsh] compaudit | xargs chmod g-w,o-w

[oh-my-zsh] If the above didn't help or you want to skip the verification of

[oh-my-zsh] insecure directories you can set the variable ZSH_DISABLE_COMPFIX to

[oh-my-zsh] "true" before oh-my-zsh is sourced in your zshrc file.

Answer

portatlas picture portatlas · Mar 14, 2020

Per the error message and this thread for ohmyzsh

you can run the following command compaudit | xargs chmod g-w,o-w

if that doesn't work setting ZSH_DISABLE_COMPFIX=true in your zshrc worked for me.