Ich führe Ubuntu auf Computer 1 und Computer 2 aus. Ich habe ein C ++ - Programm auf Computer 1 kompiliert und kann es vom Terminal aus ausführen ./program_name
. Es läuft gut.
Wenn ich dies jedoch auf Computer 2 versuche, heißt es: bash: ./program_name: permission denied
Was ist los und was kann ich dagegen tun?
progam_name
?bash program_name
.sh
Datei geschrieben. Es wurde abgelehnt, mit dieser Fehlermeldung ausgeführt zu werden. Ich würde sagen, dass dies definitiv ein Thema für StackOverflow ist. Ich habe für die Wiedereröffnung nominiert.Antworten:
chmod u+x program_name
. Dann führen Sie es aus.Wenn dies nicht funktioniert, kopieren Sie das Programm vom USB-Gerät auf ein natives Volume auf dem System. Dann
chmod u+x program_name
auf der lokalen Kopie und führen Sie das aus.Unix- und Unix-ähnliche Systeme führen ein Programm im Allgemeinen nur aus, wenn es mit der Berechtigung zur Ausführung gekennzeichnet ist. Die Art und Weise, wie Sie die Datei von einem System auf ein anderes kopiert (oder ein externes Volume bereitgestellt) haben, hat möglicherweise die Ausführungsberechtigung deaktiviert (als Sicherheitsfunktion). Der Befehl
chmod u+x name
fügt dem Benutzer, dem die Datei gehört, die Berechtigung zum Ausführen hinzu.Dieser Befehl ändert nur die mit der Datei verknüpften Berechtigungen. Die Sicherheitskontrollen für das gesamte Volume werden nicht geändert. Wenn Sicherheitskontrollen auf dem Volume die Ausführung beeinträchtigen (z. B.
noexec
kann für ein Volume in der Unix-fstab
Datei eine Option angegeben werden, die besagt, dass keine Ausführungsberechtigung für Dateien auf dem Volume zulässig ist), können Sie das Volume erneut bereitstellen mit Optionen, um die Ausführung zu ermöglichen. Das Kopieren der Datei auf ein lokales Volume kann jedoch eine schnellere und einfachere Lösung sein.quelle
/tmp
. Es stellt sich heraus, dass meine tmpfs das/tmp
gleiche Problem haben und ich die ausführbare Datei auf ein echtes natives Volume kopieren muss, dh meinen Home-Ordner ~ in einer ext4-Partition.chmod
macht eine dauerhafte Änderung. Wenn sich die Berechtigungen ändern, nachdem Siechmod
sie aktiviert haben, werden sie durch etwas anderes geändert . (Dies kann etwas anderes beinhalten, das die Datei löscht und neu erstellt, oder das Volume, auf dem die Datei bereitgestellt und erneut bereitgestellt wird. Wenn das Volume erneut bereitgestellt wird, gibt es Möglichkeiten, Standardberechtigungen für Dateien auf externen Volumes anzugeben, dies liegt jedoch außerhalb des Bereichs Ich kann jetzt antworten.)Versuche dies:
quelle
sudo
ist im Allgemeinen nicht erforderlich, es sei denn, das Programm befindet sich in einem Verzeichnis, in dem Sie keine Schreibberechtigung haben (in welchem Fall, wie haben Sie es dort überhaupt installiert?)Klingt so, als hätten Sie das Ausführungsflag für die Dateiberechtigungen nicht gesetzt. Versuchen Sie Folgendes:
quelle