Como conceder permissão aos usuários para um diretório usando a linha de comandos no Windows?

Como posso conceder permissões a um utilizador numa pasta (Ler, Escrever, modificar) usando a linha de comandos do Windows?

Author: Braiam, 2010-05-28

15 answers

A partir de Vista, cacls está desactualizado. Aqui estão as primeiras linhas de Ajuda:

C:\>cacls
NOTE: Cacls is now deprecated, please use Icacls.

Displays or modifies access control lists (ACLs) of files

Em vez disso, deve utilizar icacls. É assim que concede ao John o controlo total sobre a pasta D:\test e todas as suas subpastas:

C:\>icacls "D:\test" /grant John:(OI)(CI)F /T

De acordo com a documentação do em:

  • F = Controlo Total
  • CI = Contentor herdado - esta bandeira indica que contentores subordinados herdarão este ás.
  • OI = objecto herdar - esta bandeira indica que subordinado os ficheiros herdarão o Ás.
  • /T = Aplicar recursivamente aos ficheiros e sub-pastas existentes. (OI e CI aplicam-se apenas aos ficheiros e sub-pastas novos). Crédito: comentário de @AlexSpence.

Para obter a documentação completa, você pode executar "icacls" sem argumentos ou consulte a documentação da Microsoft aqui e aqui

 327
Author: Călin Darie, 2016-05-03 15:30:06

Também pode usar ICACLS.

Para conceder aos utilizadores grupo controlo total para uma pasta:

>icacls "C:\MyFolder" /grant Users:F

Conceder modificar a permissão aos utilizadores do IIS para C:\MyFolder (Se precisar dos seus IIS tem a capacidade de aceder a ficheiros R/W numa pasta específica):

>icacls "C:\MyFolder" /grant IIS_IUSRS:M

Se você fizer ICACLS /? Você será capaz de ver todas as opções disponíveis.

 61
Author: Vin.X, 2013-03-26 01:37:16

Use cacls comando. Ver informação aqui.

CACLS files /E / p {utilizador}: {permissão}

Onde,

/p : Definir nova autorização

/ e : edite a permissão e mantenha a antiga como está, ou seja, edite a ACL em vez de a substituir.

{utilizador}: nome do utilizador

{permissão}: a permissão pode ser:

R - Read

W-Write

C - Change (write)

F - Cheio controlo

Por exemplo, conceda o controlo Rocky Full (F) com o seguinte comando (escreva na linha de comandos do Windows):

C:> ficheiros de CACL /e / p rocky: f

Leia a ajuda completa escrevendo com o seguinte comando:

C:> CaCl /?

 16
Author: Jorge Ferreira, 2010-05-28 12:01:02

Abra Uma Linha de comandos e execute depois este comando:

icacls "c:\somelocation\of\path" /q /c /t /grant Users:F

F dá acesso total.

/q /c /t aplica as permissões às sub-pastas.

Nota: às vezes" correr como Administrador " vai ajudar.

 13
Author: Sireesh Yarlagadda, 2017-06-29 15:06:26

Eu tento o caminho abaixo e funciona para mim:
1. abrir cmd.exe
2. takeown /R /F *.*
3. icacls * /T /grant [username]:(D)
4. del *.* /S /Q

De modo que os arquivos podem se tornar meu próprio acesso e atribuir Para "Apagar" e então eu posso apagar os arquivos e pastas.

 10
Author: Ray Huang, 2015-07-13 19:00:35
Eu lutei com isso por um tempo e só combinando as respostas neste tópico funcionou para mim (no Windows 10):
1. Abre o cmd ou o PowerShell e vai para a pasta com os ficheiros
2. takeown /R / F .
3. icacls * /T / grant dan: F Boa sorte!
 3
Author: Daniil Shevelev, 2015-12-27 15:08:05

Com um script do Excel vba para fornecer e criar contas. Eu estava precisando conceder permissões de direitos completos para a pasta e subpastas que foram criadas pela ferramenta usando nossa conta x de administradores para o nosso novo usuário.

Os cactos pareciam-se com isto.: cacls \servidor de Ficheiros\utilizadores\utilizador /e /G domínio\utilizador: c Precisava de migrar este código para o Windows 7 e mais além. A minha solução acabou por ser:

Icacls \servidor de Ficheiros\utilizadores\utilizador/subvenção: r Domínio\utilizador: (OI) (CI) F /t

/grant:R - Grants specified user access rights. As permissões substituem as permissões explícitas anteriormente concedidas. Sem: r, As permissões são adicionadas a quaisquer permissões explícitas previamente concedidas

(OI)(CI) - esta pasta, subpastas e ficheiros.

