Jak przejąć na własność pliki z wiersza poleceń?

34

Co jakiś czas natrafiam na plik, który muszę przejąć na własność. Zwykle używam caclsdo zmiany uprawnień NTFS, ale wydaje się, że to nie robi własności. Pod * nix uruchomiłbym coś takiego chown me:me <file>. Czy istnieje odpowiednik systemu Windows chown?

Joe
źródło
szkoda, że ​​setACL nie działa z powyższym skryptem. błędy w Win XP, 7 i 8 i musisz być profesorem, aby znaleźć coś z nim nie tak

Odpowiedzi:

25

subinacl jest narzędziem do zarządzania systemem Windows służącym do robienia wszystkiego, co dotyczy własności i list ACL. Możesz zmienić własność na inną niż ty ( nie możesz tego zrobić za pomocą GUI ).

subinacl /file test.txt /setowner=domain\foo

Pozwala to ustawić uprawnienia dowolnemu użytkownikowi, bez względu na to, czy jest on administratorem (jak sądzę, wymaga takeown.exe).

crb
źródło
Nie dotyczy systemu Windows XP. Czy mogę pobrać plik SUBINACL.exe (zestaw Windows 2003 Resource Kit) i używać go w systemie Windows XP?
Kiquenet
Oczywiście że możesz! Prawdopodobnie skąd to wzięłam. Spróbuj tutaj .
crb
26

Szukasz „TAKEOWN.EXE”, który był pierwszy w systemie Windows Server 2003 jako standardowy komponent, i uważam, że wcześniej był to element zestawu zasobów. Jest dostępny w systemie Windows 7 i być może w nowszych systemach.

takeown /f <some-file-or-folder> /r

/rwykonuje operację rekurencyjnie na wszystkich elementach potomnych określonego folderu. W przeciwieństwie do tego subinaclmusisz zalogować się jako użytkownik, z którym próbujesz przejąć własność; lub możesz po prostu przypisać własność grupie „Administratorzy”.

Oto kopia dokumentacji zachowanej na SS64 :

Składnia TAKEOWN [/ s Komputer [/ u [Domena] Nazwa użytkownika [/ p [Hasło]]]] / f Nazwa pliku [/ a] [/ r [/ d {Y | N}]]

Klucz / s Komputer Nazwa lub adres IP komputera zdalnego (nie używaj ukośników odwrotnych). default = komputer lokalny. Ten parametr dotyczy wszystkich plików i folderów określonych w poleceniu.

/ u [Domena] Nazwa użytkownika Uruchom skrypt z uprawnieniami określonego konta użytkownika. default = uprawnienia systemowe.

/ p [Hasło] Hasło konta użytkownika określonego w parametrze / u.

/ f nazwa_pliku Nazwa pliku, ścieżka UNC lub wzorzec nazwy katalogu. Akceptuje znak wieloznaczny *

/ a Przekaż własność grupie Administratorzy zamiast bieżącego użytkownika.

/ r Wykonaj operację rekurencyjną na wszystkich plikach w określonym katalogu i podkatalogach.

/ d {Y | N} Pomiń monit o potwierdzenie, który jest wyświetlany, gdy bieżący użytkownik nie ma uprawnienia do „Listy folderów” w określonym katalogu, i zamiast tego użyj wartości domyślnej: Y: Przejmij na własność katalog. N: Pomiń katalog. Pamiętaj, że musisz użyć tej opcji w połączeniu z opcją / r. Jeśli parametr / a nie zostanie określony, własność pliku zostanie przekazana użytkownikowi, który jest aktualnie zalogowany na komputerze.

Wzory mieszane przy użyciu (? I *) nie są obsługiwane przez polecenie takeown.

Po zmianie właściciela pliku / folderu możesz następnie przypisać pełne uprawnienia do plików, a następnie je odczytać lub usunąć.

Evan Anderson
źródło
Zawartość
wycofana
SS64 ma lepszy link do dokumentacji: ss64.com/nt/takeown.html
jpaugh
17

Przejmij własność i pełne prawa do folderu i wszystkiego w środku:

takeown /F somedir /A /R
icacls somedir /grant:r User:F /T

Pamiętaj, aby uruchomić wiersz polecenia jako administrator!

Musiałem uruchomić wiersz polecenia jako administrator, działał on dla mnie w systemie Windows 8.1. Przy niezręczności systemu Windows 8.1 musiałem szukać „polecenia”, kliknij prawym przyciskiem myszy ikonę Wiersza polecenia. Dla mnie, aby zobaczyć opcję „Uruchom jako administrator”. Miałem wiersz polecenia przypięty do paska zadań, ale kliknięcie go prawym przyciskiem myszy nie wyświetla opcji „Uruchom jako administrator”.

