Offensichtlich existiert meine Datei in /usr/bin
$ ls /usr/bin/ngrok
/usr/bin/ngrok
Wenn ich es jedoch versuche, chown
erhalte ich eine Fehlermeldung
$ sudo chown my_user:users /usr/bin/ngrok
chown: cannot dereference '/usr/bin/ngrok': No such file or directory
Weitere Versuche, es auszuführen, schlagen ebenfalls fehl!
$ ngrok
bash: ngrok: command not found
$ sudo /usr/bin/ngrok
sudo: /usr/bin/ngrok: command not found
Was passiert hier?
/usr/bin/ngrok
, um eine vollständige Symmetrie des folgenden Falls mit zu erhaltensudo
.Antworten:
/usr/bin/ngrok
wird ein Symlink sein, der nirgendwo hinweist (oder eher auf eine nicht existierende Datei). Überprüfen Sie mitls -l
.quelle
readlink -f /usr/bin/ngrok
um herauszufinden, wohin der Link verweisen soll.namei -l /usr/bin/ngrok
Angesichts des
chown
Fehlers ist die wahrscheinlichste Möglichkeit, dass es sich um einen Symlink handelt, wie von Sven beantwortet . Nur als Referenz für den Fall, dass jemand hier auftaucht und die Datei existiert und keine Verknüpfung darstellt, aber einen Befehl-nicht-gefunden / Datei-nicht-gefunden-Fehler ausgibt, besteht eine weitere Möglichkeit darin, dass die ausführbare Datei dynamisch verknüpft ist und Aus irgendeinem Grund können keine Bibliotheken geladen werden:ldd
auf der Binärdatei , um diese zu sehen)Wenn für ein Skript der Interpreter im shebang aus ähnlichen Gründen nicht ausgeführt werden konnte, wird derselbe Fehler ausgegeben.
quelle
Sie haben auch die Möglichkeit, den Eigentümer des Symlinks selbst zu ändern
chown -h my_user:users /usr/bin/ngrok
wenn Sie nicht möchten (oder nicht die Erlaubnis haben), den Besitz der Zieldatei zu ändern.
quelle
chown(1)
Manpage . Mögliche Gründe, warum Linux dies tut, werden unter unix.stackexchange.com/questions/33180/…