Odpowiednik chmod do zmiany uprawnień do plików w systemie Windows

59

Czy istnieje jakiś odpowiednik systemu Linux w systemie Windows chmoddo zmiany uprawnień do pliku?

nhinkle
źródło

Odpowiedzi:

25

Greg wspomina attrib - ale attrib nigdzie nie jest blisko chmod- attribmoże ustawić atrybuty tylko do odczytu / ukryte pojedynczego pliku - nie zapewnia precyzyjnych kontroli, jak to icaclsrobi.

icaclsustawia / resetuje listy kontroli dostępu, dzięki czemu można przyznawać / odmawiać uprawnień dla poszczególnych identyfikatorów SID i grup. Jest to jednak dość skomplikowane.

Oto przykład, który zapisałem w mojej githubist ; resetuje listę własności i kontrolę dostępu do wszystkich plików w folderze i jest szczególnie przydatny do naprawy tych irytujących „Potrzebujesz uprawnień z ... do wykonania tej akcji”, szczególnie przy przenoszeniu plików z poprzedniej instalacji:

icacls * /reset /t /c /q 

Resetuj zastępuje istniejącą domyślną listą.
/tdziała rekurencyjnie na wszystkie pliki, foldery i podfoldery
/q, nie wyświetla żadnych komunikatów o powodzeniu,
/ckontynuuje pozostanie plików nawet w przypadku wystąpienia błędu.

Możesz także wykonać kopię zapasową istniejących list ACL i zastosować je we wszystkich. Spójrz na ss64, który bardzo dobrze wyjaśnia różne opcje i przełączniki.

Sathyajith Bhat
źródło
Problem polega na tym, że nie mogę tego zrobić, dla każdego pliku pojawia się komunikat: „Odmowa dostępu”. Czy nie można tego obejść? W systemie szkolnym, który to blokuje, ale nie cmd?
theonlygusti
Potrzebujesz uprawnień administratora; „normalny”, cmdktóry otrzymujesz po naciśnięciu [Win] + [R], nie ma ich. Na specjalne potrzeby mam skrót „Powłoka administratora” z zaznaczoną opcją „Wykonaj jako administrator” (lub podobny; korzystam z niemieckiego systemu Windows) (z ciemnoczerwonym kolorem tła).
Tobias
Naprawdę mam problem z błędem odmowy uprawnień. Dlaczego, do diabła, mogę coś zrobić, jeśli jestem administratorem, a konsola, którą uruchamiam, działa również jako administrator. Co to jest?
Čamo
13

Albo cacls , xcacls , albo moje osobiste ulubione icacl prawdopodobnie zrobią to, czego potrzebujesz.

Bryan
źródło
1
Uważam, że icaclsjest dostępny tylko w systemie Vista / 7.
Witaj71,
9

(Niestety) nie może być dokładnym odpowiednikiem, ponieważ Linux i DOS / Windows używają atrybutów do różnych celów i (jak powiedział wcześniej Chathuranga) model bezpieczeństwa jest inny:

  • W systemach plików Windows istnieją atrybuty „ukryte” ( H) i „system” ( S), które nie mają odpowiednika w systemie Linux; tam pliki są ukryte, poprzedzając nazwę kropką ( .).
  • Nie ma też odpowiednika Aatrybutu „archive” ( ) systemu Windows .
  • W xatrybutach plików DOS / Windows nie ma odpowiednika atrybutów Linux „wykonywalnego” ( ).
  • Jest to odpowiednik Windows „katalog” ( D) atrybutu (ale to i tak nie można zmienić).
  • W systemach plików Linux każdy wpis jest własnością dokładnie jednego użytkownika i dokładnie jednej grupy, a dla każdego z nich i dla innych można zezwolić na odczyt / zapis / wykonanie. Listy ACL (takie jak używane w systemie Windows) są jeszcze bardziej elastyczne, ale także bardziej skomplikowane, a składnia wiersza poleceń to PITA (moim skromnym zdaniem, oczywiście)

Atrybut pliku DOS R(tylko do odczytu) to taki, który można uznać za równoważny: ten zestaw atrybutów jest mniej więcej podobny do watrybutu braku wszystkich; ale zezwolenie na zmianę tego atrybutu jest uzależnione od list ACL.

Fajnie byłoby mieć chmod/ chownodpowiednik w systemie Windows, być może napisany w jakimś języku skryptowym, który z kolei wywołuje attribi cacls(lub następców), ale ja go nie mam.

