Dateiberechtigung kann nicht geändert werden

Dateiberechtigung kann nicht geändert werden

Wenn ich einige Shelldateien auf einem USB-Speichergerät erstelle oder kopiere, kann ich sie nicht ausführbar machen.

Wenn ich test.sh erstelle, ist die Standard-Dateiberechtigung 644, aber wenn ich ausführe

chmod 777 test.sh

keine Fehlerberichte und echo $?gibt auch "0" zurück. ls -lZeigt aber immer noch die Berechtigung als an 644und ich kann sie nicht als ausführen./test.sh

Antwort1

Ja, das kann passieren, wenn Ihr Gerät mit einem Dateisystem formatiert ist, das diese Art von Berechtigungseinstellung nicht unterstützt, wie z. B. VFAT. In diesen Fällen wird die Umask spontan aus einer Einstellung in der fstab (oder dem Hotplugging-Äquivalent) erstellt.

Weitere Einzelheiten finden Sie höchstwahrscheinlich unter man mount. Für VFAT finden wir beispielsweise:

Mount-Optionen für FAT

uid=Wert und gid=Wert

Legt den Besitzer und die Gruppe aller Dateien fest. (Standard: die UID und GID des aktuellen Prozesses.)

umask=Wert

Setzt die Umask (die Bitmaske der nicht vorhandenen Berechtigungen). Der Standardwert ist die Umask des aktuellen Prozesses. Der Wert wird in Oktal angegeben.

usw.

Antwort2

Es sieht so aus, als ob Ihr Dateisystem mit der noexecOption gemountet ist, die die Ausführung von Programmen auf diesem Dateisystem verbietet, indem sie so tut, als wären alle Ausführungsbits in den Berechtigungen nicht gesetzt. Wenn Sie die userMount-Option verwenden (oder wenn eine Benutzeroberfläche sie im Hintergrund verwendet), noexecist aktiviert, sofern Sie sie nicht explizit mit deaktivieren exec.

Die meisten USB-Sticks verwenden das von MSDOS abgeleitete VFAT-Dateisystem, das keine Berechtigungen kennt. Sie können Berechtigungsbits nur beim Mounten des Dateisystems angeben, und diese Berechtigungen gelten für alle Dateien in diesem Dateisystem.

Wenn Sie keine Berechtigung zum Ausführen eines Skripts haben, rufen Sie den Interpreter explizit auf:

sh /media/stick/test.sh

Rufen Sie für eine dynamisch verknüpfte Binärdatei den dynamischen Linker auf.

/lib/ld-linux.so.2 /media/stick/myprog

verwandte Informationen