NTFS Stuff v1 – Ita
VBS WSH Script
Autori: Mirko Iodice, Luca Alberti
Testato su: Windows 2000 Server, Windows 2003 Server, Windows 2008 Server, Windows XP Professional, Windows Vista, Windows 7, Internet Explorer 6, Internet Explorer 7, Internet Explorer 8, Mozilla Firefox 3.X
Cos'è NTFS Stuff?
Per un amministratore di rete Microsoft è difficile tenere traccia di tutti i cambiamenti apportati nel tempo alla struttura "logica" di un file server, molte volte si sente la necessità di disporre di uno strumento semplice e veloce che ci aiuti a capire quali siano quelle cartelle "rilevanti" che vanno ad interrompere la normale applicazione dei permessi basata sul concetto di "ereditarietà".
NTFS Stuff è uno script WSH che ha lo scopo di generare un report grafico (in formato HTML) che metta in qualche modo in evidenza lo stato delle autorizzazioni di accesso alla struttura di un fileserver. Due distinti livelli di dettaglio offrono la possibilità di scegliere se visualizzare soltanto le informazioni relative alle cartelle "rilevanti" oppure quelle relative all'intero albero di cartelle. Oltre alle DACL di ogni singola cartella vengono riportate ulteriori informazioni quali: la data di creazione e di ultima modifica, il proprietario e lo stato dell'ereditarietà.
Abbiamo prestato particolare attenzione alla rappresentazione grafica delle informazioni, colori e simboli rendono immediata l'identificazione dei cambiamenti apportati alla normale applicazione, basata appunto sul principio di ereditarietà, dei permessi NTFS.
La seguente immagine mette in evidenza le funzionalità dello script
- Le informazioni relative alle cartelle sono espandibili cliccando sui loro nomi, esse comprendono: percorso completo, data/ora di creazione e di ultima modifica, proprietario e DACL (differenziando tra concessione e negazione).
- Due pulsanti "Expand All" e "Collapse All" permettono di espandere e chiudere con un singolo clic le informazioni di tutte le cartelle.
- Lo stato di ereditarietà dei permessi è messo in evidenza per ciascuna cartella da un simbolo colorato.
Il simbolo "=" associato al colore verde sta ad indicare il fatto che l'ereditarietà dei permessi NTFS risulta attiva e che non sono state apportate modifiche manuali; le cartelle contrassegnate in questo modo non risultano quindi particolarmente rilevanti.
Più importanti sono invece le cartelle indicate dai simboli "x" e "+", associati rispettivamente ai colori rosso e azzurro. Nello specifico il simbolo "x" mette in evidenza il fatto che l'ereditarietà dei permessi è stata completamente disattivata, mentre il simbolo "+" equivale ad una discordanza tra i permessi
della cartella presa in esame e quelli assegnati al livello superiore (l'ereditarietà in questo caso è comunque attiva). - Per facilitare la consultazione del report le cartelle contrassegnate dai simboli "x" e "+" mostrano come informazione aggiuntiva anche le DACL del livello superiore.
- Lo script è eseguibile in due modalità: con "verbosity = 0" (predefinito) vengono riportate soltanto le cartelle contrassegnate dai simboli "x" e "+", con "verbosity = 1" viene riportata invece l'intera struttura del file server rappresentata con indentazione.
- Per un maggiore controllo è possibile specificare anche il numero di sottolivelli (recursion) che devono essere analizzati a partire dalla cartella di radice; questa funzionalità si traduce inoltre in un minor tempo d'esecuzione.
Consigli
NTFS Stuff, solo quando avviato su Windows 2000, richiede di specificare un livello di priorità (priority) di esecuzione (predefinito 1). Questa impostazione serve a limitare l'utilizzo del processore durante l'elaborazione dei dati. Si sconsiglia vivamente di impostare il livello 0 su macchine di produzione o particolarmente datate, questo poiché WSH tende ad impegnare completamente il processore durante l'esecuzione degli script. Windows XP/2003 e superiori non sono affetti da questo problema in quanto lo script è in grado di impostare automaticamente la sua priorità di esecuzione su "Bassa", in questo modo la corretta allocazione delle risorse viene gestita in maniera autonoma dal sistema operativo stesso.
Per una corretta visualizzazione dell'output sui sistemi Windows Server 2003 con protezione avanzata di Internet Explorer aggiungere la voce about:internet nell'elenco dei siti attendibili, senza questo accorgimento sarà impossibile consultare i dettagli delle cartelle.
Legenda DACL
NTFS Stuff utilizza alcune funzioni prese da XCACLS.VBS (Windows Support Tools) per interrogare il file system ed elencare i permessi delle cartelle in un formato facilmente consultabile.
Nel caso in cui vi siano permessi speciali assegnati alle cartelle utilizzare la seguente lista come legenda.
Generali:
F = Full control
M = Modify
X = read & eXecute
R = Read
W = Write
Avanzati:
E = Synchronize
D = Take Ownership
C = Change Permissions
B = Read Permissions
A = Delete
9 = Write Attributes
8 = Read Attributes
7 = Delete Subfolders and Files
6 = Traverse Folder / Execute File
5 = Write Extended Attributes
4 = Read Extended Attributes
3 = Create Folders / Append Data
2 = Create Files / Write Data
1 = List Folder / Read Data
La riga di comando
A partire dalla versione 1.3 è stato introdotta la modalità di esecuzione dalla riga di comando, questa funzionalità rende possibili attività come la pianificazione dell'esecuzione (tramite operazioni pianificate), l'avvio attraverso altri script e l'esecuzione remota tramite "psexec".
Per utilizzarla e visualizzarne l'help aprite un prompt dei comandi ed avviate "ntfsStuff.vbs" utilizzando il motore "cscript.exe" e fornendo in input un qualsiasi parametro (ad esempio il carattere "?")
cscript ntfsStuff.vbs ?
- L'argomento [RootFolderPath] è obbligatorio ed identifica la radice dell'albero di cartelle da sottoporre ad analisi
- L'argomento [VerbosityLevel] è obbligatorio ed identifica quante informazioni dovrà contenere il report grafico generato dallo script, il valore "0" causa la visualizzazione delle sole sole informazioni rilevanti, il valore "1" causa la visualizzazione dell'intero albero di cartelle
- L'argomento [PriorityLevel] (disponibile ed obbligatorio soltanto su Windows 2000) identifica la priorità di esecuzione assegnata allo script, i valori possibili sono "0", "1" e "2", e rispettivamente indicano le priorità "bassa", "normale/moderata", "alta"
- L'argomento [RecursionLevel] è obbligatorio ed attraverso il valore assegnato identifica il numero di sottolivelli (recursion level) che verranno analizzati a partire dalla cartella di radice, il valore "0" causa l'analisi dell'intero albero di cartelle
- L'argomento [/v] è opzionale ed attivandolo è possibile visualizzare lo stato di avanzamento dello script
Esempi:
cscript ntfsStuff.vbs "C:\Data" 0 0 cscript ntfsStuff.vbs "C:\Data" 0 0 /v
Per maggiori dettagli sul significato di queste impostazioni fare riferimento all'articolo "Mettere ordine alle autorizzazioni di un File Server utilizzando NTFS Stuff v1"
La riga di comando permette anche di pianificare l'esecuzione dello script come esemplificato nella seguente immagine:
ed anche di eseguirlo da remoto tramite utilità come psexec, esempio:
psexec \\server_remoto cscript C:\ntfsStuff.vbs "C:\Data" 0 0 /v
NTFS Stuff e UAC (User Account Control)
NTFS Stuff è in grado di richiedere automaticamente l'elevazione dei privilegi quando viene eseguito su sistemi operativi che supportano ed utilizzano la funzionalità di controllo dell'account utente (Windows Vista, Windows 7, Windows 2008 Server).
N.B: per ovvie ragioni l'elevazione dei privilegi può essere richiesta automaticamente soltanto durante l'esecuzione dello script in modalità grafica, per ottenere i privilegi di amministratore durante l'esecuzione pianificata o interattiva tramite la riga di comando sarà necessario utilizzare servizi o processi (ad esempio il prompt dei comandi) già precedentemente elevati.
Per l'esecuzione remota tramite "psexec" è necessario autenticarsi utilizzando l'utente amministrativo di tipo "built-in" (nella maggior parte dei casi "Administrator") oppure disabilitare la funzionalità di protezione UAC access-token filtering.
Problemi noti
Le cartelle create da sistemi Macintosh, in particolare nominate con caratteri non previsti dallo standard Windows, potrebbero causare l'interruzione imprevista dello script.
In Windows 2008 Server lo script può causare un elevato utilizzo della cpu da parte dei processi lsass.exe e wmiprvse.exe.
Download
Changelog
- ntfs Stuff v1.0 - rilascio iniziale
- ntfs Stuff v1.1 - aggiornato CSS per garantire compatibilità con Internet Explorer 8 e Firefox 3.5, aggiunta una nuova funzione per gestire in maniera automatica la priorità di esecuzione su sistemi Windows XP/2003 e superiori.
- ntfs Stuff v1.2 - le cartelle senza permessi che restituiscono l’errore “Accesso Negato” non causano più il blocco dello script, aggiunta la possibilità di eseguire l’analisi usando come base di partenza (Root Folder) la radice di una unità (ad esempio “C:\” “D:\” “F:\” ecc..), Risolto un bug causato dalla funzionalità UAC su Windows 2008 (ringrazio Helios Ciancio per la segnalazione, l’analisi del problema ed il codice vbscript fornitomi via mail), risolto un piccolo bug presente nella funzione di inserimento della Root Folder, risolto un piccolo bug presente nell’HTML generato in output.
- ntfs Stuff v1.3 - introdotto il supporto alla riga di comando, introdotto il supporto UAC (user account control), migliorata ulteriormente la gestione degli errori di tipo "Accesso negato", migliorate le prestazioni in fase di ricerca delle cartelle da analizzare.
Referenze
- http://www.microsoft.com/te....c=it
- http://msdn2.microsoft.com/en....85).aspx
- http://msdn2.microsoft.com/en....85).aspx
- http://msdn2.microsoft.com/en....85).aspx
- http://www.microsoft.com/te....007.mspx
- http://kbalertz.com/88386....ervice.aspx
Autore
Mirko Iodice
mirko -at- notageek (.dot) it
Suggeriti dall'autore
- Mettere ordine alle autorizzazioni di un File Server utilizzando NTFS Stuff v1
- WSH - Windows Scripting Host
Print This • Email this • Twit This! • Add to del.icio.us • Share on Facebook • Digg This! • Stumble It! • AddThis! • Share on Segnalo Alice • Share on OKNotizie
15 Aprile 2008 alle 11:51
Ottimo lavoro!.
Secondo me è un'utility che può risultare quasi fondamentale in una struttura complessa di cartelle.
15 Aprile 2008 alle 12:50
non do un giudizio sul lavoro perchè sono poco esperta ma bravi comunque!è proprio un buon lavoro..
20 Aprile 2008 alle 22:17
Ho scaricato ora il programma, anche per studiarne il codice vbs. Io ho qualche script per elencare i gruppi di appartenenza degli utenti e, viceversa, gli utenti appartenenti ai gruppi. Grazie e buon lavoro.
21 Aprile 2008 alle 6:05
Grazie a tutti per il feedback.
Se avete qualche consiglio per migliorare lo script scrivetelo pure, ne possiamo discutere assieme.
14 Maggio 2009 alle 13:08
Utilissima utility.
Ho trovato una pecca:
Quando analizzo una cartella che ne contiene delle altre tra cui la RECYCLER mi genera un errore:
Error: -2147217406 - Not Found ...RECYCLER\S-5-3-.....
Cosa fare ?
Ciao
15 Maggio 2009 alle 7:00
@ Luciano
vorrei ricreare il problema, potresti indicarmi i percorsi completi delle cartelle che ti danno errore ed i relativi permessi di protezione?
Se preferisci puoi fare anche uno screenshot e mandarmelo via email; sentiti libero di censurare i nomi utente ed i sid.
grazie del supporto.
13 Ottobre 2009 alle 21:06
Pubblicato un piccolo aggiornamento, i dettagli li trovate nella sezione changelog.
14 Luglio 2010 alle 22:35
Pubblicata la versione 1.2 di NTFS Stuff.
Sono stati risolti tutti i bug segnalati, consultate il Changelog per maggiori dettagli.
24 Agosto 2010 alle 22:50
Pubblicata la versione 1.3 di NTFS Stuff.
Consultate il Changelog oppure questa pagina per maggiori dettagli sulle novità introdotte.
21 Dicembre 2011 alle 9:30
Ciao! Usando lo script da una workstation e non sul server, con privilegi di Admin, ottengo per tutte le cartelle:
Creation Date: 17/11/2011 12:21:18
Last Modified: 17/11/2011 12:21:18
Owner: *unable to get owner information*
Parent Folder Permissions:
*unable to get secrity information*
Permissions:
*unable to get security information*
Non è previsto l'uso in questa modalità o c'è qualche problema specifico?
Grazie mille del vostro lavoro! :)
26 Dicembre 2011 alle 10:21
@ Valeria
Ciao,
lo script funziona anche sui sistemi client, probabilmente c'è qualche problema specifico.
Se il client in questione è Windows Vista/7 con UAC attivo lo script dovrebbe richiedere automaticamente l'elevazione dei privilegi, potrebbe essere che stia fallendo tale operazione... prova ad eseguirlo mediante un prompt dei comandi avviato "come amministratore".
Solitamente "*unable to get security information*" compare quando le cartelle da analizzare sono di tipo "privato", cioè la loro DACL non contiene ACE per l'utente/gruppo Admin e quindi l'accesso è consentito soltanto al rispettivo "Owner". Questa situazione è però tipica dei fileserver in presenza di folder redirection o profili roaming, non mi è mai capitato di riscontrarla su normali sistemi operativi client.
28 Dicembre 2011 alle 10:51
Grazie, in effetti ero in PowerShell di AD come admin, ma non mi sono spiegata bene: sto cercando di eseguire lo script col percorso in remoto da un client per ottenere l'elenco dei permessi sul server, invece mi sa che la soluzione giusta è psexec :)