Come prendere la proprietà dei file dalla riga di comando?


34

Ogni tanto mi imbatto in un file di cui ho bisogno per diventare proprietario. Normalmente lo uso caclsper modificare i permessi NTFS, ma non sembra fare la proprietà. Sotto * nix avrei eseguito qualcosa di simile chown me:me <file>. C'è una finestra equivalente a chown?


peccato che setACL non funzioni con lo script sopra. errori su Win XP, 7 e 8 e devi essere un professionista per scoprire cosa c'è che non va

Risposte:


25

subinacl è uno strumento di potere del sysadmin di Windows per fare tutto ciò che riguarda proprietà e ACL. Puoi cambiare la proprietà con chiunque non sia solo te ( non puoi farlo con la GUI ).

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

Ciò ti consente di impostare l'autorizzazione per qualsiasi utente che ti piace, senza dover essere un amministratore (come credo che richiede takeown.exe).


Non valido per Windows XP Posso scaricare SUBINACL.exe (kit di risorse di Windows 2003) e utilizzarlo in Windows XP?
Kiquenet,

Certo che puoi! Questo è probabilmente da dove l'ho preso. Prova qui .
crb,

26

Stai cercando "TAKEOWN.EXE", che era il primo in Windows Server 2003 come componente standard, e credo che un articolo del kit di risorse prima. È disponibile su Windows 7 e forse sui sistemi più recenti.

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

/resegue l'operazione in modo ricorsivo su tutti i figli della cartella specificata. Diversamente subinacl, è necessario accedere come l'utente con cui si sta tentando di diventare proprietari; oppure puoi semplicemente assegnare la proprietà al gruppo "Amministratori".

Ecco una copia della sua documentazione, conservata su SS64 :

Sintassi TAKEOWN [/ s Computer [/ u [Dominio] Nome utente [/ p [Password]]]] / f Nome file [/ a] [/ r [/ d {Y | N}]]

Chiave / i Computer Il nome o l'indirizzo IP di un computer remoto (non utilizzare barre rovesciate). default = computer locale. Questo parametro si applica a tutti i file e le cartelle specificati nel comando.

/ u [Dominio] Nome utente Eseguire lo script con le autorizzazioni dell'account utente specificato. default = permessi di sistema.

/ p [Password] La password dell'account utente specificata nel parametro / u.

/ f Nome file Il nome del file, il percorso UNC o il modello del nome della directory. Accetta il carattere jolly *

/ a Assegna la proprietà al gruppo Administrators anziché all'utente corrente.

/ r Esegue un'operazione ricorsiva su tutti i file nella directory e nelle sottodirectory specificate.

/ d {Y | N} Elimina la richiesta di conferma che viene visualizzata quando l'utente corrente non dispone dell'autorizzazione "Elenco cartelle" su una directory specificata e utilizza invece un valore predefinito: Y: diventa proprietario della directory. N: salta la directory. Si noti che è necessario utilizzare questa opzione insieme all'opzione / r. Se il parametro / a non viene specificato, la proprietà del file viene assegnata all'utente che è attualmente connesso al computer.

I pattern misti usando (? E *) non sono supportati dal comando takeown.

Dopo aver modificato il proprietario di un file / cartella, è quindi possibile assegnare le autorizzazioni complete ai file e successivamente leggerli o eliminarli.



SS64 ha un collegamento di documentazione migliore: ss64.com/nt/takeown.html
jpaugh,

17

Assumi la proprietà e i diritti completi della cartella e di tutto ciò che contiene:

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

Assicurati di avviare il prompt dei comandi come amministratore!

Ho dovuto avviare un prompt dei comandi come amministratore, ha funzionato per me in Windows 8.1. Con imbarazzo di Windows 8.1, ho dovuto cercare "comando", fare clic destro sull'icona Prompt dei comandi. Per me per vedere l'opzione "Esegui come amministratore". Avevo un Prompt dei comandi appuntato sulla mia barra delle applicazioni, ma facendo clic con il tasto destro su di essa non avrei mostrato l'opzione "Esegui come amministratore".

In Windows 10, "Esegui come amministratore" dovrebbe essere disponibile come opzione per il clic destro.

Sintassi di rimozione :

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

riferimento di rimozione .

Sintassi di 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]]

Riferimento icacls .


1
Ricorda che icacls soffoca sui nomi di percorsi lunghi. Il messaggio di errore "file non trovato" è un po 'fuorviante, peggio ancora icalcs interrompe l'elaborazione del resto dell'albero senza alcun messaggio. Puoi usare il trucco di creare un volume SUBST più profondo nella struttura per aggirare questo a volte. Takeown.exe non tollera i nomi lunghi.
Andrew Dennison,

Non valido per Windows XP
Kiquenet,

8

So che questo è un post davvero vecchio, ma c'è un modo integrato in Windows 7 e versioni successive (potrebbe essere in Windows Vista, ma non sono sicuro). Eseguire quanto segue da un prompt dei comandi con escalation nella cartella che si desidera ripristinare. /tdice icaclsdi eseguire l'operazione in modo ricorsivo.

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

Il primo comando reimposta il proprietario su chi ha mai effettuato l'accesso tramite le variabili di ambiente. Ovviamente, è possibile utilizzare un nome specifico.

Il secondo comando impone quindi che le autorizzazioni vengano reintegrate nell'albero in tutte le cartelle e i file figlio.

Spero che questo aiuti qualcuno in futuro.


Il primo comando è stato abbastanza per me.
Benoit Blanchon,

6

Potresti dare un'occhiata a SetACL , il coltellino svizzero di gestione delle autorizzazioni. Ecco un esempio di come assegnare la proprietà di tutti i file sull'unità C: a "Amministratori" e rimuovere la protezione dell'eredità da tutti gli oggetti figlio in una volta sola:

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"

Puoi anche aggiungere -silent.


3

In Windows Server 2003 R2 (e versioni successive) è possibile sfruttare lo strumento integrato icacls.exe per modificare la proprietà dalla riga di comando, nonché tutte le manipolazioni tradizionali di cacls.exe su cui si espande ...

Si noti che icacls.exe passa automaticamente alla modalità "modifica", mentre cacls.exe passa automaticamente alla modalità "sostituisci" - una gradita modifica a quelli di noi morsi (più di una volta) da quella piccola sfumatura di cacls!


icacls è bello perché è incluso nelle ultime versioni di Windows e consente di assegnare la proprietà a qualsiasi utente.
David,


1

Un'altra alternativa è fileacl È piccola e può impostare / annullare l' impostazione del flag "eredita / non ereditare" sull'oggetto, a differenza della maggior parte dei programmi di utilità di Windows.


0

Ho trovato una soluzione usando gli strumenti di Windows: cacls

cacls <file or directory> /E /T /G <user>:F

0
  1. aprire il prompt dei comandi come utente amministratore e passare alla directory problematica
  2. prendere la proprietà di tutti i file lì ... esempio: takeown /f *.jpg
  3. concedere i diritti di accesso agli utenti di vostra scelta ... esempio: icacls *.jpg /grant "Everyone":F(si noti che in Windows non inglese "Everyone" potrebbe non esistere, ad esempio in Windows tedesco funziona solo con "Jeder", un vero peccato che Windows traduca le opzioni di comando!)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.