Claramente mi archivo existe en /usr/bin
$ ls /usr/bin/ngrok
/usr/bin/ngrok
Sin embargo, cuando intento chown
hacerlo, recibo un error
$ sudo chown my_user:users /usr/bin/ngrok
chown: cannot dereference '/usr/bin/ngrok': No such file or directory
¡Otros intentos de ejecutarlo también fallan!
$ ngrok
bash: ngrok: command not found
$ sudo /usr/bin/ngrok
sudo: /usr/bin/ngrok: command not found
¿Que está sucediendo aquí?
/usr/bin/ngrok
para ser una simetría completa del siguiente caso consudo
.Respuestas:
/usr/bin/ngrok
será un enlace simbólico que no apunta a ninguna parte (o más bien a un archivo no existente). Consulte conls -l
.fuente
readlink -f /usr/bin/ngrok
para encontrar dónde debe apuntar el enlace.namei -l /usr/bin/ngrok
Dado el
chown
error, la posibilidad más probable es que sea un enlace simbólico, como respondió Sven . Sin embargo, solo como referencia en caso de que alguien termine aquí para casos en los que el archivo existe y no es un enlace, pero da un error de comando no encontrado / archivo no encontrado, una posibilidad más es que el ejecutable esté vinculado dinámicamente y por alguna razón no puede cargar bibliotecas:ldd
en el binario para verlos)Además, para un script, si el intérprete en el shebang no se pudo ejecutar por razones similares, obtendría el mismo error.
fuente
También tiene la opción de cambiar la propiedad del enlace simbólico con
chown -h my_user:users /usr/bin/ngrok
si no desea (o tiene permiso) para cambiar la propiedad del archivo de destino.
fuente
chown(1)
página del manual de Linux . Las posibles razones por las que Linux hace esto se discuten en unix.stackexchange.com/questions/33180/…