De toute évidence, mon fichier existe dans /usr/bin
$ ls /usr/bin/ngrok
/usr/bin/ngrok
Cependant, lorsque j'essaie de chown
je reçois une erreur
$ Sudo chown my_user:users /usr/bin/ngrok
chown: cannot dereference '/usr/bin/ngrok': No such file or directory
D'autres tentatives pour l'exécuter échouent également!
$ ngrok
bash: ngrok: command not found
$ Sudo /usr/bin/ngrok
Sudo: /usr/bin/ngrok: command not found
Que se passe-t-il ici?
/usr/bin/ngrok
sera un lien symbolique qui ne pointe nulle part (ou plutôt vers un fichier inexistant). Vérifier avec ls -l
.
Étant donné l'erreur chown
, la possibilité la plus probable est qu'il s'agit d'un lien symbolique, comme répondu par Sven . Cependant, juste pour référence au cas où quelqu'un se retrouverait ici pour les cas où le fichier existe et n'est pas un lien, mais donne une erreur de commande introuvable/fichier introuvable, une autre possibilité est que l'exécutable soit lié dynamiquement et pour une raison quelconque, il n'est pas en mesure de charger les bibliothèques:
ldd
sur le binaire pour les voir)De plus, pour un script, si l'interpréteur du Shebang ne pouvait pas être exécuté pour des raisons similaires, vous obtiendriez la même erreur.
Vous avez également la possibilité de changer la propriété du lien symbolique lui-même avec
chown -h my_user:users /usr/bin/ngrok
si vous ne souhaitez pas (ou n'avez pas l'autorisation) de modifier la propriété du fichier cible.