Tobiasz
źródło
Dobry pierwszy post!
slm
Mylisz atrybuty i uprawnienia do plików. Linux ma atrybuty plików, które można zmienić za pomocą chattr . Linux ma precyzyjną kontrolę dostępu do atrybutów (np. Atrybut [i] mmutable można ustawić tylko przez root lub CAP_LINUX_IMMUTABLEproces), podczas gdy dostęp do zestawu atrybutów w systemie Windows to wszystko lub nic. Powszechnym błędem w implementacjach chmodsystemu Windows jest używanie tego polecenia do ustawiania atrybutu pliku tylko do odczytu. Niestety systemy są tak dobrze poinformowane, jak programiści, którzy je rozwijają.
Eryk Sun
@eryksun: Interesujące - nie wiedziałem o tym chattrpoleceniu. Ale nie miałeś na myśli mnie, że „mylę atrybuty plików i uprawnienia”, prawda? AFAICS, każde słowo, które napisałem o atrybutach DOS jest nadal poprawne.
Tobias
Plik składa się z wielu (rozszerzonych) atrybutów. W Uniksie podstawowy zestaw atrybutów jest przechowywany w i-węźle, w tym tryb pliku (uprawnienia). Inne rozszerzone atrybuty (np. Listy ACL) mogą być przechowywane zewnętrznie. System Windows nie ma odpowiednika unikatowego atrybutu „trybu”. Nie ma również wspólnego rekordu i-węzła dla systemów plików. Rekord MFS NTFS jest podobny. Z jego POV standardowe atrybuty pliku systemu Windows są pojedynczym atrybutem rekordu pliku. Odpowiadają one atrybutom plików systemu Linux ustawionym za pomocą chattr, z wyjątkiem tego, że system Windows ma atrybut katalogu, ponieważ nie ma i-węzła.
Eryk Sun
Pytanie dotyczy „[e] odpowiednika chmod do zmiany uprawnień do plików w systemie Windows”. W chmodsystemie Windows nie ma bezpośredniego odpowiednika, ponieważ nie ma nic takiego jak atrybut „tryb” pliku. Standardowy zestaw atrybutów plików systemu Windows nie ma z tym nic wspólnego. Atrybut tylko do odczytu nie jest uprawnieniem do pliku. Mówi w zasadzie, że plik jest zapisany w kamieniu, więc wszelkie próby jego modyfikacji muszą zakończyć się niepowodzeniem. „Niezmienny” atrybut pliku systemu Linux jest podobny. System Windows używa list ACL tylko dla uprawnień, więc icacls.exe i tym podobne są jedynymi podobnymi poleceniami na temat uprawnień.
Eryk Sun
6
icacls "C:\folder" /grant:r "Domain\Users":(OI)(CI)M /T /C

Działa jak urok, aby zmienić uprawnienia do folderu dla użytkowników domeny. Dodatkowe informacje dotyczące caclsi icacls.

MDT Guy
źródło
Miły pierwszy post! Nigdy nie słyszałem o lodach.
slm
5

attribKomenda jest najbliższy mecz na bardzo podstawowe rzeczy (tylko do odczytu, archiwizacji flag). Następnie jest polecenie ACL (lista kontroli dostępu) cacls. Last but not least, ponieważ system Windows jest w rzeczywistości zgodny z Posixem, istnieją flagi uniksopodobne. Jeśli zainstalujesz zestaw narzędzi Cygwin, otrzymasz chmod. (Trochę nie na temat, ponieważ szukasz odpowiednika polecenia uniksowego, pobranie i zainstalowanie Cgygwin może być dla Ciebie interesujące).

użytkownik27570
źródło
2

W systemie Windows nic nie nazywa się chmod, ponieważ model bezpieczeństwa systemu Windows jest inny niż Linux. Możesz użyć attribpolecenia, aby zmienić właściwości obiektów. (Ale są bardziej w kierunku globalnych właściwości).

Chathuranga Chandrasekara
źródło
2

Dla mnie obejściem tego problemu jest zainstalowanie Cygwin i dodanie jego folderu bin do ścieżki systemowej. Następnie, jeśli uruchomisz „chmod” w wierszu poleceń, zadziała. Chociaż nie zweryfikowałem jego poprawności.

WHOIF
źródło
1
Odniesienie: proste i szczegółowe
Bob
0

Jeśli masz do czynienia z czymś podobnym do CHMOD (który jest tylko poleceniem UNIX / Linux, użyj, aby zmienić uprawnienia do pliku), musisz kliknąć prawym przyciskiem myszy plik lub folder, a następnie przejść do właściwości, a następnie w papierach wartościowych.

Stamtąd możesz zmienić uprawnienia do folderu lub pliku, jeśli zalogowałeś się jako administrator.

Istnieją trzy rodzaje uprawnień (odczyt, zapis i wykonywanie) W systemie Linux lub UNIX widać symbol jak r dla odczytu, w dla zapisu i x dla wykonania, ale w oknach widać całe słowo.

Możesz także przypisać własność pliku innemu.

Catherine Park
źródło