Entspricht chmod zum Ändern von Dateiberechtigungen in Windows

59

Gibt es ein Windows-Äquivalent zu Linux chmod, um die Berechtigungen einer Datei zu ändern?

nhinkle
quelle

Antworten:

25

Greg erwähnt attrib - aber attrib nicht überall in der Nähe chmod- attribSet Read-only kann / verstecktes Attribut einer einzigen Datei - es bietet keine feinkörnig Kontrollen wie der icaclsFall ist.

icaclsSetzt / setzt die Zugriffssteuerungslisten zurück, sodass Sie Rechte für einzelne SIDs und Gruppen gewähren / verweigern können. Es ist jedoch ziemlich kompliziert.

Hier ist ein Beispiel, das ich in meinem Github-Inhalt gespeichert habe . Es setzt die Besitz- und Zugriffssteuerungsliste für alle Dateien in einem Ordner zurück und ist besonders nützlich, um die ärgerlichen Probleme zu beheben, die beim Verschieben von Dateien aus einer früheren Installation auftreten.

icacls * /reset /t /c /q 

Zurücksetzen ersetzt die vorhandene durch die Standardliste.
/tWirkt rekursiv auf alle Dateien, Ordner und Unterordner. Es werden
/qkeine Erfolgsmeldungen angezeigt. Die
/cverbleibenden Dateien bleiben bestehen, auch wenn ein Fehler auftritt.

Sie können auch die vorhandenen ACLs sichern und auf alle anwenden. Schauen Sie sich ss64 an, das die verschiedenen Optionen und Schalter sehr gut erklärt.

Sathyajith Bhat
quelle
Das Problem ist, ich kann das nicht, für jede Datei gibt es die Meldung: "Zugriff verweigert". Gibt es keinen Weg daran vorbei? Auf einem Schulsystem, das dies blockiert, aber nicht cmd?
theonlygusti
Sie benötigen Administratorrechte. Dem "Normalen", cmddas Sie durch Drücken von [Win] + [R] erhalten, fehlen diese. Für solche speziellen Bedürfnisse habe ich eine "Admin-Shell" -Verknüpfung mit "Als Administrator ausführen" (oder ähnlich; ich bin auf einem deutschen Windows-System) aktiviert (und mit einer dunkelroten Hintergrundfarbe).
Tobias
Ich stehe tatsächlich vor dem Problem mit dem Fehler "Berechtigung verweigert". Warum zum Teufel kann ich etwas tun, wenn ich ein Administrator und eine Konsole bin, die ich als Administrator ausführe? Was ist das?
Čamo,
13

Entweder cacls , xcacls oder meine persönlichen Lieblings- icacls werden wahrscheinlich das tun, was Sie brauchen.

Bryan
quelle
1
Ich glaube, icaclsist nur unter Vista / 7 verfügbar.
Hallo71
9

Es kann (leider) kein genaues Äquivalent geben, da Linux und DOS / Windows Attribute für unterschiedliche Zwecke verwenden, und (wie Chathuranga zuvor sagte) das Sicherheitsmodell anders ist:

  • In Windows-Dateisystemen gibt es Attribute "hidden" ( H) und "system" ( S), die unter Linux keine Entsprechung haben. Dort werden Dateien ausgeblendet, indem dem Namen ein Punkt ( .) vorangestellt wird .
  • Es gibt auch keine Entsprechung zum Windows- AAttribut "archive" ( ).
  • Es gibt keine Entsprechung zu den xLinux-Attributen "executable" ( ) in den DOS / Windows-Dateiattributen.
  • Es gibt ein Äquivalent zum Windows- DAttribut "directory" ( ) (das jedoch nicht geändert werden kann).
  • In Linux-Dateisystemen gehört jeder Eintrag genau einem Benutzer und genau einer Gruppe, und das Lesen / Schreiben / Ausführen kann für jeden von ihnen und für andere zugelassen werden. ACLs (wie sie von Windows verwendet werden) sind noch flexibler, aber auch komplizierter, und die Befehlszeilensyntax ist eine PITA (meiner bescheidenen Meinung nach natürlich).

Das DOS-Dateiattribut R(schreibgeschützt) kann als äquivalent angesehen werden: Dieses Attribut entspricht in etwa dem wAttribut für alle fehlenden; Die Berechtigung zum Ändern dieses Attributs unterliegt jedoch ACLs.

Es mag cool sein, ein chmod/ chown-Äquivalent unter Windows zu haben, vielleicht in einer Skriptsprache geschrieben, die wiederum attribund cacls(oder Nachfolger) aufruft , aber ich habe keines.

Tobias
quelle
Guter erster Beitrag!
Slm
Sie verwechseln Dateiattribute und Berechtigungen. Linux hat Dateiattribute, die über chattr geändert werden können . Linux verfügt über eine differenzierte Zugriffssteuerung für Attribute (z. B. kann das Attribut [i] mmutable nur von root oder einem CAP_LINUX_IMMUTABLEProzess festgelegt werden), wohingegen der Zugriff auf das Festlegen von Attributen in Windows alles oder nichts ist. In Implementierungen von Windows ist es ein häufiger Fehlerchmod , diesen Befehl zum Festlegen des schreibgeschützten Dateiattributs zu verwenden. Leider sind Systeme nur so gut informiert wie die Programmierer, die sie entwickeln.
Eryk Sun
@eryksun: Interessant - mir war dieser chattrBefehl nicht bekannt . Aber du hast mich nicht damit gemeint, "Dateiattribute und Berechtigungen zu verwechseln", oder? AFAICS, jedes Wort, das ich über DOS- Attribute geschrieben habe, ist immer noch richtig.
Tobias
Eine Datei besteht aus vielen (erweiterten) Attributen. In Unix werden die wichtigsten Attribute im Inode gespeichert, einschließlich des Dateimodus (Berechtigungen). Andere erweiterte Attribute (z. B. ACLs) können extern gespeichert werden. Windows hat keine Entsprechung zum Unix-Attribut "mode". Es gibt auch keinen gemeinsamen Inode-Datensatz für Dateisysteme. Ein NTFS-MFT-Datensatz ist ähnlich. Die Standard-Windows-Dateiattribute sind vom POV aus ein einzelnes Attribut des Dateidatensatzes. Diese entsprechen den über festgelegten Linux-Dateiattributen chattr, außer dass Windows ein Verzeichnisattribut hat, da es keinen Inode gibt.
Eryk Sun
In der Frage wird nach einem "[e] Äquivalent von chmod zum Ändern von Dateiberechtigungen in Windows" gefragt. chmodIn Windows gibt es keine direkte Entsprechung, da nichts mit dem Attribut "mode" der Datei vergleichbar ist. Der Standardsatz von Windows-Dateiattributen hat damit nichts zu tun. Das schreibgeschützte Attribut ist keine Dateiberechtigung. Grundsätzlich heißt es, dass die Datei in Stein gemeißelt ist, sodass alle Versuche, sie zu ändern, fehlschlagen müssen. Das Linux-Dateiattribut "unveränderlich" ist ähnlich. Windows verwendet nur ACLs für Berechtigungen, daher sind icacls.exe und dergleichen die einzigen ähnlichen Befehle zum Thema Berechtigungen.
Eryk Sun
6
icacls "C:\folder" /grant:r "Domain\Users":(OI)(CI)M /T /C

Funktioniert wie ein Zauber, um Berechtigungen für einen Ordner für Domänenbenutzer zu ändern. Zusätzliche Informationen zu caclsund icacls.

MDT Guy
quelle
Schöner erster Beitrag! Noch nie von icacls gehört.
Slm
5

Der attribBefehl entspricht am ehesten den grundlegenden Dingen (schreibgeschützt, Archivierungsflags). Dann gibt es den ACL-Befehl (Access Control List) cacls. Last but not least existieren die Unix-ähnlichen Flags, da Windows tatsächlich Posix-kompatibel ist. Wenn Sie das Cygwin-Toolset installieren, erhalten Sie eine chmod. (Da Sie nach einer Entsprechung für einen Unix-Befehl suchen, ist das Herunterladen und Installieren von Cgygwin möglicherweise etwas Interessantes für Sie.)

user27570
quelle
2

In Windows gibt es nichts, was als chmod bezeichnet wird, da sich das Sicherheitsmodell von Windows von Linux unterscheidet. Mit dem attribBefehl können Sie die Eigenschaften der Objekte ändern. (Aber sie sind mehr auf globale Eigenschaften ausgerichtet.)

Chathuranga Chandrasekara
quelle
2

Für mich besteht die Problemumgehung darin, Cygwin zu installieren und den Ordner bin dem Systempfad hinzuzufügen. Wenn Sie dann "chmod" in der Befehlszeile ausführen, funktioniert es. Obwohl ich seine Richtigkeit nicht überprüft habe.

WHOIF
quelle
1
Hinweis: einfach und detailliert
Bob