zsh compinit: directorios inseguros [cerrado]
Frecuentes
Visto 265,229 equipos
687
¿Qué significa y cómo puedo solucionarlo?
zsh compinit: insecure directories, run compaudit for list.
Ignore insecure directories and continue [y] or abort compinit [n]?
Corriendo el compaudit
devuelve lo siguiente:
There are insecure directories:
/usr/local/share/zsh/site-functions
28 Respuestas
886
Esto me lo arregló:
$ sudo chmod -R 755 /usr/local/share/zsh/site-functions
Créditos: una publicación en la lista de correo zsh
EDIT: Como lo señaló @biocyberman en los comentarios. Es posible que deba actualizar el propietario de site-functions
también:
$ sudo chown -R root:root /usr/local/share/zsh/site-functions
En mi máquina (OSX 10.9), no necesito hacer esto sino YMMV.
EDIT2: En OSX 10.11, solo esto funcionó:
$ sudo chmod -R 755 /usr/local/share/zsh
$ sudo chown -R root:staff /usr/local/share/zsh
También usuario: personal es el permiso predeterminado correcto en OSX.
Respondido 14 Oct 20, 11:10
@kirill_igum por "sin root" quisiste decir "sin root" de la máquina"? Si es así, debe copiar los archivos a una carpeta a la que tenga acceso, arreglar su .zshenv
y .zshrc
para usar la nueva carpeta y hacer lo mismo chmod
en la nueva carpeta como he publicado con la carpeta. - chakra
Me di cuenta de que después de configurar el propietario como root, era necesario revocar el acceso de escritura tanto para el grupo como para el otro. modifiqué el chmod
orden a sudo chmod -R go-w zsh
. - gdvd
Nota: tenía enlaces simbólicos en /usr/local/share/zsh/site-functions
a /usr/local/Cellar
y tuve que chown -R root:staff /usr/local/Cellar
también antes de que esto funcionara. - mVChr
No aclaro si debe ser root:staff
or user:staff
para macOS. Confuso. - franklin yu
Esta respuesta no funcionó para mí. La siguiente respuesta con compaudit
trabajó para mi. - vinos
721
Eliminación de permisos de escritura en grupo con
compaudit | xargs chmod g-w
hará el truco.
Ver http://www.wezm.net/technical/2008/09/zsh-cygwin-and-insecure-directories/
Respondido el 31 de diciembre de 21 a las 16:12
Mucho mejor respuesta, cabe señalar que compaudit
se puede utilizar para diagnosticar problemas como estos, así como para solucionarlos. - Lobo
Tenga en cuenta que es posible que también tenga que cambiar el propietario de los archivos a root. Tuve que: compaudit | xargs chown root
- brad parques
Esta es definitivamente la mejor solución para mí. Instalé zsh y zsh-completions con Homebrew, por lo que obviamente no quería cambiarlo para que fuera propiedad de root. - katy lavallee
compaudit | xargs chmod g-w
Junto con ompaudit | xargs chown root
funcionó para mí también y pareció mantener feliz a HomeBrew. ¿Alguien puede explicar qué está pasando un poco más? - nixee
Esto es muy similar a la solución recomendada por Homebrew: docs.brew.sh/Shell-Completion. - Oliver José Ceniza
236
La mayoría de las respuestas vienen con una solución, pero no mencione por qué ocurre esta advertencia. Aquí hay un extracto de ZSH compintar:
Por razones de seguridad, compinit también verifica si el sistema de finalización usaría archivos que no son propiedad de root o del usuario actualo archivos en directorios que son de escritura mundial o grupal o que no son propiedad de root o del usuario actual. Si se encuentran dichos archivos o directorios, compinit le preguntará si realmente se debe usar el sistema de finalización. Para evitar estas pruebas y hacer que todos los archivos encontrados se usen sin preguntar, use la opción -u, y para hacer que compinit ignore silenciosamente todos los archivos y directorios inseguros, use la opción -i. Esta comprobación de seguridad se omite por completo cuando se da la opción -C.
Por lo tanto, la solución implica arreglar uno (o todos) de los siguientes:
establecer al usuario actual como propietario de todos los directorios/subdirectorios/archivos en causa:
compaudit | xargs chown -R "$(whoami)"
eliminando los permisos de escritura para el grupo/otros para los archivos en causa:
compaudit | xargs chmod go-w
Otro enfoque sería omitir estas comprobaciones utilizando
compinit -u
pero realmente no sugiero esto, ya que esconder los problemas debajo de una alfombra solo resuelve los problemas a corto plazo.
contestado el 13 de mayo de 19 a las 22:05
Gracias. Me sorprende que la gente escriba comandos al azar sin entender realmente el problema. - grito
¿Qué pasa con un sistema multiusuario? En tal escenario, chown -R "$(whoami)"
para archivos fuera del directorio de inicio como /usr/local/
no funcionaría. De acuerdo con los documentos, ¿no tendría más sentido hacer que los archivos sean propiedad de la raíz? - goetzc
Me gusta más esta respuesta. Me hizo pensar por qué me pasó esto a mí. Resulta que sucedió después de agregar otro usuario al grupo principal de mi usuario. Los directorios bajo $HOME/.antigen/bundles eran propiedad de mi usuario y mi grupo. Entonces, en mi caso, eliminar a ese usuario del grupo resolvió el problema. - Samuel
Esta es una de las tres respuestas principales entre docenas. Al igual que las otras pocas respuestas excelentes, explica lo que sucede y ofrece soluciones. - David J.
El cambio de propietario de archivo y el cambio de privilegio de archivo fallan, pero compinit -u
curar todo! - Neal.Marlin
187
Una vez que entender la causa, la solución es trivial y inequívoco.
Causar: los directorios generados por
compaudit
tienen escribir permiso de cualquiera Grupo or otros (de escritura mundial); o esos archivos son propiedad de otra persona que no sea raíz o a ti mismo.Ejemplo: En mi caso,
compaudit
me dio eso:
% compaudit
There are insecure directories:
/usr/local/share/zsh/site-functions
/usr/local/share/zsh
Y si enumeramos el permiso de esos archivos/directorios que tenemos (en este caso)
% ls -lh /usr/local/share
total 0
drwxr-xr-x 12 chbrandt admin 384B Aug 14 10:45 aclocal
drwxr-xr-x 8 chbrandt admin 256B Aug 14 10:45 doc
drwxr-xr-x 3 chbrandt admin 96B Jul 24 21:00 fish
lrwxr-xr-x 1 chbrandt admin 36B Aug 14 10:45 gettext -> ../Cellar/gettext/0.21/share/gettext
lrwxr-xr-x 1 chbrandt admin 41B Aug 14 10:45 gettext-0.21 -> ../Cellar/gettext/0.21/share/gettext-0.21
lrwxr-xr-x 1 chbrandt admin 37B Aug 14 10:45 gtk-doc -> ../Cellar/libidn2/2.3.0/share/gtk-doc
drwxr-xr-x 9 chbrandt admin 288B Aug 14 10:45 info
drwxr-xr-x 58 chbrandt admin 1.8K Aug 14 10:45 locale
lrwxr-xr-x 1 chbrandt admin 41B Jul 27 17:12 luajit-2.0.5 -> ../Cellar/luajit/2.0.5/share/luajit-2.0.5
drwxr-xr-x 5 chbrandt admin 160B Jul 27 17:12 man
lrwxr-xr-x 1 chbrandt admin 33B Aug 14 10:45 nvim -> ../Cellar/neovim/0.4.4/share/nvim
drwxrwxr-x 3 chbrandt admin 96B Jul 24 20:57 zsh
%
% ls -lh /usr/local/share/zsh
total 0
drwxrwxr-x 4 chbrandt admin 128B Jul 24 21:00 site-functions
%
% ls -lh /usr/local/share/zsh/site-functions
total 0
lrwxr-xr-x 1 chbrandt admin 39B Jul 24 21:00 _brew -> ../../../Homebrew/completions/zsh/_brew
lrwxr-xr-x 1 chbrandt admin 44B Jul 24 21:00 _brew_cask -> ../../../Homebrew/completions/zsh/_brew_cask
Ahora detectamos fácilmente el problema, ¿no? Date cuenta cómo zsh/
y zsh/site-functions
directorios difieren de los demás... Eso 'w
'permitiendo el admin
grupo para modificarlos no es apreciado por zsh.
- Solución: apaga eso grupo-escribible ¡permiso!
% chmod g-w /usr/local/share/zsh
% chmod g-w /usr/local/share/zsh/site-functions
¡Eso es! Eres bueno para ir. Abre una nueva terminal y deberías no ver el "zsh compinit: insecure directories
" mensaje más ;)
respondido 16 nov., 21:20
¿Qué causaría generalmente que estos permisos cambien para estos directorios? - Jaap Wijnen
@JaapWijnen No creo que lo fueran cambiado, esos directorios probablemente creado como eso. Ni siquiera lo considero un error (si piensas en todo el entorno y chbrandt
siendo un "su" y admin
siendo un grupo privilegiado etcétera etcétera...). En este caso en particular, ahora respondiendo a su pregunta, esos permisos "incorrectos" son/fueron probablemente el resultado de un pequeño error en el ámbito de zsh/homebrew... o una característica mal entendida;) - Brandt
Esta es la mejor respuesta, porque explica el problema y muestra un ejemplo real y concreto al aplicar la solución: Alessio
@Brandt Traté de aplicar los cambios sugeridos pero el error persiste, publiqué una pregunta separada apple.stackexchange.com/questions/431861/… - Koenig Lear
Excelente. Esto resolvió mi problema que estaba teniendo al intentar habilitar la finalización del comando aws cli en zsh. Si quieres una sola línea, aquí está compaudit | sed -n '2,$ p' | xargs -I{} chmod g-w {}
- GMaster
57
Esto funciona para mi Mac desde la actualización de High Sierra.
Eliminar el acceso de escritura del grupo:
sudo chmod g-w /usr/local/share/zsh/site-functions
sudo chmod g-w /usr/local/share/zsh
Es mejor mantener el cambio limitado a los directorios zsh.
Respondido el 05 de diciembre de 20 a las 09:12
Esta fue la única solución que funcionó para mí en Mac Catalina: user8467470
36
Este comando actualiza todos los archivos/carpetas con los permisos correctos:
compaudit | xargs chmod g-w
No necesitas usar sudo
para cambiar el dueño - a menos que el archivo pertenezca a la raíz
(Probado en macOS BigSur)
respondido 02 mar '21, 01:03
Esta debería ser la respuesta correcta. Al usar "sudo" debes tener cuidado. - Vaibhav Sidapara
31
Recibí las mismas advertencias cuando sudo -i
al iniciar un shell raíz, la solución de @chakrit no funcionó para mí.
Pero encontré -u
interruptor de compinit
funciona, por ejemplo, en su .zshrc/zshenv o donde llamó compinit
compinit -u
NB: No recomendado para el sistema de producción
Vea también http://zsh.sourceforge.net/Doc/Release/Completion-System.html#Initialization
Respondido 26 Oct 13, 02:10
esa fue la única solución que funcionó para mí. estaba tratando de usar zsh con compinit en el subsistema de Linux en Windows 10 - guaridas
31
Esta respuesta es principalmente una referencia para usar en el futuro, ya que la mayoría de las respuestas no brindan una solución completa. Aquí está:
Primer intento:
compinit
utilizan el compaudit
si arriba no funciona
Para cada ruta que se imprima, ejecute los siguientes comandos:
sudo chown $(whoami) PATH_HERE
sudo chmod -R 755 PATH_HERE
Ejemplo simple, digamos que una de las rutas que se imprime después de ejecutar compinit es "/usr/local/share/zsh". Después:
sudo chown $(whoami) /usr/local/share/zsh
sudo chmod -R 755 /usr/local/share/zsh
Respondido 23 Feb 21, 17:02
Solo corriendo sudo chown $(whoami) PATH_HERE
trabajó para mi. ¡Gracias! - R Sol
Esta respuesta fue la buena en mi caso. - Yohan W Dunon
Este fue el único que realmente funcionó para mí. Gracias - Mono del caos
23
Últimamente tuve la misma advertencia sobre Catalina. Una solución fácil es poner esto en la parte superior de su .zshrc
ZSH_DISABLE_COMPFIX=true
contestado el 11 de mayo de 20 a las 07:05
¡Esta es la única solución que me ayudó en macOS Catalina 10.15.5! Todas las otras cosas como compaudit | xargs chmod go-w
or compinit -u
no parece funcionar en esta versión de macOS - daniel l
La única solución que funcionó en macOS BigSur 11.2.1 (20D74). Muchas gracias. - Ahmet Ardal
La mejor solución hasta ahora. Dado que uso una cuenta separada en mi MacBook para varios clientes y uso personal, tengo varios usuarios que usan las carpetas zsh y no quiero cambiar de propietario todo el tiempo. Agregar esta variable de entorno eliminó al menos el mensaje molesto. - Joost den Boer
15
La respuesta aceptada no me funcionó en macOs Sierra (10.12.1). Tuve que hacerlo recursivo desde /usr/local
cd /usr/local
sudo chown -R <your-username>:<your-group-name> *
Nota: Puedes obtener tu nombre de usuario con whoami
y tu grupo con id -g
Respondido el 02 de diciembre de 16 a las 16:12
No tuve que hacerlo de esta manera en Sierra, aunque en un sistema multiusuario el usuario/grupo correcto debería ser root:staff - marshall eubanks
14
ejecutar este comando funcionó para mí en mi mac OS Catalina
:
compaudit | xargs chmod g-w,o-w
contestado el 12 de mayo de 20 a las 21:05
teniendo solo este compaudit | xargs chmod gw funcionó para mí. - Jawadh Salih Rifath
13
Mi maquina:
System Version: macOS 10.15.4 (19E287)
Kernel Version: Darwin 19.4.0
Así que esto es lo que hice
corrida
compaudit
y le dará una lista de directorios que cree que no son seguros.corrida
sudo chmod -R 755 target_directory
(ejemplo:sudo chmod -R 755 /usr/local/share/zsh
)
Ejemplo:
compaudit
devoluciones:
/ usr / local / share / zsh
así que corro
sudo chmod -R 755 /usr/local/share/zsh
leer más aquí aquí
contestado el 19 de mayo de 20 a las 15:05
Esto funcionó perfectamente para mí en Big Sur: diek
12
Solución MAC OS X:
$ sudo chmod -R 755 /usr/local/share/zsh
$ sudo chown -R root:staff /usr/local/share/zsh
También "usuario: personal = usuario raíz predeterminado en OSX.
Respondido el 05 de junio de 20 a las 23:06
11
Estuve teniendo este problema durante los últimos meses, probé algunas cosas pero no funcionó. Finalmente lo que me ayudó fue esto. Obtenga la lista de directorios inseguros y luego configure el chmod de todos ellos como se describe a continuación.
CLI# compaudit
There are insecure directories:
/usr/local/share/zsh
CLI# sudo chmod -R 755 /usr/local/share/zsh
Password:
Respondido 29 Abr '21, 09:04
no me ayudó - Koenig Lear
10
Lo arreglé haciendo
sudo chown -R root:staff /usr/local/share/zsh
en mi caso, otros directorios dentro de share/ también tienen asignado el grupo "staff"
Respondido el 22 de junio de 21 a las 05:06
9
Estas dos líneas se han fijado para mí.
sudo chown -R _user_:root /usr/local/share/zsh
sudo chown -R _user_:root /usr/local/share/zsh/*
Respondido el 16 de enero de 17 a las 11:01
¡Trabaja para mi! Uso una cuenta de red en mi PC - Ubutun 16.04 sudo chown -R $(whoami):root /usr/local/share/zsh
sudo chown -R $(whoami):root /usr/local/share/zsh/*
- hoangdv
... y si tiene enlaces simbólicos que apuntan a otro lugar, también debe eliminarlos: Sridhar Sarnobat
9
en Mojave, esto funcionó:
sudo chmod go-w /usr/local/share
[Actualización 2022]
Si usa las terminaciones de ZSH, debe usar chmod -R go-w "$(brew --prefix)/share"
Respondido el 14 de junio de 22 a las 16:06
Mejor aún: sudo chmod -R go-w /usr/local/share
- ecmanauta
/usr/local/share/zsh
es suficiente. - granvovan
Si usa terminaciones zsh: docs.brew.sh/Shell-Completion#configuring-completions-in-zsh dice a chmod -R go-w "$(brew --prefix)/share"
- dijoncocina
7
Esto fue lo único que funcionó para mí desde https://github.com/zsh-users/zsh-completions/issues/433#issuecomment-600582607. Gracias https://github.com/malaquiasdev!
$ cd /usr/local/share/
$ sudo chmod -R 755 zsh
$ sudo chown -R root:staff zsh
Respondido 03 Abr '20, 13:04
6
Siguiente trabajado en M1
ProductName: macOS
ProductVersion: 11.1
BuildVersion: 20C69
% compaudit
/opt/homebrew/share
Permiso de grupo cambiado de 775 a 755
% sudo chmod 755 /opt/homebrew/share
drwxr-xr-x 33 xenea admin 1056 Feb 2 01:28 share
Respondido 01 Feb 21, 20:02
también trabajó en MBP 1 que no es M2019 con OS 11.2 - david schumann
5
En macOS Sierra necesitas ejecutar:
sudo chown -R $(whoami):staff /usr/local
Respondido 26 Abr '17, 12:04
5
corrida
compaudit
y le dará una lista de directorios que cree que son insegurossudo chown -R username:root target_directory
sudo chmod -R 755 target_directory
Respondido el 15 de diciembre de 19 a las 06:12
5
Mi sugerencia sería ejecutar compaudit y luego corregir los permisos en los directorios encontrados por la auditoría. Asegúrese de que los directorios identificados no tengan permisos de escritura para grupos u otros.
respondido 16 mar '20, 21:03
4
No veo ninguna respuesta que haga referencia a la homebrew
información sobre este tema: https://docs.brew.sh/Shell-Completion#configuring-completions-in-zsh
Para que las finalizaciones de Homebrew estén disponibles en zsh, debe obtener las funciones del sitio zsh administradas por Homebrew en su FPATH antes de inicializar la instalación de finalización de zsh. Agregue lo siguiente a su archivo ~/.zshrc:
if type brew &>/dev/null; then
FPATH=$(brew --prefix)/share/zsh/site-functions:$FPATH
autoload -Uz compinit
compinit
fi
Esto debe hacerse antes de llamar a compinit.
Esto resolvió mi problema without
cambiando manualmente la propiedad o de otra manera.
respondido 19 mar '21, 16:03
4
Probé todas las soluciones publicadas, al final ninguna funcionó para mi caso particular. Sin embargo, quiero extender mi gratitud a los usuarios que me indicaron la dirección de la propiedad siendo el problema real con respecto a múltiples cuentas, no el modo. Estoy publicando esta respuesta para cualquier otra persona con una configuración similar (M1 + dos cuentas + /opt/homebrew/share).
He aquí mi arreglo:
Tengo un M1, ejecuto macOS Monterey 12.0.1 y uso Homebrew.
Tengo dos cuentas, una de administrador y otra de usuario normal (se requiere división para el trabajo). Solo tuve el problema de los directorios inseguros en el usuario normal, ambos usuarios usan la misma configuración casera, y los siguientes directorios y archivos se ven afectados por el problema:
/opt/homebrew/completions/zsh/_brew
/opt/homebrew/share/zsh
/opt/homebrew/share/zsh/site-functions
/opt/homebrew/share/zsh/site-functions/_brew
/opt/homebrew/share/zsh/site-functions/_brew_services
/opt/homebrew/share/zsh/site-functions/_cargo
/opt/homebrew/share/zsh/site-functions/_gh
/opt/homebrew/share/zsh/site-functions/_git
/opt/homebrew/share/zsh/site-functions/_j
/opt/homebrew/share/zsh/site-functions/_lf
/opt/homebrew/share/zsh/site-functions/_task
/opt/homebrew/share/zsh/site-functions/_tldr
/opt/homebrew/share/zsh/site-functions/_vifm
Cambiar el modo no hizo nada, al final lo que solucionó los problemas fue cambiar la propiedad de cada archivo problemático y el directorio a root:admin, así:
sudo chown root:admin /opt/homebrew/share/zsh/site-functions/*
Originalmente, antes de que se presentara el problema, mi usuario administrador era dueño de todo, por lo que la propiedad se veía así: usr:administración
Así es como se ve el directorio de funciones del sitio ahora, sin problemas:
lrwxr-xr-x 1 root admin 30 Jul 19 19:41 _brew ->../../../completions/zsh/_brew
lrwxr-xr-x 1 root admin 79 Aug 10 20:26 _brew_services -> ../../../Library/Taps/homebrew/homebrew-services/completions/zsh/_brew_services
lrwxr-xr-x 1 root admin 59 Nov 6 16:28 _cargo -> ../../../Cellar/rust/1.56.1/share/zsh/site-functions/_cargo
lrwxr-xr-x 1 root admin 53 Dec 2 23:37 _gh -> ../../../Cellar/gh/2.3.0/share/zsh/site-functions/_gh
lrwxr-xr-x 1 root admin 56 Nov 30 15:21 _git -> ../../../Cellar/git/2.34.1/share/zsh/site-functions/_git
lrwxr-xr-x 1 root admin 61 Oct 13 11:12 _j -> ../../../Cellar/autojump/22.5.3_3/share/zsh/site-functions/_j
lrwxr-xr-x 1 root admin 50 Oct 23 18:52 _lf -> ../../../Cellar/lf/26/share/zsh/site-functions/_lf
lrwxr-xr-x 1 root admin 57 Nov 6 16:28 _task -> ../../../Cellar/task/2.6.1/share/zsh/site-functions/_task
lrwxr-xr-x 1 root admin 57 Nov 18 01:45 _tldr -> ../../../Cellar/tldr/1.4.2/share/zsh/site-functions/_tldr
lrwxr-xr-x 1 root admin 56 Oct 13 11:11 _vifm -> ../../../Cellar/vifm/0.12/share/zsh/site-functions/_vifm
Respondido el 11 de diciembre de 21 a las 15:12
3
Esta mañana, algunos paquetes en mi sistema se actualizaron y me dejaron con este mensaje de error. Estoy usando Ubuntu 18.04.
Aparentemente, algo en la actualización cambió el nombre de usuario y el grupo a números, en lugar de root
, como tal:
# 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
Simplemente cambié el usuario y el grupo para este archivo de nuevo a root
y el problema se fue. Hice no necesita cambiar ningún permiso, y le advertiría que no lo haga a menos que se comprenda la causa subyacente del problema.
sudo chown root _code && sudo chgrp root _code
Después de cambiar 131
y 142
de nuevo a root
, este mensaje de error de zsh desapareció.
Respondido 15 Oct 19, 19:10
3
Tengo este problema después de ejecutar el google-cloud-sdk
install script, que agrega la finalización de comandos al shell a través de una entrada en .zshrc
.
Siguiendo Instrucciones de Homebrew para configurar finalizaciones en zsh fue útil.
Además, si recibe advertencias de "zsh compinit: directorios inseguros" al intentar cargar estas finalizaciones, es posible que deba ejecutar esto:
chmod -R go-w "$(brew --prefix)/share"
respondido 23 nov., 20:10
2
Ninguna de las soluciones enumeradas funcionó para mí. En cambio, terminé desinstalando y reinstalando Homebrew, lo que funcionó. Las instrucciones de desinstalación se pueden encontrar aquí: http://osxdaily.com/2018/08/12/how-uninstall-homebrew-mac/
respondido 07 nov., 19:16
2
Enviar una y
carácter al flujo de entrada del script usando compinit
, para responder automáticamente a la ¿Ignorar directorios y archivos inseguros y continuar [y] o abortar compinit [n]? pregunta
echo "y" > source <GOOGLECLOUDSDK>/completion.zsh.inc
La solución es útil cuando
- Usted no puede hacer cambios de propiedad/acceso a las carpetas
- cuando tú no puedo usar la opción -u para eliminar la advertencia (probablemente porque usted mismo no llama explícitamente a 'compinit', pero lo llama un script que llama)
Observación: No soluciona el problema y solo oculta la advertencia (a diferencia de otras respuestas aquí que implican eliminar el 'acceso de escritura grupal' o 'cambiar la propiedad a la raíz').
Respondido el 12 de diciembre de 20 a las 17:12
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas zsh zsh-completion or haz tu propia pregunta.
Si no tiene permiso para cambiar la propiedad de las carpetas requeridas como se indica en las respuestas, abra el
.zshrc
archivo y poner esta línea al principio del archivoZSH_DISABLE_COMPFIX=true
. - codeman48