elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  sacar permisos de un share
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: sacar permisos de un share  (Leído 3,270 veces)
pabluria

Desconectado Desconectado

Mensajes: 7


Ver Perfil
sacar permisos de un share
« en: 14 Junio 2011, 23:06 pm »

Bunenas tardes amigos:

me darian una mano para hacer que este script sea recursivo y que busque en todas las carpetas.

un abrazo y como siempre mil gracias!!!

Option Explicit
 
Const SE_DACL_PRESENT = &h4
Const ACCESS_ALLOWED_ACE_TYPE = &h0
Const ACCESS_DENIED_ACE_TYPE  = &h1
Const FILE_ALL_ACCESS = &h1f01ff
Const FOLDER_ADD_SUBDIRECTORY = &h000004
Const FILE_DELETE = &h010000
Const FILE_DELETE_CHILD = &h000040
Const FOLDER_TRAVERSE = &h000020
Const FILE_READ_ATTRIBUTES = &h000080
Const FILE_READ_CONTROL = &h020000
Const FOLDER_LIST_DIRECTORY = &h000001
Const FILE_READ_EA = &h000008
Const FILE_SYNCHRONIZE = &h100000
Const FILE_WRITE_ATTRIBUTES = &h000100
Const FILE_WRITE_DAC = &h040000
Const FOLDER_ADD_FILE = &h000002
Const FILE_WRITE_EA = &h000010
Const FILE_WRITE_OWNER = &h080000
Const WBEM_RETURN_IMMEDIATELY = &h10
Const WBEM_FORWARD_ONLY = &h20
 
Dim objWMIService, objItem
Dim strComputer
Dim arrComputers
Dim colItems
 
Sub ReadDescriptor(strPath)
        Dim objFolderSecuritySettings, objSD, objACE
        Dim arrACEs
        Dim intControlFlags
       
        Set objFolderSecuritySettings = objWMIService.Get("Win32_LogicalFileSecuritySetting='" & strPath & "'")
        objFolderSecuritySettings.GetSecurityDescriptor objSD
       
        intControlFlags = objSD.ControlFlags
       
                If intControlFlags AND SE_DACL_PRESENT Then
                        arrACEs = objSD.DACL
                For Each objACE in arrACEs
                        WScript.StdOut.Write  "\" & objACE.Trustee.Domain & "\" & objACE.Trustee.Name

                If objACE.AccessMask AND FILE_ALL_ACCESS Then
                        WScript.StdOut.Write " FILE_ALL_ACCESS "   
         End If
                If objACE.AccessMask AND FOLDER_ADD_SUBDIRECTORY Then
                         WScript.StdOut.Write "FOLDER_ADD_SUBDIRECTORY "
                End If
                If objACE.AccessMask AND FILE_DELETE Then                       
         WScript.StdOut.Write "FILE_DELETE "                 
      End If               
      If objACE.AccessMask AND FILE_DELETE_CHILD Then                       
         WScript.StdOut.Write "FILE_DELETE_CHILD "                 
      End If               
      If objACE.AccessMask AND FOLDER_TRAVERSE Then                       
         WScript.StdOut.Write "FOLDER_TRAVERSE "
                End If
                If objACE.AccessMask AND FILE_READ_ATTRIBUTES Then
                        WScript.StdOut.Write  "FILE_READ_ATTRIBUTES "
                End If
                If objACE.AccessMask AND FILE_READ_CONTROL Then
                        WScript.StdOut.Write "FILE_READ_CONTROL "
                End If
                If objACE.AccessMask AND FOLDER_LIST_DIRECTORY Then
                        WScript.StdOut.Write "FOLDER_LIST_DIRECTORY "
                End If
                If objACE.AccessMask AND FILE_READ_EA Then
                        WScript.StdOut.Write "FILE_READ_EA "
                End If
                If objACE.AccessMask AND FILE_SYNCHRONIZE Then
                        WScript.StdOut.Write "FILE_SYNCHRONIZE "
                End If
                If objACE.AccessMask AND FILE_WRITE_ATTRIBUTES Then
                        WScript.StdOut.Write"FILE_WRITE_ATTRIBUTES "
                End If
                If objACE.AccessMask AND FILE_WRITE_DAC Then
                        WScript.StdOut.Write "FILE_WRITE_DAC "
                End If
                If objACE.AccessMask AND FOLDER_ADD_FILE Then
                        WScript.StdOut.Write "FOLDER_ADD_FILE "
                End If
                If objACE.AccessMask AND FILE_WRITE_EA Then
                        WScript.StdOut.Write "FILE_WRITE_EA "
                End If
                If objACE.AccessMask AND FILE_WRITE_OWNER Then
                        WScript.StdOut.Write "FILE_WRITE_OWNER "
                End If
                next
                Else
                        WScript.StdOut.Write "No DACL present in security descriptor" & vbCrLf
                End If
         
