Entspricht chmod zum Ändern von Dateiberechtigungen in Windows

190870
nhinkle

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

42

8 Antworten auf die Frage

18
Sathya

Greg erwähnt attrib - ist aber attrib nicht annähernd in der Nähe chmod- attribkann schreibgeschützte / ausgeblendete Attribute einer einzelnen Datei festlegen - sie bietet keine feinkörnigen Steuerelemente, wie dies der icaclsFall ist.

icaclsLegt die Zugriffssteuerungslisten fest bzw. setzt sie 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 gist gespeichert habe ; Es setzt die Besitz- und Zugriffssteuerungsliste für alle Dateien in einem Ordner zurück und ist besonders nützlich, um die lästigen "Sie benötigen Berechtigungen von .., um diese Aktion auszuführen" zu beheben, insbesondere wenn Sie Dateien aus einer vorherigen Installation verschieben:

icacls * /reset /t /c /q 

Reset ersetzt die vorhandene durch die Standardliste.
/twirkt rekursiv auf alle Dateien, Ordner und Unterordner,
/qzeigt keine Erfolgsmeldungen an, und
/cdie verbleibenden Dateien werden auch dann angezeigt, 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.

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 vor 9 Jahren 0
Sie benötigen Administratorrechte. Das "normale" `cmd ', das Sie erhalten, wenn Sie [Win] + [R] drücken, fehlt diese. Für solche speziellen Anforderungen habe ich eine Verknüpfung "Admin-Shell", mit "Als Administrator ausführen" (oder ähnlich; ich bin auf einem deutschen Windows-System) (und mit einer dunkelroten Hintergrundfarbe). Tobias vor 9 Jahren 0
Ich habe tatsächlich das Problem mit der Erlaubnisfehler verweigert. Warum, zum Teufel, kann ich etwas tun, wenn ich Administrator und Konsole bin und als Administrator ausgeführt wird. Was ist das? Čamo vor 6 Jahren 0
10
Bryan

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

Ich glaube, dass "icacls" nur unter Vista / 7 verfügbar ist. Hello71 vor 13 Jahren 1
6
Tobias

Es kann (leider) keine exakte Entsprechung geben, da Linux und DOS / Windows Attribute für verschiedene Zwecke verwenden, und (wie Chathuranga zuvor sagte), das Sicherheitsmodell ist anders:

  • In Windows-Dateisystemen gibt es "hidden" ( H) - und "system" ( S) - Attribute, 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" ( ).
  • xIn den DOS / Windows-Dateiattributen gibt es keine Entsprechung zu den Linux-Attributen "executable" ( ).
  • Es gibt ein Äquivalent zum Windows- DAttribut "directory" ( ) (kann jedoch nicht geändert werden).
  • In Linux-Dateisystemen gehört zu jedem Eintrag genau ein Benutzer und genau eine Gruppe. Das Lesen / Schreiben / Ausführen kann für jeden von ihnen und für andere erlaubt sein. ACLs (wie von Windows verwendet) sind noch flexibler, aber auch komplizierter. Die Befehlszeilensyntax ist eine PITA (meiner bescheidenen Meinung nach natürlich).

Das DOS-Dateiattribut R(schreibgeschützt) ist das Attribut, das als gleichwertig betrachtet werden kann: Diese Attributmenge entspricht in etwa dem wAttribut für alle, die fehlen. Die Berechtigung zum Ändern dieses Attributs unterliegt jedoch ACLs.

Es könnte cool sein, unter chmod/ ein chownÄquivalent unter Windows zu haben, möglicherweise in einer Skriptsprache, die wiederum attribund cacls(oder Nachfolger) aufruft, aber ich habe keine.

Guter erster Beitrag! slm vor 11 Jahren 0
Sie sind verwirrend Dateiattribute und Berechtigungen. Linux hat Dateiattribute, die über [chattr] (https://linux.die.net/man/1/chattr) geändert werden können. Linux verfügt über eine differenzierte Zugriffskontrolle für Attribute (z. B. kann das Attribut [i] mmutable nur über root oder einen `CAP_LINUX_IMMUTABLE` -Prozess festgelegt werden), wohingegen der Zugriff auf das Setzen von Attributen in Windows alles oder nichts ist. Es ist ein häufiger * Fehler * in Implementierungen von `chmod` für Windows, diesen Befehl zum Festlegen des schreibgeschützten Dateiattributs zu verwenden. Leider sind Systeme nur so informiert wie die Programmierer, die sie entwickeln. eryksun vor 6 Jahren 0
@eryksun: Interessant - Ich habe diesen `chattr'-Befehl nicht gewusst. Aber Sie meinten nicht, dass ich "Dateiattribute und Berechtigungen verwechseln" sollte, richtig? AFAICS, jedes Wort, das ich über * DOS * -Attribute schrieb, ist immer noch korrekt. Tobias vor 6 Jahren 0
Eine Datei besteht aus vielen (erweiterten) Attributen. In Unix wird der Kernsatz von Attributen im Inode gespeichert, einschließlich des Dateimodus (Berechtigungen). Andere erweiterte Attribute (z. B. ACLs) können extern gespeichert werden. Windows hat kein Äquivalent zum Unix-Attribut "Modus". Es gibt auch keinen gemeinsamen Inode-Datensatz für Dateisysteme. Ein NTFS-MFT-Datensatz ist ähnlich. Die Standard-Windows-Dateiattribute sind aus ihrem POV ein einzelnes Attribut des Dateidatensatzes. Diese entsprechen den über `chattr` festgelegten Linux-Dateiattributen, mit der Ausnahme, dass Windows ein Verzeichnisattribut hat, da es keinen Inode gibt. eryksun vor 6 Jahren 0
Die Frage fragt nach einem "[e] -Aquivalent von chmod zum Ändern von Dateiberechtigungen in Windows". Unter Windows gibt es kein direktes Äquivalent zu "chmod", da das Attribut "mode" der Datei nicht ähnlich ist. Der Standardsatz von Windows-Dateiattributen hat damit nichts zu tun. Das schreibgeschützte Attribut ist keine Dateiberechtigung. Grundsätzlich heißt es, die Datei sei in Stein gemeißelt, daher müssen alle Versuche, sie zu ändern, fehlschlagen. Das Linux-Attribut "unveränderlich" ist ähnlich. Windows verwendet nur Zugriffssteuerungslisten (ACLs) für Berechtigungen. Daher sind icacls.exe und dergleichen die einzigen ähnlichen Befehle zum Thema Berechtigungen. eryksun vor 6 Jahren 0
5
MDT Guy
icacls "C:\folder" /grant:r "Domain\Users":(OI)(CI)M /T /C 

