File server’da paylaşıma açtığınız tüm klasörlere sadece olması gereken kullanıcılar mı erişiyor? Farkında olmadan ilgisi olmayan kullanıcılara da hak vermiş olabilir misiniz?
Datalarımızın güvenliği açısından, paylaşıma açtığınız klasörlerde, kullanıcılarınızın sadece işi ile ilgili datalara erişmesini, diğer yerlere erişimini kısıtlamak istersiniz. Bu şekilde çok sayıda klasör ve dosyamızın olduğunu düşünelim. Her birisinde kime hangi hakkı vermişiz? Bunların toplu bir raporunu alarak, doğru yerlere doğru kişiler erişiyor mu kontrol edebilirsiniz. Nasıl mı? Microsoft’un resource kit içinde bize sunduğu Rmtshare.exe aracını bu işlem için kullanabiliriz.
Araç tek başına bu raporu sunmak için yeterli olmayacaktır. Makalenin sonunda yer alan scripti bir bat dosyası olarak kaydetmeniz gerekecek. Ben masaüstüne Report.bat adıyla kaydediyorum.
Rmtshare.exe dosyasını buraya klikleyerek indirip, paylaşımların olduğu sunucuda System32 klasörü altına kopyalayalım.
C:\’de boş bir txt dosyası oluşturalım (istediğiniz başka bir lokasyon da olabilir) ve komut satırını açarak aşağıdaki komutu uygulayalım;
>Report.bat C:\test.txt
Şekil-1
C:\’de oluşturduğunuz txt dosyasını açtığınızda içerisinde bu bilgisayardaki Admin$, IPC$, Print$ ve <Drive_Letter>$ dışındaki paylaşımların adlarını NTFS ve Share permission’larını görebilirsiniz.
Örneğin bende resimde de işaretlediğim “schema” ve “test” paylaşımlarını ve paylaşımın sunucu üzerinde bulunduğu konumu NTFS ve share permissionları görebilirsiniz.
Şekil-2
Script dosyasının içeriği;
@echo off
setlocal ENABLEDELAYEDEXPANSION
IF {%1}=={} GOTO bad
set report=%1
if exist %report% del /q %report%
set except=”%TEMP%\RptSPX_%RANDOM%.TMP”
@echo ADMIN$>%except%
@echo IPC$>>%except%
@echo print$>>%except%
:excl
if {%2}=={} goto begin
set wrk=%2
shift
set wrk=%wrk:”=%
@echo %wrk%>>%except%
goto excl
:begin
set f1=Findstr /v /b /C:”The command completed successfully.”
set f2=findstr /v /b /L /i /g:%except%
for /f “Skip=4 Tokens=1*” %%a in (‘RMTSHARE \\%computername%^|%F1%^|%F2%’) do (
set shr=%%a
if “!shr:~1,2!#” NEQ “$#” call :share
)
del /q %except%
endlocal
GOTO :EOF
:bad
@echo Usage: RptSPX ReportFile [Except1 Except2 … ExceptN]
@echo.
endlocal
:share
for /f “Tokens=*” %%r in (‘RMTSHARE \\%computername%\%shr%^|%F1%’) do (
@echo %%r>>%report%
set line=%%r
if “!line:~0,5!” EQU “Path ” if “!line:~19,1!” EQU “:” call :folder “!line:~18!”
)
)
@echo ……………………………………………….>>%report%
goto :EOF
:folder
set pf=%1
set wrk=%pf:”=%#
if “%wrk:~2,2%” EQU “\#” set pf=%pf:\=%
cacls %pf%>>%report%
for /f “Tokens=*” %%a in (‘dir %pf% /ad /s /b’) do (
cacls “%%a”>>%report%
)
Bu konuyla ilgili sorularınızı alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.
Referanslar
–