End Sub
 
'
' Main Code
'
Const INPUT_FILE_NAME = "C:\tools\Computers.txt"
Const FOR_READING = 1
Dim objFSO
Dim objFile
        Set objFSO = CreateObject("Scripting.FileSystemObject")
        Set objFile = objFSO.OpenTextFile(INPUT_FILE_NAME, FOR_READING)
                strComputer = objFile.ReadAll
                objFile.Close
                arrComputers = Split(strComputer, vbCrLf)
                        For Each strComputer In arrComputers                       
                        WScript.Echo strComputer
                                On Error Resume Next
                                Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
                                Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_Share WHERE Type=0", "WQL",_
                                WBEM_RETURN_IMMEDIATELY + WBEM_FORWARD_ONLY)
                               
                        For Each objItem in colItems
                                WScript.StdOut.Write objItem.Path & " "
                                ReadDescriptor objItem.Path
            WScript.Echo
                        Next
                        Set objWMIService = Nothing
                        On Error Goto 0
                Next


En línea

pabluria

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: sacar permisos de un share
« Respuesta #1 en: 7 Julio 2011, 18:55 pm »

buenas gente:
encontre uno mejor
pero me da el siguiente error.

C:\acl.vbs(86, 2) SWbemServicesEx: Ruta de acceso del objeto no válida

me dan una mano?
gracias!!!

