Skip to content

Gestion Permisos

Comandos y cmdlets de gestión de permisos

Section titled “Comandos y cmdlets de gestión de permisos”

Quién puede leer, escribir o tomar posesión de un archivo/carpeta. En CMD: icacls y takeown. En PowerShell: objetos ACL con Get-Acl / Set-Acl.


ComandoQué haceEjemplo
icacls <ruta>Muestra ACL (permisos)icacls C:\Proyecto
icacls <ruta> /grant <user>:(perms)Concede permisosicacls C:\Proyecto /grant Juan:(R,W)
icacls <ruta> /deny <user>:(perms)Deniega permisos (gana sobre grant)icacls C:\Proyecto /deny Juan:(W)
icacls <ruta> /remove <user>Quita entradas de un usuarioicacls C:\Proyecto /remove Juan
icacls <ruta> /resetRestaura ACL heredadas por defectoicacls C:\Proyecto /reset /T
icacls <ruta> /inheritance:e|d|rActiva, desactiva o quita herenciaicacls C:\Proyecto /inheritance:d
icacls <ruta> /setowner <user>Cambia el propietarioicacls C:\Proyecto /setowner Juan
takeown /f <ruta>Toma posesión del objetotakeown /f C:\Proyecto\archivo.txt
takeown /f <ruta> /r /d yToma posesión recursivatakeown /f C:\Proyecto /r /d y
caclsLegacy (mejor usar icacls)cacls C:\Proyecto

Permisos frecuentes en icacls: F (full), M (modify), RX (read+execute), R (read), W (write).


PowerShell — Cmdlets de Gestión de Permisos

Section titled “PowerShell — Cmdlets de Gestión de Permisos”
ComandoQué haceEjemplo
Get-AclObtiene el objeto ACLGet-Acl C:\Proyecto
Get-Acl | Format-ListVista detallada de reglasGet-Acl C:\Proyecto | fl
Set-AclAplica un ACL modificadoSet-Acl C:\Proyecto $acl
(Get-Acl).AccessLista reglas de acceso(Get-Acl C:\Proyecto).Access
(Get-Acl).OwnerMuestra el propietario(Get-Acl C:\Proyecto).Owner

Para crear una regla nueva hace falta FileSystemAccessRule (ver ejemplo abajo).


Terminal window
icacls "C:\Proyecto" /grant Juan:(R,W)
takeown /f "C:\Proyecto\archivo.txt"
icacls "C:\Proyecto\archivo.txt" /grant %USERNAME%:F
Terminal window
$acl = Get-Acl "C:\Proyecto"
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("Juan","Modify","Allow")
$acl.AddAccessRule($rule)
Set-Acl "C:\Proyecto" $acl
Get-Acl "C:\Proyecto" | Select-Object Path, Owner