W systemie Windows 10 polecenie „Uruchom jako administrator” powinno być dostępne jako opcja kliknięcia prawym przyciskiem myszy.

Składnia Takeown :

takeown [/s <Computer> [/u [<Domain>\]<User name> [/p [<Password>]]]] /f <File name> [/a] [/r [/d {Y|N}]]

takeown referencyjny .

Składnia Icacls :

icacls <FileName>[/GRANT [: r] <Sid>: <Perm> [...]] [/ Denegar <Sid>: <Perm> [...]] [/Remove [:g|:d]] <Sid> [...]] [/ t] [/ c] [/ l] [/ q] [/ setintegritylevel <Level>: <Policy> [...]]Icacls <Directory>[/ sustituir <SidOld><SidNew>[...]] [/ restore <ACLfile>[/ c] [/ l] [/q]]

icacls Odniesienie .

chipiik
źródło
1
Pamiętaj, że icacls dławią się długimi nazwami ścieżek. Komunikat o błędzie „nie znaleziono pliku” jest nieco mylący, gorzej icalcs przerywa przetwarzanie reszty drzewa bez komunikatu. Możesz użyć sztuczki polegającej na utworzeniu wolumenu SUBST głębiej w drzewie, aby czasem to obejść. Takeown.exe toleruje długie nazwy.
Andrew Dennison,
Nie dotyczy Windows XP
Kiquenet
8

Wiem, że to naprawdę stary post, ale jest sposób wbudowany w Windows 7 i nowszy (może być w Windows Vista, ale nie jestem pewien). Uruchom następujące polecenie z eskalowanego wiersza polecenia w folderze, który chcesz zresetować. /tkaże icaclswykonać operację rekurencyjnie.

icacls .\* /setowner %UserDomain%\%UserName% /t
icacls .\* /reset /t

Pierwsze polecenie resetuje właściciela do tego, kto kiedykolwiek był zalogowany przez zmienne środowiskowe. Oczywiście zamiast tego można użyć konkretnej nazwy.

Drugie polecenie wymusza następnie ponowne dziedziczenie uprawnień w dół drzewa do wszystkich podrzędnych folderów i plików.

Mam nadzieję, że to pomoże komuś w przyszłości.

Jim
źródło
Pierwsze polecenie wystarczyło mi.
Benoit Blanchon
6

Możesz rzucić okiem na SetACL , szwajcarski scyzoryk do zarządzania uprawnieniami. Oto przykład, jak przypisać własność wszystkich plików na dysku C: do „Administratorów” i usunąć ochronę dziedziczenia ze wszystkich obiektów potomnych za jednym razem:

SetACL.exe -on "C:\\" -ot file -actn setprot
           -op "dacl:np;sacl:nc"
           -rec cont_obj
           -actn setowner -ownr "n:S-1-5-32-544;s:y"

Możesz także dodać -silent.

Helge Klein
źródło
3

W systemie Windows Server 2003 R2 (i nowszych) możesz skorzystać z wbudowanego narzędzia icacls.exe, aby zmienić własność z wiersza poleceń, a także wszystkich tradycyjnych manipulacji cacls.exe, na których rozszerza się ...

Zauważ, że icacls.exe domyślnie pracuje w trybie „edycji”, podczas gdy cacls.exe domyślnie działa w trybie „zastępowania” - mile widziana zmiana dla tych z nas ugryzionych (więcej niż raz) przez ten mały niuans cacli!

jnaab
źródło
icacls jest fajny, ponieważ jest zawarty w najnowszych wersjach systemu Windows i pozwala przypisać własność dowolnemu użytkownikowi.
David
1

Inną alternatywą jest fileacl. Jest mały i może ustawić / odznaczyć flagę „dziedzicz / nie dziedzicz” na obiekcie, w przeciwieństwie do większości narzędzi systemu Windows.

Skelewir
źródło
0

Znalazłem rozwiązanie za pomocą Narzędzi Windows: cacls

cacls <file or directory> /E /T /G <user>:F
chepseskaf
źródło
0
  1. otwórz wiersz polecenia jako administrator i przejdź do katalogu z problemami
  2. przejąć na własność wszystkie pliki tam ... przykład: takeown /f *.jpg
  3. nadaj prawa dostępu wybranym użytkownikom ... przykład: icacls *.jpg /grant "Everyone":F(zauważ, że w nieanglojęzycznym systemie Windows „Wszyscy” mogą nie istnieć, np. w niemieckim systemie Windows działa tylko z „Jeder” - prawdziwy błąd, który Windows tłumaczy opcje poleceń!)
Jörg
źródło