risposta-alla-domanda-sullo-sviluppo-web-bd.com

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

Ogni tanto mi imbatto in un file di cui ho bisogno per diventare proprietario. Di solito uso cacls per cambiare i permessi di ntfs, ma non sembra avere proprietà. Sotto * nix avrei eseguito qualcosa come chown me:me <file>. Esiste una finestra equivalente a chown?

34
Joe

subinacl è uno strumento di potere del sysadmin di Windows per fare tutto a che fare con proprietà e ACL. Puoi cambiare la proprietà a 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).

25
crb

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

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

/r esegue l'operazione in modo ricorsivo su tutti i figli della cartella specificata. A differenza di subinacl, devi accedere come l'utente con cui stai tentando di diventare proprietario; 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 il prompt di conferma che viene visualizzato 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, è possibile quindi assegnare le autorizzazioni complete ai file e successivamente leggerli o eliminarli.

26
Evan Anderson

Assumi la proprietà e tutti i diritti 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 si visualizzava 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 .

17
chipiik

So che questo è un davvero vecchio post, ma c'è un modo integrato in Windows 7 e versioni successive (potrebbe essere in Windows Vista, ma non sono sicuro). Eseguire il comando seguente da un comando con escalation Prompt nella cartella che si desidera ripristinare. /t dice a icacls di 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.

8
Jim

Potresti dare un'occhiata a SetACL , il coltellino svizzero della 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.

6
Helge Klein

Per Windows 2003, 2008 o Vista o 7 utilizzare Takeown .

Per Windows 2000 utilizzare Fileowners.pl .

3
Dave Drager

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 tradizionali manipolazioni 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!

3
jnaab

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

1
Skelewir
  1. comando aperto Richiedi come amministratore e passa 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 tua scelta ... esempio: icacls *.jpg /grant "Everyone":F (nota che in Windows non inglese "Everyone" potrebbe non esistere, ad es. in tedesco Windows funziona solo con "Jeder", un vero peccato che Windows traduca le opzioni di comando!)
0
Jörg

Ho trovato una soluzione utilizzando gli strumenti di Windows: cacls

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