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
