Spesso capita che in una cartella condivisa gli utenti creino una cartella personale, ma in essa i permessi sono aperti a tutti gli utenti previsti nella cartella padre (amministratori compresi).
Come è possibile assegnare i permessi al solo utente in modo semplice, e renderlo anche proprietario della cartella in modo che nessuno possa accedere o modificare queste impostazioni?
I comandi TAKEOWN e ICACLS ci vengono in aiuto per velocizzare l’operazione.
Consiglio comunque di testare prima l’operazione su una cartella di prova e poi di procedere su quella definitiva.
Ecco lo script:
@echo off set ERROLEVEL=0 cls echo ============================================= echo SCRIPT PER LA DEFINIZIONE DEI echo CORRETTI PERMESSI DI UNA CARTELLA UTENTE echo ============================================= echo. echo. echo. echo. echo. SET QUESTOUTENTE=%USERDOMAIN%\%USERNAME% :IMPOSTAVARIABILI set Dominio= Set Utente= Set Cartella= echo Dominio echo ------- set /p Dominio=Inserire il nome del dominio (niente per dominio corrente oppure %COMPUTERNAME% per utente locale): if "%Dominio%"=="" set Dominio=%USERDOMAIN% echo. echo. echo Utente echo ------ set /p NomeUtente=Inserire il nome account utente: echo. echo. echo Cartella echo -------- :: La riga qui di seguito viene usata quando si ripete per piu utenti lo script if "%Percorso%" NEQ "" echo Attualmente il percorso e' impostato su: %Percorso% && echo premere solo invio per confermarlo && echo. set /p Percorso=Inserire il percorso della cartella si trova la cartella dell'utente in cui modificare i permessi (la cartella padre): if NOT Exist %Percorso% goto ERRORE echo. echo. echo Nome cartella a cui cambiare i permessi echo --------------------------------------- echo. echo Cartelle presenti in %Percorso%: echo .................................................. FOR /F "tokens=4 delims= " %%A IN ('dir /ad %Percorso% ^|findstr /C:""^|findstr /V /E /C:"."') DO @echo %%A echo '''''''''''''''''''''''''''''''''''''''''''''''''' echo. set /p Cartella=Scrivere il nome della cartella a cui bisogna cambiare i permessi (desktop, documenti o altro a seconda della necessita'): echo. echo. cls echo ============================================= echo ATTENZIONE!!! echo ============================================= echo. echo. echo. echo Saranno cambiati i permessi della cartella echo %Percorso%\%Cartella% echo impostando come proprietario l'utente %QUESTOUTENTE% echo. set /p Risposta=Si',No, Annulla (S/N/A): if "%Risposta%"=="S" goto ESEGUI if "%Risposta%"=="N" goto IMPOSTAVARIABILI goto ANNULLA :ESEGUI cls echo ============================================= echo SCRIPT PER LA DEFINIZIONE DEI echo CORRETTI PERMESSI DI UNA CARTELLA UTENTE echo ============================================= echo. echo. echo. echo. echo. echo Cambio i permessi della cartella echo %Percorso%\%Cartella% echo con proprietario %DOMINIO%\%NomeUtente% echo. cls echo. TAKEOWN /f %Percorso%\%Cartella% /r /d S | findstr /I /V /B /C:"Operazione riuscita" | findstr /C:" " echo. echo Fine comando takeown echo ------------------------------- echo. echo L'utente %QUESTOUTENTE% e' diventato il proprietario della cartella %Percorso%\%Cartella% echo. pause cls echo. ICACLS "%Percorso%\%Cartella%" /reset /T | findstr /I /V /B /C:"File elaborato" echo. echo Fine comando reset echo ------------------------------- echo. echo Sono stati resettati i permessi della cartella %Percorso%\%Cartella% echo. pause cls echo. ICACLS "%Percorso%\%Cartella%" /grant:r "%DOMINIO%\%NomeUtente%":(OI)(CI)F /grant:r "SYSTEM":(OI)(CI)F /grant:r "%QUESTOUTENTE%":(OI)(CI)F | findstr /V /B /C:"File elaborato" echo. echo Fine comando assegna permessi echo ------------------------------ echo. echo La cartella %Percorso%\%Cartella% ha ora i permessi impostati per %DOMINIO%\%NomeUtente%,SYSTEM e %QUESTOUTENTE% echo (L'utente amministratore %QUESTOUTENTE% sara' poi rimosso a fine script se non e' l'utente designato come proprietario) echo. pause cls echo. ICACLS "%Percorso%\%Cartella%" /inheritance:r | findstr /I /V /B /C:"File elaborato" echo. echo Fine comando Imposta ereditarieta' echo ---------------------------------- echo. echo Attivata ereditarieta' sulla cartella %Percorso%\%Cartella% echo. pause cls echo. ICACLS "%Percorso%\%Cartella%" /setowner "%DOMINIO%\%NomeUtente%" /T | findstr /I /V /B /C:"File elaborato" echo. echo Fine comando Imposta Proprietario echo ---------------------------------- echo. echo La cartella %Percorso%\%Cartella% ha ora come proprietario %DOMINIO%\%NomeUtente% echo. pause cls echo. if "%username%"=="%NomeUtente%" ( echo Utente impostato = utente corrente. Lascio permessi intatti. ) else ( echo Rimuovo %QUESTOUTENTE% come utente con permessi ICACLS "%Percorso%\%Cartella%" /remove "%QUESTOUTENTE%" | findstr /I /V /B /C:"File elaborato" ) echo. echo. pause goto FINE :ANNULLA echo ============================================= echo SCRIPT PER LA DEFINIZIONE DEI echo CORRETTI PERMESSI DI UNA CARTELLA UTENTE echo ============================================= echo. echo. OPERAZIONE ANNULLATA echo RILANCIARE LO SCRIPT echo ED AGGIORNARE I PERMESSI echo. echo. goto ENDOFSCRIPT :ERRORE echo ============================================= echo SCRIPT PER LA DEFINIZIONE DEI echo CORRETTI PERMESSI DI UNA CARTELLA UTENTE echo ============================================= echo. echo. RISCONTRATO ERRORE. VERIFICARE I DATI echo. echo. goto ENDOFSCRIPT :FINE cls echo ============================================= echo SCRIPT PER LA DEFINIZIONE DEI echo CORRETTI PERMESSI DI UNA CARTELLA UTENTE echo ============================================= echo. echo. echo. echo. :ENDOFSCRIPT echo. echo Elaborazione terminata pause
P.S.
Lo script deve essere lanciato da un utente con permessi amministrativi