Código
  1. Option Explicit
  2.  
  3. Dim str_CarpetaOrigen    
  4. Dim obj_ServicioWMI        
  5. Dim obj_EntradasDeSeguridadDeCarpeta
  6. Dim obj_DescriptorDeSeguridad    
  7. Dim int_Devolucion                
  8. Dim int_FlagsDeControl            
  9. Dim arr_ACEs                        
  10. Dim obj_ACE                      
  11. Dim obj_FileSystemObject            
  12.  
  13.  
  14. Const SE_DACL_PRESENT = &h4
  15. Const ACCESS_ALLOWED_ACE_TYPE = &h0
  16. Const ACCESS_DENIED_ACE_TYPE  = &h1
  17. Const FILE_ALL_ACCESS         = &h1f01ff
  18. Const FOLDER_ADD_SUBDIRECTORY = &h000004
  19. Const FILE_DELETE             = &h010000
  20. Const FILE_DELETE_CHILD       = &h000040
  21. Const FOLDER_TRAVERSE         = &h000020
  22. Const FILE_READ_ATTRIBUTES    = &h000080
  23. Const FILE_READ_CONTROL       = &h020000
  24. Const FOLDER_LIST_DIRECTORY   = &h000001
  25. Const FILE_READ_EA            = &h000008
  26. Const FILE_SYNCHRONIZE        = &h100000
  27. Const FILE_WRITE_ATTRIBUTES   = &h000100
  28. Const FILE_WRITE_DAC          = &h040000
  29. Const FOLDER_ADD_FILE         = &h000002
  30. Const FILE_WRITE_EA           = &h000010
  31. Const FILE_WRITE_OWNER        = &h080000
  32. Const WBEM_RETURN_IMMEDIATELY = &h10
  33. Const WBEM_FORWARD_ONLY = &h20
  34.  
  35.  
  36. 'la carpea que pasamos como parametro, sino la actual
  37. If Wscript.Arguments.Count = 0 Then
  38.  
  39.    str_CarpetaOrigen = "."
  40.  
  41. Else
  42.  
  43.    str_CarpetaOrigen = Wscript.Arguments(0)
  44.  
  45. End If
  46.  
  47. 'Creamos el objeto FileSystem
  48. Set obj_FileSystemObject = CreateObject("Scripting.FileSystemObject")
  49.  
  50. 'Llamamos a la rutina que obtiene las ACLs
  51. Call s_Muestra_ACLs(obj_FileSystemObject.GetFolder(str_CarpetaOrigen))
  52.  
  53. Sub s_Muestra_ACLs(obj_Carpeta)
  54.  
  55.    Dim obj_SubCarpeta 'Objeto que albergará cada carpeta contenida en la
  56.                    'carpeta obj_Carpeta
  57.  
  58.    'ruta de la carpeta en la que estamos
  59. WScript.StdOut.Write  vbCrLf & obj_Carpeta.Path
  60.  
  61. 'Creamos un objeto del servicio WMI
  62. Set obj_ServicioWMI = GetObject("winmgmts:")
  63.  
  64. 'Creamos un objeto con las entradas de seguridad de la carpeta
  65. Set obj_EntradasDeSeguridadDeCarpeta = _
  66.                obj_ServicioWMI.Get _
  67.       ( _
  68.        "Win32_LogicalFileSecuritySetting='" & _
  69.     obj_Carpeta.Path & "'" _
  70.     )
  71.  
  72. 'Creamos un objeto descriptor de seguridad
  73. int_Devolucion = _
  74.         obj_EntradasDeSeguridadDeCarpeta.GetSecurityDescriptor _
  75.                        (obj_DescriptorDeSeguridad)
  76.  
  77. 'Almacenamos los flags de control del descriptor de seguridad
  78. int_FlagsDeControl = obj_DescriptorDeSeguridad.ControlFlags
  79.  
  80. 'revisamos los flags
  81. If (int_FlagsDeControl AND SE_DACL_PRESENT) _
  82.           = SE_DACL_PRESENT Then
  83.    arr_ACEs = obj_DescriptorDeSeguridad.DACL
  84.  
  85.    For Each obj_ACE in arr_ACEs
  86.  
  87.        WScript.StdOut.Write "\" & obj_ACE.Trustee.Domain & "\" & obj_ACE.Trustee.Name & " "
  88.  
  89.        If (obj_ACE.AceType = ACCESS_ALLOWED_ACE_TYPE) _
  90.           = ACCESS_ALLOWED_ACE_TYPE Then
  91.            WScript.StdOut.Write "P: "
  92.  
  93.        ElseIf (obj_ACE.AceType = ACCESS_DENIED_ACE_TYPE) _
  94.           = ACCESS_DENIED_ACE_TYPE Then
  95.  
  96.            WScript.StdOut.Write "D: "
  97.  
  98.        End If
  99.  
  100.        If (obj_ACE.AccessMask AND FILE_ALL_ACCESS) _
  101.           = FILE_ALL_ACCESS Then
  102.  
  103.            WScript.StdOut.Write "FAA "
  104.  
  105.        End If
  106.  
  107.        If (obj_ACE.AccessMask AND FOLDER_ADD_SUBDIRECTORY) _
  108.           = FOLDER_ADD_SUBDIRECTORY Then
  109.  
  110.            WScript.StdOut.Write "FAS "
  111.  
  112.        End If
  113.  
  114.        If (obj_ACE.AccessMask AND FILE_DELETE) _
  115.           = FILE_DELETE Then
  116.  
  117.            WScript.StdOut.Write "FD "
  118.  
  119.        End If
  120.  
  121.        If (obj_ACE.AccessMask AND FILE_DELETE_CHILD) _
  122.           = FILE_DELETE_CHILD Then
  123.  
  124.            WScript.StdOut.Write "FDC "
  125.  
  126.        End If
  127.  
  128.        If (obj_ACE.AccessMask AND FOLDER_TRAVERSE) _
  129.           = FOLDER_TRAVERSE Then
  130.  
  131.            WScript.StdOut.Write "FT "
  132.  
  133.        End If
  134.  
  135.        If (obj_ACE.AccessMask AND FILE_READ_ATTRIBUTES) _
  136.           = FILE_READ_ATTRIBUTES Then
  137.  
  138.            WScript.StdOut.Write "FRA "
  139.  
  140.        End If
  141.  
  142.        If (obj_ACE.AccessMask AND FILE_READ_CONTROL) _
  143.           = FILE_READ_CONTROL Then
  144.  
  145.            WScript.StdOut.Write "FRC "
  146.  
  147.        End If
  148.  
  149.        If (obj_ACE.AccessMask AND FOLDER_LIST_DIRECTORY) _
  150.           = FOLDER_LIST_DIRECTORY Then
  151.  
  152.            WScript.StdOut.Write "FLD "
  153.  
  154.        End If
  155.  
  156.        If (obj_ACE.AccessMask AND FILE_READ_EA) _
  157.           = FILE_READ_EA Then
  158.  
  159.            WScript.StdOut.Write "FREA "
  160.  
  161.        End If
  162.  
  163.        If (obj_ACE.AccessMask AND FILE_SYNCHRONIZE) _
  164.           = FILE_SYNCHRONIZE Then
  165.  
  166.            WScript.StdOut.Write "FS "
  167.  
  168.        End If
  169.  
  170.        If (obj_ACE.AccessMask AND FILE_WRITE_ATTRIBUTES) _
  171.           = FILE_WRITE_ATTRIBUTES Then
  172.  
  173.            WScript.StdOut.Write "FWA "
  174.  
  175.        End If
  176.  
  177.        If (obj_ACE.AccessMask AND FILE_WRITE_DAC) _
  178.           = FILE_WRITE_DAC Then
  179.  
  180.            WScript.StdOut.Write "FWD "
  181.  
  182.        End If
  183.  
  184.        If (obj_ACE.AccessMask AND FOLDER_ADD_FILE) _
  185.           = FOLDER_ADD_FILE Then
  186.  
  187.            WScript.StdOut.Write "FAF "
  188.  
  189.        End If
  190.  
  191.        If (obj_ACE.AccessMask AND FILE_WRITE_EA) _
  192.           = FILE_WRITE_EA Then
  193.  
  194.            WScript.StdOut.Write "FWEA "
  195.  
  196.        End If
  197.  
  198.        If (obj_ACE.AccessMask AND FILE_WRITE_OWNER) _
  199.           = FILE_WRITE_OWNER Then
  200.  
  201.            WScript.StdOut.Write "FWO "
  202.  
  203.        End If
  204.  
  205.    Next
  206.  
  207. Else
  208.  
  209.    WScript.StdOut.Write "NACL"
  210.  
  211. End If
  212.  
  213. 'Realizamos una llamada recursiva en cada una de las carpetas contenidas en la carpeta recibida como parámetro.
  214. For Each obj_SubCarpeta In obj_Carpeta.SubFolders
  215.  
  216.     Call s_Muestra_ACLs(obj_Subcarpeta)
  217.  
  218. Next
  219.  
  220. End Sub