Works like a charm to change permissions on a folder for domain users. Additional information regarding cacls and icacls.

Netter erster Beitrag! Ich habe noch nie von Eisbäumen gehört. slm vor 11 Jahren 0
4
user27570

Der attribBefehl ist für sehr grundlegende Dinge (Schreibschutz, Archivierungsflags) am ehesten geeignet. Dann gibt es den Befehl ACL (Zugriffskontrollliste) cacls. Da Windows eigentlich Posix-kompatibel ist, gibt es die Unix-artigen Flags. Wenn Sie das Cygwin-Werkzeugset installieren, erhalten Sie eine chmod. (Ein wenig abseits, da Sie nach einem Äquivalent eines Unix-Befehls suchen, kann das Herunterladen und Installieren von Cgygwin für Sie interessant sein.)

2
Chathuranga Chandrasekara

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

2
Roman Kharkovski

Ich verwende den Windows-Befehl takeown.exe, um die Dateiberechtigungen auf meine aktuell angemeldete Benutzer-ID zu ändern: http://technet.microsoft.com/de-de/library/cc753024.aspx

0
WHOIF

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

Referenz: [einfach] (https://cygwin.com/cygwin-ug-net/using-filemodes.html) und [detailliert] (https://cygwin.com/cygwin-ug-net/ntsec.html) Bob vor 6 Jahren 1