Respostas:
A partir do Vista, cacls
está obsoleta. Aqui estão as duas primeiras linhas de ajuda:
C:\>cacls
NOTE: Cacls is now deprecated, please use Icacls.
Displays or modifies access control lists (ACLs) of files
Você deve usar em seu icacls
lugar. É assim que você concede a John controle total sobre a D:\test
pasta e todas as suas subpastas:
C:\>icacls "D:\test" /grant John:(OI)(CI)F /T
De acordo com a documentação da MS:
F
= Controle totalCI
= Herança de contêiner - esse sinalizador indica que os contêineres subordinados herdarão essa ACE.OI
= Herança de objeto - Este sinalizador indica que os arquivos subordinados herdarão o ACE./T
= Aplicar recursivamente aos arquivos e subpastas existentes. ( OI
e se CI
aplica apenas a novos arquivos e subpastas). Crédito: comentário de @AlexSpence.Para documentação completa, você pode executar " icacls
" sem argumentos ou consulte a documentação da Microsoft aqui e aqui
C:\>icacls "D:\test" /grant "John:(OI)(CI)F" /T
Você também pode usar o ICACLS.
Para conceder controle total ao grupo Usuários a uma pasta:
>icacls "C:\MyFolder" /grant Users:F
Para conceder permissão de modificação aos usuários do IIS para C:\MyFolder
(se você precisar que o seu IIS tenha a capacidade de arquivos R / W em uma pasta específica):
>icacls "C:\MyFolder" /grant IIS_IUSRS:M
Se você faz o ICACLS /? você poderá ver todas as opções disponíveis.
cacls
se foi, é ainda mais motivo para usar icacls .
/grant Users:(OI)(CI)F
usado
Users
por outra coisa ou NÃO? De acordo comicacls "C:\MyFolder" /grant Users:F
Abra um prompt de comando e execute 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 subpastas.
Nota: Às vezes, "Executar como administrador" ajudará.
Use o cacls
comando Veja informações aqui .
Arquivos CACLS / e / p {USERNAME}: {PERMISSION}
Onde,
/ p: define nova permissão
/ e: Edite a permissão e mantenha a permissão antiga como é, ou seja, edite a ACL em vez de substituí-la.
{USERNAME}: nome do usuário
{PERMISSÃO}: a permissão pode ser:
R - Ler
W - Escrever
C - Alterar (gravação)
F - Controle total
Por exemplo, conceda o controle Rocky Full (F) com o seguinte comando (digite no prompt de comando do Windows):
C:> arquivos CACLS / e / p rochoso: f
Leia a ajuda completa digitando o seguinte comando:
C:> cacls /?
cacls
é relevante; ainda está disponível em Windows 10
; A Microsoft também se tornaria obsoleta cmd.exe
em favor do Powershell.
cmd.exe
não é preterido e provavelmente não será, portanto, esse não é um ponto a favor de icacls
todo, pelo contrário.
Permissões corrompidas: recuperando o acesso a uma pasta e seus subobjetos
Embora a maioria das respostas postadas em resposta à pergunta tenha algum mérito, IMHO nenhuma delas fornece uma solução completa. A seguinte (pode ser) uma solução perfeita para o Windows 7 se você estiver bloqueado em uma pasta por configurações de permissão corrompidas:
icacls "c:\folder" /remove:d /grant:r Everyone:(OI)(CI)F /T
No Windows 10, o usuário / SID deve ser especificado após a /remove:d
opção:
icacls "c:\folder" /remove:d Everyone /grant:r Everyone:(OI)(CI)F /T
.
Notas :
O comando é aplicado ao diretório especificado.
A especificação do usuário "Todos" define a permissão mais ampla possível, pois inclui todos os usuários possíveis.
A opção "/ remove: d" exclui as configurações DENY explícitas que possam existir, pois elas substituem as configurações ALLOW explícitas: uma preliminar necessária para criar uma nova configuração ALLOW. Isso é apenas uma precaução, pois muitas vezes não há configuração DENY presente, mas é melhor prevenir do que remediar.
A opção "/ grant" cria uma nova configuração de ALLOW, uma permissão explícita que substitui (": r") toda e qualquer configuração explícita de ALLOW que possa existir.
O parâmetro "F" (ou seja, a permissão criada) torna isso uma concessão do controle COMPLETO.
O parâmetro "/ T" adiciona recursão, aplicando essas alterações a todos os subobjetos atuais no diretório especificado (por exemplo, arquivos e subpastas), bem como à própria pasta.
Os parâmetros "(OI)" e "(CI)" também adicionam recursão, aplicando essas alterações aos subobjetos criados posteriormente.
.
ADENDA (10/02/2019) -
A linha de comando do Windows 10 acima foi gentilmente sugerida para mim hoje, então aqui está. Eu não tenho o Windows 10 para testá-lo, mas tente se tiver (e faça um comentário abaixo).
A alteração refere-se apenas à remoção da configuração DENY como primeira etapa. Pode não haver nenhuma configuração DENY presente, portanto essa opção pode não fazer diferença. No meu entender, no Windows 7, você não precisa especificar um usuário após / remover: d, mas posso estar errado sobre isso!
.
ADENDA (21/11 2019) -
O usuário astark recomenda substituir Todos pelo termo * S-1-1-0, para que o comando seja independente do idioma. Eu só tenho uma instalação em inglês do Windows, então não posso testar esta proposta, mas parece razoável.
Invalid parameter "/remove:d"
Lutei com isso por um tempo e só combinando as respostas neste tópico funcionou para mim (no Windows 10):
1. Abra cmd ou PowerShell e vá para a pasta com arquivos
2. takeown / R / F .
3. icacls * / T / grant dan: F
Boa sorte!
Apenas no caso de haver mais alguém que tropeça nesta página, se você deseja agrupar várias permissões no único comando, usei o seguinte:
icacls "c:\TestFolder" /grant:r Test_User:(OI)(CI)(RC,RD,RX)
Observe a cadeia csv para as várias permissões.
Com um script vba do Excel para provisionar e criar contas. Eu estava precisando conceder permissões de direitos totais para a pasta e subpastas criadas pela ferramenta usando a conta 'x' de nossos administradores para nosso novo usuário.
cacls tinha algo parecido com isto: cacls \ FileServer \ Users \ Nome de usuário / e / g Domínio \ Nome de usuário: C
Eu precisava migrar esse código para o Windows 7 e além. Minha solução acabou sendo:
icacls \ FileServer \ Users \ Nome de usuário / concessão: r Domínio \ Nome de usuário: (OI) (CI) F / t
/ grant: r - concede direitos de acesso de usuário especificados. As permissões substituem as permissões explícitas concedidas anteriormente. Sem: r, as permissões são adicionadas a quaisquer permissões explícitas concedidas anteriormente
(OI) (CI) - esta pasta, subpastas e arquivos.
F - Acesso total
/ t - Atravessa todas as subpastas para corresponder aos arquivos / diretórios.
O que isso me deu foi uma pasta neste servidor em que o usuário só podia ver essa pasta e criou subpastas, que eles podiam ler e gravar arquivos. Além de criar novas pastas.
O XCACLS.VBS é um script muito poderoso que altera / edita as informações da ACL. A ajuda c: \ windows \ system32 \ cscript.exe xcacls.vbs retorna todas as opções e opções.
Você pode obter distribuição oficial na Página de Suporte da Microsoft
XCACLS.VBS
pode ser encontrado?
A criação de pastas em massa e a permissão de concessão funcionam comigo, usando o script do PowerShell abaixo.
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: Você deve criar o mesmo nome de usuário de domínio no arquivo csv, caso contrário, obterá problemas de permissão
attrib +r +a +s +h <folder name> <file name> to hide
attrib -r -a -s -h <folder name> <file name> to unhide
excelente ponto Călin Darie
Eu tinha muitos scripts para usar cacls. Movo-os para icacls, como sempre. Não consegui encontrar um script para alterar o exemplo de volumes de montagem raiz: d: \ datafolder. Finalmente criei o script abaixo, que monta o volume como uma unidade temporária e aplica-se em segundos. depois desmonta-o. É a única maneira que descobri que você pode atualizar a segurança de montagem raiz.
1 obtém o GUID de montagem da pasta em um arquivo temporário e, em seguida, lê o GUID para montar o volume como uma unidade temporária X: aplica seg. E registra as alterações e desmonta o Volume apenas da unidade X: para que a pasta montada não seja alterada ou interrompida. então o segundo aplicado.
Aqui está um exemplo do meu 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**
Sou Administrador e algum script colocou a permissão "Negar" em meu nome em todos os arquivos e subpastas em um diretório. A execução do icacls "D:\test" /grant John:(OI)(CI)F /T
comando não funcionou, porque parecia não remover o "Negar" diretamente do meu nome nesta lista.
A única coisa que funcionou para mim é redefinir todas as permissões com o icacls "D:\test" /reset /T
comando
no windows 10 funcionando sem "c:>" e ">"
Por exemplo:
F = Full Control
/e : Edit permission and kept old permission
/p : Set new permission
cacls "caminho do arquivo ou da pasta" / e / p UserName: F
(também corrige os erros 2502 e 2503)
cacls "C: \ Windows \ Temp" / e / p Nome de usuário: F
Isto é o que funcionou para mim:
Abra manualmente a pasta para a qual o acesso foi negado.
Selecione o arquivo executável / aplicativo nessa pasta.
Clique com o botão direito do mouse e vá para Properties->Compatibility
Agora veja o Privilege Levele verifiqueRun As Administrator
Clique em Change Settings for all users.
O problema está resolvido agora.