« Última modificación: 7 Julio 2011, 20:15 pm por pabluria » En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: sacar permisos de un share
« Respuesta #2 en: 7 Julio 2011, 19:49 pm »

¿Que busque qué?
¿Lenguaje?
¿Por qué no utilizas las etiquetas de código?
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
pabluria

Desconectado Desconectado

Mensajes: 7


Ver Perfil
Re: sacar permisos de un share
« Respuesta #3 en: 7 Julio 2011, 20:13 pm »

perdon. es vbs, el script me da los permisos de una carpeta y sus subdirectorios, el error me lo da en un directorio que tiene "." "C:\Windows\CSC\v2.0.6" para el script.
Muchas gracias!!!
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda con share de TUENTI...
Chats; IRC y Messengers
777Rubenix777 0 2,073 Último mensaje 9 Noviembre 2010, 17:05 pm
por 777Rubenix777
ayuda con el comando net share
Redes
chopy1989 3 9,839 Último mensaje 9 Septiembre 2016, 00:09 am
por OliviaU
problemas con usr/share/themes
GNU/Linux
barnix456 4 4,450 Último mensaje 16 Diciembre 2012, 23:11 pm
por peternash
share de disco qué es? ayuda
Windows
ElMag0 2 1,455 Último mensaje 27 Mayo 2014, 08:24 am
por ElMag0
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines