La primera vez que intenté compartir una carpeta entre sistemas fue mucho antes de tocar PowerShell en serio: monté una máquina virtual con Linux en VirtualBox y traté de crear una carpeta compartida entre esa VM y mi Windows anfitrión. Me llevó una semana entera. No porque el concepto fuera complicado, sino porque me equivocaba constantemente con los comandos — un parámetro mal puesto aquí, una ruta mal escrita allá, y la carpeta seguía sin aparecer donde debía.
Esa frustración de “el comando existe, pero no consigo que haga lo que quiero” es exactamente la sensación que da la primera vez que alguien se enfrenta a la gestión de permisos de recursos compartidos en Windows con PowerShell — solo que aquí el problema no es la conexión entre sistemas, sino decidir quién puede entrar y qué puede hacer una vez dentro.
El paso que falta después de compartir una carpeta
En el artículo sobre compartir carpetas con PowerShell y SMB vimos cómo crear el recurso compartido en sí con New-SmbShare. Pero crear el recurso es solo el primer paso — inmediatamente después viene la pregunta que de verdad importa en un entorno real: ¿quién tiene permiso para acceder, y con qué nivel?
Ahí es donde entra Grant-SmbShareAccess.
Qué hace Grant-SmbShareAccess
Este cmdlet concede permisos de acceso a un recurso compartido ya existente, a un usuario o grupo concreto, con un nivel de permiso específico. La sintaxis básica:
Grant-SmbShareAccess -Name "ventas" -AccountName "DOMINIO\jperez" -AccessRight Change -Force
Cada parámetro tiene un papel claro:
| Parámetro | Qué indica |
|---|---|
-Name | El nombre del recurso compartido ya creado con New-SmbShare |
-AccountName | El usuario o grupo al que le das acceso |
-AccessRight | El nivel de permiso: Read, Change o Full |
-Force | Evita que PowerShell pida confirmación manual en cada ejecución |
Los tres niveles de permiso, sin confundirlos
Esta es la parte donde más gente se equivoca al principio, porque los nombres no siempre son intuitivos:
| Nivel | Qué permite |
|---|---|
| Read | Ver y abrir archivos, pero no modificarlos ni crear nuevos |
| Change | Todo lo de Read, además de modificar, crear y borrar archivos |
| Full | Todo lo de Change, además de cambiar los propios permisos del recurso |
Full no es “más acceso a los archivos” que Change en cuanto a lectura o escritura — la diferencia real es que Full permite tocar la configuración de permisos en sí, algo que casi nunca quieres dar salvo a administradores.
Revisar quién tiene acceso ahora mismo
Antes de conceder nada, conviene saber qué hay ya configurado. Para eso está el cmdlet hermano:
Get-SmbShareAccess -Name "ventas"
Esto lista todos los usuarios y grupos con acceso al recurso, junto con su nivel de permiso — el punto de partida obligatorio antes de tocar nada, para no duplicar ni pisar permisos que ya existían.
Revocar acceso: el cmdlet opuesto
Igual que se concede acceso, se puede quitar con:
Revoke-SmbShareAccess -Name "ventas" -AccountName "DOMINIO\jperez" -Force
Es habitual necesitarlo cuando alguien cambia de departamento o deja la empresa — el recurso sigue existiendo, pero esa persona concreta ya no debería tener acceso.
El error que se comete constantemente: confundir esto con los permisos NTFS
Aquí viene el matiz más importante de todo el tema, y el que se nos escapa a casi todo el mundo al empezar: Grant-SmbShareAccess gestiona los permisos de compartición (los que se aplican solo cuando accedes por red), pero existe una segunda capa completamente distinta — los permisos NTFS de la propia carpeta — que se aplican siempre, tanto en red como en local. Si das Full con Grant-SmbShareAccess pero los permisos NTFS de la carpeta son más restrictivos, gana la restricción de NTFS. Este tema merece su propio desarrollo, y lo tienes en detalle en NTFS vs permisos de compartición.
Automatizar permisos para varios usuarios a la vez
Igual que en el artículo de creación de usuarios en bloque, esto se puede automatizar cuando hay que dar el mismo acceso a varias personas:
$usuarios = @("DOMINIO\ana", "DOMINIO\luis", "DOMINIO\marta")
foreach ($usuario in $usuarios) {
Grant-SmbShareAccess -Name "ventas" -AccountName $usuario -AccessRight Change -Force
}
Pon a prueba lo que has entendido
Le das AccessRight Full a un usuario con Grant-SmbShareAccess, pero los permisos NTFS de la carpeta son de solo lectura para ese usuario. ¿Qué puede hacer finalmente?
Resumen rápido
Grant-SmbShareAccessconcede acceso a un recurso compartido ya creado, con tres niveles: Read, Change y Full.Get-SmbShareAccessconsulta quién tiene acceso ahora;Revoke-SmbShareAccesslo retira.Fullno da más acceso a los archivos queChange— la diferencia es que permite tocar los propios permisos del recurso.- Este permiso es solo una de las dos capas: los permisos NTFS de la carpeta se aplican siempre y pueden ser más restrictivos, ganando sobre lo que diga aquí.
Sigue con la serie: si aún no lo has visto, empieza por cómo compartir carpetas con PowerShell y SMB, y para entender por qué a veces el acceso no cuadra aunque los permisos parezcan correctos, sigue con NTFS vs permisos de compartición.