Acesso Total

/t - atravessa todas as subpastas para corresponder aos ficheiros / pastas.

O que isto me deu foi uma pasta neste servidor que o utilizador só podia ver e criar subpastas, que podiam ler e escrever arquivos. Assim como criar novas pastas.

 2
Author: Gus, 2014-04-23 16:38:09

Só para o caso de haver mais alguém que tropece nesta página, se quiser inserir várias permissões no mesmo comando, usei isto:

icacls "c:\TestFolder" /grant:r Test_User:(OI)(CI)(RC,RD,RX)

Repare no texto csv para as várias permissões.

 2
Author: Ads, 2015-03-23 02:06:57
Apesar de a maioria das respostas postadas em resposta à pergunta ter algum mérito, nenhum deles dá uma solução completa. A seguinte é uma solução perfeita:
icacls "c:\folder" /remove:d /grant:r Everyone:(OI)(CI)F /T

Notas:

  1. O comando é aplicado na pasta indicada.

  2. A especificação do utilizador "Todos" define a mais ampla permissão possível, uma vez que inclui cada possível utilizador.

  3. A opção "/ remove: d " elimina qualquer configuração de negação explícita que possa exist, as those override explicit ALLOW settings: a necessary preliminary to creating a new ALLOW setting.

  4. A opção "/ grant " cria uma nova configuração de permissões, uma permissão explícita que substitui (":r") todas e quaisquer configurações explícitas de permissões que possam existir.

  5. O parâmetro " F " (isto é, a permissão criada) torna isto uma concessão de controle total.

  6. O parâmetro" / T " adiciona recursividade, aplicando estas alterações a todos os sub-objectos actuais em o diretório especificado (ou seja, arquivos e subpastas), bem como a própria pasta.

  7. Os parâmetros" (OI)" e "(CI) " também adicionam recursão, aplicando essas mudanças em sub-objetos criados no futuro.

 2
Author: Ed999, 2017-12-15 00:55:53

XCACLS.O VBS é um programa muito poderoso que irá alterar/editar a informação do ACL. c:\windows\system32\cscript.exe xcacils.vbs help retorna todos os switches e opções.

Pode obter a distribuição oficial da página de suporte da Microsoft

 1
Author: g222, 2017-04-17 00:05:50

A criação de Pastas A Granel e a permissão de concessão de licenças funciona usando o script abaixo powershell.

Import-Csv "D:\Scripts\foldernames.csv / foreach-object { $usuario = $_.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: Tem de criar o mesmo nome de utilizador do domínio no ficheiro csv, caso contrário irá obter problemas de permissões

 1
Author: user2934980, 2017-05-25 04:43:58
attrib +r +a +s +h <folder name> <file name> to hide
attrib -r -a -s -h <folder name> <file name> to unhide
 0
Author: Yashwanth, 2011-11-24 10:07:28

Excelente ponto Călin Darie

Eu tinha muitos scripts para usar os cactos e os movia para os icacls. como é que não consegui encontrar um programa para alterar o exemplo de montagem de volumes de raiz: d:\datafolder. Finalmente, compilei o programa em baixo, o qual monta o volume como uma unidade temporária, depois aplica o sec. depois, desmonta-o. É a única maneira que eu encontrei que você pode atualizar a segurança do root mount.

1 obtém a pasta montar o GUID num ficheiro temporário e lê-o para montar o volume como um temp a unidade X: aplica sec e regista as alterações e depois desmonta o Volume apenas a partir da unidade X: para que a pasta montada não seja alterada ou interrompida outra vez, depois a secção aplicada.

Aqui está uma amostra do meu guião:

**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**
 0
Author: HandyMannyHE, 2015-02-03 22:31:00

Eu sou administrador e algum script colocou a permissão" negar " no meu nome em todos os arquivos e subpastas em um diretório. Executar o comando {[[0]} não funcionou, porque parecia que não removeu o direito de "negar" do meu nome desta lista.

A única coisa que funcionou para mim foi reiniciar todas as permissões com o comando icacls "D:\test" /reset /T.

 0
Author: B. Zoli, 2016-02-18 15:27:16
Isto foi o que funcionou para mim.
  1. Abra manualmente a pasta para a qual o acesso é negado.

  2. Seleccione o ficheiro executável/aplicação nessa pasta.

  3. Carregue com o botão direito e vá para as propriedades -> compatibilidade

  4. Agora Veja o nível de privilégio e verifique para Executar como administrador

  5. Carregue em mudar a configuração para todos utilizadores

O problema está resolvido agora.
 -4
Author: MAYUR, 2013-03-31 05:57:42