sudo make install: Berechtigung verweigert

sudo make install: Berechtigung verweigert

Ich habe eine äußerst nervige Frage zum Erstellen aus Quellen. Ich habe lange nach einer Antwort gesucht und konnte nirgends eine finden ... Ich habe schon früher Software aus Quellen kompiliert und das hat mich einfach verblüfft.

Ich versuche also, Python 2.7.2 aus den Quellen zu installieren. Ich kann es erfolgreich durchführen ./configureund es scheint auch makegut zu laufen. Aber wenn ich es tue sudo make install, erhalte ich verschiedene Fehler ...

Erstens sudo make installgibt es mir Folgendes:

make: stat: GNUmakefile: Permission denied
make: stat: makefile: Permission denied
make: stat: Makefile: Permission denied
make: stat: install: Permission denied
make: *** No rule to make target `install'. Stop.

Also habe ich es getan chmod +rx Makefile*. Ohne Erfolg.

Dann sudo ls .sagt

ls: cannot access .: Permission denied

Dann ls -d .heißt es, die Berechtigungen sinddrwxr-x---

Dann, als verzweifelte Maßnahme, chmod +rx .… Das gab mir:

make: stat: Modules/config.c.in: Permission denied
make: *** No rule to make target `Modules/config.c.in', needed by `Makefile'. Stop.

Also ein Fortschritt... Was passiert hier? Es sieht nach einer Art Berechtigungsproblem aus. Ich nahm an, dass sudo die Lösung wäre, aber hier ist offensichtlich etwas anderes im Gange... Ich habe es versucht, sudo -saber ich habe wieder diese Berechtigungsprobleme...

Ich verwende Ubuntu 10.04LTS.

Antwort1

Ich glaube, Sie stoßen tatsächlich auf eine NFS-Richtlinie namens „Root Squash“. Es ist nicht ungewöhnlich, dass Benutzer Root auf einem bestimmten Host benötigen, aber Sie möchten nicht, dass sie dieselben Berechtigungen auf den freigegebenen NFS-Volumes haben. Wenn Sie lokalen Root-Zugriff gewähren, kann ein Benutzer daher nicht ungehindert über alle gemounteten NFS-Volumes hinweggehen und auf die Dateien anderer Benutzer zugreifen/sie ändern – der NFS-Server bildet die UID von Root von 0 bis 65534 ( nobody) ab, weshalb Sie das Verzeichnis in Ihrem Beispiel nicht einmal auflisten können.

Es stehen Ihnen also mehrere Optionen zur Verfügung:

  1. Sie können versuchen, alle Dateien nobodyin Ihrem Build zugänglich zu machen, indem Sie ein chmod -R o+rw .Verzeichnis auf oberster Ebene erstellen und „Anderen“ Lese-/Schreibberechtigungen für Ihre Dateien erteilen (dies kann ausreichend sein, muss aber nicht – Sie benötigen beispielsweise möglicherweise zwei o+xVerzeichnisse, wenn diese durchsucht werden müssen).
  2. Wenn Sie Zugriff auf die Datei des NFS-Servers haben /etc/exports, können Sie Root-Squash deaktivieren (vielleicht keine gute Idee).
  3. Bauen Sie einfach ein lokales Verzeichnis wie /usr/local/src, /usr/src, /tmpusw. ein oder erstellen Sie einfach Ihr eigenes lokales Verzeichnis (Sie können es sogar Ihrem Benutzer zuordnen), wie /scratch/myuser. Dies ist wahrscheinlich die Option, die am wenigsten Kopfschmerzen bereitet.

Antwort2

Wenn Sie sshfs verwenden, mounten Sie mit -o allow_otherder Option

$ sudo sshfs -o allow_other hostfolder localfolder

vorher muss man sich user_allow_othereinarbeiten/etc/fuse.conf

Antwort3

Versuchen Sie, es mit chown auf Ihren Benutzer umzustellen. Verwenden Sie dazu im Verzeichnis "sudo chown user ./*" (ersetzen Sie user durch Ihren Benutzernamen), und der Besitzer aller Dateien im Verzeichnis wird auf Sie geändert.

verwandte Informationen