
Ich bin neu bei Cygwin, SSH und spiele mit Dateiberechtigungen herum und habe ein Problem. Auf dem Computer WORKER1 versuche ich, per SSH auf den Computer WORKER2 zuzugreifen und dann von dort aus eine .sh-Datei auf WORKER1 auszuführen. Soweit ich es aus der folgenden Ausgabe entnehmen kann, zeigt ls -l, dass die Berechtigung für alles vorhanden sein sollte (ich weiß, dass das keine guten Berechtigungen sind, aber ich bin fast verrückt geworden, als ich versucht habe, herauszufinden, warum ich diesen Berechtigungsfehler erhalten habe).
root@Worker1 ~
$ ssh WORKER2
Last login: Tue Jan 31 10:51:54 2012 from worker1
root@Worker2 ~
$ cd //WORKER1/Users/Public/pMatlab/MatlabMPI/Examples/MatMPI
root@Worker2 //WORKER1/Users/Public/pMatlab/MatlabMPI/Examples/MatMPI
$ sh Dos_Commands.WORKER2.1.sh
sh: Dos_Commands.WORKER2.1.sh: Permission denied
root@Worker2 //WORKER1/Users/Public/pMatlab/MatlabMPI/Examples/MatMPI
$ ls -l
total 28
-rwxrwxrwx+ 1 Administrators None 2 Jan 31 11:01 Dos_Commands.WORKER1.0
-rwxrwxrwx+ 1 Administrators None 127 Jan 31 11:01 Dos_Commands.WORKER2.1
-rwxrwxrwx+ 1 Administrators None 250 Jan 31 11:01 Dos_Commands.bat
-rwxrwxrwx+ 1 Administrators None 636 Jan 31 11:01 MPI_COMM_WORLD.mat
-rwxrwxrwx+ 1 Administrators None 97 Jan 31 11:01 MatMPIdefs1.m
-rwxrwxrwx+ 1 Administrators None 199 Jan 31 11:01 p0_p0_t10000_buffer.ma
-rwxrwxrwx+ 1 Administrators None 199 Jan 31 11:01 p0_p1_t10000_buffer.ma
-rwxrwxrwx+ 1 Administrators None 0 Jan 31 11:01 p0_p1_t10000_lock.mat
Auf beiden Computern läuft Windows 7 64 Bit, und ich verwende auf beiden die neueste Version von Cygwin und OpenSSH. Das auf WORKER2 laufende SSHD ist ebenfalls das von Cygwin. Bei der Installation von SSHD konnte ich es nur dann richtig zum Laufen bringen, wenn ich bei der Ausführung von ssh-host-config die Option „Nein“ für die Rechtetrennung und die Option „Ja“ für die Installation als Dienst gewählt habe. Ich verwende die Public-Key-RSA-Authentifizierung. Ich habe versucht, //WORKER1/Users/Public/pMatlab/ als Netzlaufwerk zu mounten und auf diese Weise darauf zuzugreifen, aber das hat auch nicht geholfen. Irgendwelche Ideen, was schief laufen könnte? Danke!
BEARBEITEN: Ich habe vergessen zu erwähnen, dass meine Netzwerkfreigabeeinstellungen in Windows so eingestellt sind, dass alles erlaubt ist, soweit ich es sehen kann. Außerdem scheinen mein öffentlicher Ordner und die Ordner darin alle auf schreibgeschützt eingestellt zu sein (im Rechtsklick->Eigenschaftenmenü), die darin enthaltenen Dateien jedoch nicht. Der Versuch, dies im Eigenschaftenmenü zu ändern, bewirkt nichts – wenn ich den schreibgeschützten Modus deaktiviere, wird er einfach wieder aktiviert, wenn ich das Eigenschaftenmenü erneut öffne. Ich habe versucht, dies zu ändern, indem ich attrib -r C:\Users\Public in cmd.exe ausgeführt habe, aber das hat auch nichts bewirkt.
Schließlich erhalte ich keinen „Berechtigungsverweigerungs“-Fehler, wenn ich die .sh-Datei lokal ausführe, wenn ich versuche, über die Windows-Benutzeroberfläche auf dem Computer WORKER2 darauf zuzugreifen, oder wenn ich per SSH von WORKER2 auf sich selbst zugreife und dann versuche, darauf zuzugreifen. Der Berechtigungsfehler tritt nur auf, wenn ich per SSH von WORKER1 auf WORKER2 zugreife und dann versuche, von dort auf die Datei auf WORKER1 zuzugreifen.
Letzte Bearbeitung: Problem gelöst. Es stellte sich heraus, dass der Ordner verschlüsselt war! Keine Ahnung, warum. Aus irgendeinem Grund kam es so aus der Zip-Datei.
Antwort1
Willkommen in der wundervollen neuen Unix-Welt des Jahres 1989!
Die netten Leute von TRUSIX haben – erst dieses Jahr – eine Erweiterung des ls
Befehls definiert, um visuell anzuzeigen, wenn die rwxrwxrwx
Berechtigungsinformationen nicht die ganze Geschichte sind. Diese Erweiterung ist ein +
Zeichen, das den Berechtigungsflags folgt. Wie Sie sehen, ls
enthält Ihre Ausgabe +
überall Zeichen. Das bedeutet, dass Ihre Dateien diese neumodischenZugriffskontrolllisteDinge, die die TRUSIX-Leute so begeistert sind. Daher ist Ihr Zugriff auf die Dateiennichtnicht unbedingt das, was Sie allein aus den neun Berechtigungsflags ableiten können.
Um diese Einschränkungen der Unix-Tools im alten Stil angesichts der neuen ACLs auszugleichen, haben die TRUSIX-Leute auch ein paar neue Befehle entwickelt, getacl
und setacl
. Ersteres wird zum Anzeigen dieser ACLs verwendet. Ich höre Gerüchte, dass die Leute vielleichtgetfacl
Undsetfacl
als Namen. Und es gibt ein Gerücht, dass die OS/2-Version 3 von Microsoft und IBM, die sich auf dem Reißbrett befindet, irgendwann Befehle mit Namen enthalten könnte cacls
und xcacls
die ACLs anzeigen, dienoch besserals getfacl
auf ihrem "New Technology"-Betriebssystem, weil sie sie nicht durch eine 3-Bit-Unix-Brille präsentieren, sondern wie sie wirklich sind in all ihrenStandard- und Sonderrechte drctpoxfew
beide-Konten-Und-Maschinenname Ruhm.
Diese Idee wird sich wie ein Lauffeuer verbreiten, in der Unix-Welt, der in den 1990er Jahren sicherlich jeder angehören wird. Es ist sehr wahrscheinlich, dass in 20 Jahren neun Bits an Berechtigungen altmodisch und passé erscheinen, ACLs die Norm sein werden undsogar die Langweiler, die sich immer noch neun Berechtigungsflags ansehen, werden davon wissen. ☺
Weiterführende Literatur
- Craig Rubin (18.08.1989). Gründe für die Auswahl von Zugriffskontrolllistenfunktionen für das Unix-System. NCSC-TG-020-A. DIANE-Verlag. ISBN 9780788105548.
- Microsoft Corporation (08.05.2008).Der Benutzer kann nicht auf eine Datei oder einen Ordner zugreifen, sollte aber über die Berechtigung verfügen. TechNet.