Respuestas:
A partir de Vista, cacls
está en desuso. Aquí están las primeras líneas de ayuda:
C:\>cacls
NOTE: Cacls is now deprecated, please use Icacls.
Displays or modifies access control lists (ACLs) of files
Deberías usar icacls
en su lugar. Así es como le otorga a John el control total sobre la D:\test
carpeta y todas sus subcarpetas:
C:\>icacls "D:\test" /grant John:(OI)(CI)F /T
Según la documentación de MS:
F
= Control totalCI
= Herencia de contenedor: este indicador indica que los contenedores subordinados heredarán esta ACE.OI
= Heredar objeto: este indicador indica que los archivos subordinados heredarán la ACE./T
= Aplicar de forma recursiva a archivos y subcarpetas existentes. ( OI
y CI
solo se aplica a archivos y subcarpetas nuevos). Crédito: comentario de @AlexSpence.Para obtener la documentación completa, puede ejecutar " icacls
" sin argumentos o ver la documentación de Microsoft aquí y aquí
C:\>icacls "D:\test" /grant "John:(OI)(CI)F" /T
También puedes usar ICACLS.
Para otorgar el control total del grupo de usuarios a una carpeta:
>icacls "C:\MyFolder" /grant Users:F
Para otorgar permiso de modificación a los usuarios de IIS C:\MyFolder
(si necesita que su IIS tenga capacidad para R / W archivos en una carpeta específica):
>icacls "C:\MyFolder" /grant IIS_IUSRS:M
Si haces ICACLS /? Podrá ver todas las opciones disponibles.
cacls
se ha ido, es aún más razón para usar icacls .
/grant Users:(OI)(CI)F
usó
Users
con algo más o NO? Segúnicacls "C:\MyFolder" /grant Users:F
Abra un símbolo del sistema, luego ejecute este comando:
icacls "c:\somelocation\of\path" /q /c /t /grant Users:F
F
da acceso completo.
/q /c /t
aplica los permisos a las subcarpetas.
Nota: A veces, "Ejecutar como administrador" ayudará.
Usa el cacls
comando. Ver información aquí .
Archivos CACLS / e / p {NOMBRE DE USUARIO}: {PERMISO}
Dónde,
/ p: establecer un nuevo permiso
/ e: Editar permiso y mantuvo el permiso anterior tal como está, es decir, editar ACL en lugar de reemplazarlo.
{USERNAME}: nombre del usuario
{PERMISO}: El permiso puede ser:
R - Leer
W - Escribir
C - Cambiar (escribir)
F - Control total
Por ejemplo, otorgue el control Rocky Full (F) con el siguiente comando (escriba en el símbolo del sistema de Windows):
C:> archivos CACLS / e / p rocky: f
Lea la ayuda completa escribiendo el siguiente comando:
C:> cacls /?
cacls
es relevante; todavía está disponible en Windows 10
; Microsoft despreciaría cmd.exe
también a Powershell.
cmd.exe
no está en desuso y es probable que no lo sea, por lo que no es un punto a favor, sino icacls
todo lo contrario.
cacls.exe
. Tampoco mencioné que cmd.exe
ya está en desuso. Creo que las personas deberían al menos ser conscientes de su disponibilidad en versiones superiores, incluso solo por compatibilidad con versiones anteriores o por cualquier otro motivo.
Permisos corruptos: recuperar el acceso a una carpeta y sus subobjetos
Aunque la mayoría de las respuestas publicadas en respuesta a la pregunta tienen algún mérito, en mi humilde opinión, ninguna de ellas ofrece una solución completa. La siguiente (podría ser) una solución perfecta para Windows 7 si está bloqueado de una carpeta por la configuración de permisos corruptos:
icacls "c:\folder" /remove:d /grant:r Everyone:(OI)(CI)F /T
Para Windows 10, el usuario / SID debe especificarse después de la /remove:d
opción:
icacls "c:\folder" /remove:d Everyone /grant:r Everyone:(OI)(CI)F /T
.
Notas :
El comando se aplica al directorio especificado.
Especificar el usuario "Todos" establece el permiso más amplio posible, ya que incluye a todos los usuarios posibles.
La opción "/ remove: d" elimina cualquier configuración explícita de DENY que pueda existir, ya que anula la configuración explícita de ALLOW: un preliminar necesario para crear una nueva configuración de ALLOW. Esto es solo una precaución, ya que a menudo no existe una configuración DENY, pero es mejor prevenir que curar.
La opción "/ grant" crea una nueva configuración PERMITIR, un permiso explícito que reemplaza (": r") cualquiera y todas las configuraciones PERMITIDAS explícitas que puedan existir.
El parámetro "F" (es decir, el permiso creado) hace que esto otorgue el control COMPLETO.
El parámetro "/ T" agrega recursividad, aplicando estos cambios a todos los subobjetos actuales en el directorio especificado (es decir, archivos y subcarpetas), así como a la carpeta misma.
Los parámetros "(OI)" y "(CI)" también agregan recursividad, aplicando estos cambios a los subobjetos creados posteriormente.
.
ADENDA (10/02/2019) -
La línea de comandos de Windows 10 anterior me fue sugerida amablemente hoy, así que aquí está. No tengo Windows 10 para probarlo, pero pruébelo si lo tiene (y luego, ¿podrá publicar un comentario?) continuación).
El cambio solo se refiere a eliminar la configuración DENY como primer paso. Es posible que no haya ninguna configuración DENY presente, por lo que esa opción podría no hacer ninguna diferencia. Tengo entendido que, en Windows 7, no necesita especificar un usuario después de / eliminar: d, ¡ pero podría estar equivocado al respecto!
.
ADENDA (21/11/2019) -
El usuario astark recomienda reemplazar Todos con el término * S-1-1-0 para que el comando sea independiente del idioma. Solo tengo una instalación de Windows en inglés, por lo que no puedo probar esta propuesta, pero parece razonable.
Invalid parameter "/remove:d"
Luché con esto por un tiempo y sólo la combinación de las respuestas en este tema trabajado para mí (en Windows 10):
1. Abrir cmd o PowerShell y vaya a la carpeta con los archivos
2. takeown / R / F .
3. icacls * / T / grant dan: F
¡Buena suerte!
En caso de que haya alguien más que tropiece en esta página, si desea agrupar varios permisos en un solo comando, utilicé esto:
icacls "c:\TestFolder" /grant:r Test_User:(OI)(CI)(RC,RD,RX)
Tenga en cuenta la cadena csv para los distintos permisos.
Con un script Excel vba para aprovisionar y crear cuentas. Necesitaba otorgar permisos de derechos completos a la carpeta y subcarpetas que fueron creadas por la herramienta usando la cuenta 'x' de nuestros administradores para nuestro nuevo usuario.
cacls se parecía a esto: cacls \ FileServer \ Users \ Username / e / g Domain \ Username: C
Necesitaba migrar este código a Windows 7 y más allá. Mi solución resultó ser:
icacls \ FileServer \ Users \ Nombre de usuario / concesión: r Dominio \ Nombre de usuario: (OI) (CI) F / t
/ grant: r: otorga derechos de acceso de usuario especificados. Los permisos reemplazan los permisos explícitos previamente otorgados. Sin: r, los permisos se agregan a cualquier permiso explícito previamente otorgado
(OI) (CI): esta carpeta, subcarpetas y archivos.
F - Acceso completo
/ t: recorre todas las subcarpetas para que coincidan con los archivos / directorios.
Lo que esto me dio fue una carpeta en este servidor en la que el usuario solo podía ver esa carpeta y crear subcarpetas, que podían leer y escribir archivos. Además de crear nuevas carpetas.
XCACLS.VBS es un script muy poderoso que cambiará / editará la información de ACL. La ayuda de c: \ windows \ system32 \ cscript.exe xcacls.vbs devuelve todos los modificadores y opciones.
Puede obtener la distribución oficial desde la página de soporte de Microsoft
XCACLS.VBS
se puede encontrar?
La creación de carpetas masivas y el permiso de concesión me funcionan utilizando el siguiente script de PowerShell.
Import-Csv "D:\Scripts\foldernames.csv" | foreach-object {
$username = $_.foldername
# foldername is the header of csv file
$domain = “example.com”
$folder= "D:\Users"
$domainusername = $domain+“\”+$username
New-Item $folder\$username –Type Directory
Get-Acl $folder\$username
$acl = Get-Acl $folder\$username
$acl.SetAccessRuleProtection($True, $False)
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("Administrators","FullControl", "ContainerInherit, ObjectInherit", "None", "Allow")
$acl.AddAccessRule($rule)
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("SYSTEM","FullControl", "ContainerInherit, ObjectInherit", "None", "Allow")
$acl.AddAccessRule($rule)
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule("$domain\Domain Admins","Read", "ContainerInherit, ObjectInherit", "None", "Allow")
$acl.AddAccessRule($rule)
$rule = New-Object System.Security.AccessControl.FileSystemAccessRule($domainusername,"Modify", "ContainerInherit, ObjectInherit", "None", "Allow")
$acl.AddAccessRule($rule)
Set-Acl $folder\$username $acl
}
Nota: debe crear el mismo nombre de usuario de dominio en el archivo csv, de lo contrario obtendrá problemas de permisos
attrib +r +a +s +h <folder name> <file name> to hide
attrib -r -a -s -h <folder name> <file name> to unhide
excelente punto Călin Darie
Tenía muchas secuencias de comandos para usar cacls. Las moví a icacls. Sin embargo, no pude encontrar una secuencia de comandos para cambiar el volumen de montaje raíz ejemplo: d: \ datafolder. Finalmente creé el script a continuación, que monta el volumen como una unidad temporal y luego aplica seg. Luego lo desmonta. Es la única forma en que descubrí que puede actualizar la seguridad del montaje raíz.
1 obtiene el GUID de montaje de la carpeta en un archivo temporal y luego lee el GUID para montar el volumen como una unidad temporal X: aplica seg y registra los cambios y luego desmonta el volumen solo de la unidad X: para que la carpeta montada no se altere o interrumpa entonces el sec aplicado.
Aquí hay una muestra de mi script:
**mountvol "d:\%1" /L >tempDrive.temp && FOR /f "tokens=*" %%I IN (tempDrive.temp) DO mountvol X: %%I
D:\tools\security\icacls.exe %~2 /grant domain\group:(OI)(CI)F /T /C >>%~1LUNsec-%TDWEEK%-%TMONTH%-%TDAY%-%TYEAR%-%THOUR%-%TMINUTE%-%TAM%.txt
if exist x:\*.* mountvol X: /d**
Soy Administrador y algunas secuencias de comandos colocaron el permiso "Denegar" en mi nombre en todos los archivos y subcarpetas en un directorio. Ejecutar el icacls "D:\test" /grant John:(OI)(CI)F /T
comando no funcionó, porque parecía que no eliminaba el "Denegar" directamente de mi nombre de esta lista.
Lo único que funcionó para mí es restablecer todos los permisos con el icacls "D:\test" /reset /T
comando.
en windows 10 trabajando sin "c:>" y ">"
Por ejemplo:
F = Full Control
/e : Edit permission and kept old permission
/p : Set new permission
cacls "ruta de archivo o carpeta" / e / p Nombre de usuario: F
(también esto corrige el error 2502 y 2503)
Cacls "C: \ Windows \ Temp" / e / p Nombre de usuario: F
Esto es lo que funcionó para mí:
Abra manualmente la carpeta para la que se deniega el acceso.
Seleccione el archivo ejecutable / aplicación en esa carpeta.
Haga clic derecho sobre él y vaya a Properties->Compatibility
Ahora vea el Privilege Levely verifíqueloRun As Administrator
Haga clic en Change Settings for all users.
El problema está resuelto ahora.