Usuário com melhor resposta
Script para modificar permissão em pasta

Pergunta
-
Respostas
-
Leonardo, você pode utilizar o utilitário CACLS, que já foi discbutido neste mesmo fórum:
http://forums.microsoft.com/Technet-BR/ShowPost.aspx?PostID=1078520&SiteID=29
Temos também o Xcacls.vbs que é bem mais completo e você encontra informação aqui:
http://support.microsoft.com/kb/825751
Grande abraço.
- Marcado como Resposta Fábio JrModerator quinta-feira, 22 de março de 2012 13:33
Todas as Respostas
-
Leonardo, você pode utilizar o utilitário CACLS, que já foi discbutido neste mesmo fórum:
http://forums.microsoft.com/Technet-BR/ShowPost.aspx?PostID=1078520&SiteID=29
Temos também o Xcacls.vbs que é bem mais completo e você encontra informação aqui:
http://support.microsoft.com/kb/825751
Grande abraço.
- Marcado como Resposta Fábio JrModerator quinta-feira, 22 de março de 2012 13:33
-
Obrigado pela ajuda, mas devo estar fazendo algo errado.
Estou executando CACLS via script de logon por Policy mas o usuário Domain Users não está sendo adicionado com a permissão w, segue abaixo a estrutura:
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set WshShell=CreateObject("Wscript.Shell")
objFSO.CreateFolder "C:\Pasta"
WshShell.Run cacls "C:\Pasta /T /G meudominio\Domain Users:w"A pasta está sendo criada mas o usuário Domain Users não está sendo adicionado.
Obrigado
-
Leonardo primeiro suas aspas na ultima linha, estão no lugar errado, elas tem que ficar assim o: WshShell.Run "cacls C:\Pasta /T /G meudominio\Domain Users:w"
não assim: WshShell.Run cacls "C:\Pasta /T /G meudominio\Domain Users:w"
segundo tenta testar o comando cacls no prompt de comando e veja se os usuários serão listados ok?
-
Obrigado novamente
Realmente eu tinha me equivocado com relação às aspas, agora o script está rodando só que eu tinha dito que era pra inserir um usuário, desculpe é um grupo que estou querendo add, tentei add um usuário do dominio e funcionou, mas o grupo Domain Users não estou conseguindo inserir, é possível inserir grupo ou somente users ?
Tks
-
-
Laerte tentei com o XCACLS mas deu erro pois não encontrou o arquivo, será que ele não altera permissão de pasta ?
Bom, estou tentando fazer isso para preparar as estações (350+ -) para que não de problemas com permissão na pasta c:\pasta qdo eu rodar um script para copiar um arquivo.dot da rede para esta pasta.
Se souber de alguma solução eu agradeço.
Obrigado novamente -
-
Pessoal, achei que estava funcionando mas não está, vejam se podem me ajudar:
Quando logo na estação com o meu usuario a permissão com meu username não está indo para a pasta, se eu deletar então a pasta e criar novamente vou na ACL e lá está a permissão para meu usuário.
Se faço logoff e troco de usuário, na pasta não é acrescentada a permissão para este outro usuario, e a permissão anterior continua, mas se eu deleto a pasta e crio de novo na ACL é substituida a minha permissão pela do segundo usuario. Com isso nunca consigo ter permissão na pasta para sobrescrever um arquivo em c:\Pasta
Segue abaixo o script
Set WshShell=CreateObject("Wscript.Shell")
WshShell.Run "CACLS c:\Pasta\ /E /c /G Dominio\%username%:F"Obrigado
-
Leonardo retire o que eu disse acima sobre grupos, descobri como usar esse script adicionando os domains users , é coisa besta, que dá vontade de bater, veja o que aspas não melhoram a nossa vida
Set WshShell=CreateObject("Wscript.Shell")
WshShell.Run "CACLS c:\Pasta\ /E /c /G ""Seu Dominio\Domain Users"":F"só isso e pronto, script funcionando, eu testei e funcionou
-
Caro Laerte,
Obrigado pela ajuda, fiz o teste no server a foi add a permissão para DomainUsers certinho. Estou passando este script via GPO de login, vejo que está rodando o CACLS mas a permissão não está sendo add nas estações, o que será que pode estar havendo?
-
-
-
Então é isso, para esse script funcionar desse jeito, o usuário logado na máquina tem que ter essa permissão
tem que rodar via run as, tem a linha de comando, porém ele pede a senha para fazer isso, mas só uma coisa, se você estiver configurado essa GPO nas configurações dos usuários coloca esse script nas configurações do computador, em vez das de usuário, ai esse problema deve acabar
-
O run as seria interessante mas se não fosse solicitado senha para o usuário.
Veja se fiz como vc sugeriu ?Mudei a GPO de usuário para computador (Computer Configuration - Windows Settings - Startup) mas não passou a permissão Domain Users para a pasta, logo em seguida recebi a mensagem de erro do 2º script que tenta copiar o arquivo da rede para a referida pasta no C:\Pasta.
-
-
-
Pessoal, lembre-se que o script de inicialização roda com a conta SYSTEM. Até onde eu lembro, não dá pra usar rede com ela...
[]s,
Vinicius Canto
MVP Windows Server - Admin Frameworks
Blog sobre Scripting e Windows Powershell: http://viniciuscanto.blogspot.com -
Para que a senha não seja solicitada ao usuário utilize o comando RunAs já passando a senha:
----------------
runas /user:dominio\usuario senha "comando"
---------------
Porem neste caso a senha ficará aberta para todos verem, caso queira criptografar esta senha, utilize o programa AutoIT que irá gerar um executavél. Faça o dowload em http://www.autoitscript.com/autoit3/downloads.php.
Um exemplo de código é:
--------------------
RunAsSet("usuário", "dominio", "senha", 0)
Run("cacls c:\pasta /c /g dominio\usuario :F", "C:", @SW_MINIMIZE)
RunAsSet()
--------------------
-
Alguém pode me ajudar.
Eu tento dar permissão para uma pasta GPRH que esta dentro de arquivos de programas, mas nada acontece.
Quando tento dar permissão para uma pasta que se encontra na raiz (c
ele funciona normalmente.
Eu estou tentando adicionar nas permissões a conta local Aluno com controle total.
Segue abaixo o código que eu estou usando.
set WshShell = CreateObject("Wscript.Shell")
WshShell.Run "cacls C:\Arquivos de programas\GPRH /E /G ALUNO:F"
Grato.
-
-
-
-
Tenta o seguinte:
Code SnippetSet WshShell = CreateObject("Wscript.Shell")
WshShell.Run "runas /user:usuário senha cacls ""C:\Pasta1"" /E /G ALUNO:F"
WshShell.Run "runas /user:usuário senha cacls ""C:\Pasta2"" /E /G ALUNO:F"
WshShell.Run "runas /user:usuário senha cacls ""C:\Pasta2"" /E /G ALUNO:F"
-
Pessoal, lembrem-se: qualquer um poderá ver uma senha dessas se o script for mantido deste jeito. Há uma forma de executar comandos remotamente usando WMI que pode ser útil neste caso:
1) crie o script que dê o comando cacls para modificar as pastas, sem o runas. coloque ele num lugar público, com o nome de script1.vbs
2) crie um segundo script que executa programas remotamente, e execute o comando wscript \\server\bla\script1.vbs. Execute esse script com uma conta de administrador de domínio por exemplo. O script então vai ter poderes suficientes para se conectar à outra máquina e executar o comando que mexe nas permissões.
3) faça um loop para isso.
Outra alternativa é criar uma GPO para alteração de permissões no sistema de arquivos... é bem mais fácil. Tá pronto já, basta usar.
[]s,
--
Vinicius Canto <scripterbr_at_gmail_dot_com>
MVP Windows Server - Admin Frameworks
MCP Windows 2000 Server, Windows XP e SQL Server 2000
Bacharelando em Ciências da Computação - USP
Blog sobre Scripting e Windows Powershell: http://viniciuscanto.blogspot.com -
Para que a senha não seja vista por outros usuários utilize o SCRENC esta ferramenta criptografa o código vbscript para que o código fonte não seja copiado. É uma ferramenta Microsoft faça o download aqui:
-
Mesmo assim, a senha continua possível de ser vista. Existem N programas para quebrar a criptografia do SCRENC, SANUR e outros programas desse tipo.
No link abaixo eu PROVO que, mesmo sem ver a senha, dá pra um usuário comum executar comandos como admin.
http://br.groups.yahoo.com/group/mcpdx/messages/46036?threaded=1&m=e&var=1&tidx=1
Repito: NÃO USEM SENHAS DENTRO DE SCRIPT, AINDA QUE CRIPTOGRAFADOS. Criptografia de chave única, por mais forte que seja, é quebrável.
--
Vinicius Canto <scripterbr_at_gmail_dot_com>
MVP Windows Server - Admin Frameworks
MCP Windows 2000 Server, Windows XP e SQL Server 2000
Bacharelando em Ciências da Computação - USP
Blog sobre Scripting e Windows Powershell: http://viniciuscanto.blogspot.com -
Vinicius, pacientemente eu li as 223 páginas do forum que você indicou. E a minha conclusão é que você tem razão, colocar senha em um script não é uma boa prática.
Porem criptografar o script é! Da mesma forma que é possivel quebrar uma criptografia 256 bits do script é possivel pegar sua senha de outras formas até mais simples do que esta.
De novo, se o alguém estiver disposto a quebrar uma criptografia de 256 bits para pegar uma senha dentro de um script, com certeza ele fará muito mais do que isso para danificar o seu ambiente.
-
Olá,
em uma das 223 páginas, eu dicuto com um grande amigo meu, o Alberto, que tem sim como burlar isso... e sem muito problema. Veja: http://antionline.com/archive/index.php/t-267103.html
Ainda que criptografe o arquivo inteiro, dá pra usar um "approach" igual, pra fazer a mesma coisa. Definitivamente, colocar uma senha hardcoded no script, ainda que criptografado, não é uma boa idéia. É óbvio que vai resolver seu problema, mas, além de ser inseguro e incorreto do ponto de vista de programação, é altamente dispensável se vc considerar que existem outras formas de fazer a mesma coisa, sem colocar a senha de admin local (ou domínio) em risco. Uma delas é definir a permissão NTFS via GPO, ou, no caso dessa thread, via grupos restritos.
Creio que agora eu tenha sido mais claro... mas qqer coisa eu explico melhor meus motivos.
[]s,
--
Vinicius Canto <scripterbr_at_gmail_dot_com>
MVP Windows Server - Admin Frameworks
MCP Windows 2000 Server, Windows XP e SQL Server 2000
Bacharelando em Ciências da Computação - USP
Blog sobre Scripting e Windows Powershell: http://viniciuscanto.blogspot.com -
Olá Pessoal,
Estou tendo alguns problemas com o código abaixo.
set WshShell = CreateObject("Wscript.Shell")
WshShell.Run "cacls ""C:\Arquivos de programas\Borland"" /t /g ALUNO:F"
Estou passando permissão total para o usuário ALUNO, para a pasta borland e para todos os itens e subpastas.
Mas quando executo aparece uma tela do dos pedindo se tem certeza ou não (sim ou não), tem como passar a resposta através do script??
Grato.
-
Jonas troca a última linha por essa: wshShell.Run "cscript xcacls.vbs ""C:\Arquivos de programas\Borland"" /t /g ALUNO:F"
e baixe esse arquivo aqui: http://download.microsoft.com/download/f/7/8/f786aaf3-a37b-45ab-b0a2-8c8c18bbf483/XCacls_Installer.exe e salve ele junto onde o script vai rodar
-
Tenta utilizar este comando, o executável é nativo do Windows.
Code BlockSet WshShell = WScript.CreateObject("WScript.Shell")
intRunError = WshShell.Run("%COMSPEC% /c Echo Y| cacls " _
& """C:\Arquivos de programas\Borland""" & " /c /g ALUNO:F", 2, True) -
Olá Leonardo, existe uma linha de comanado que vc coloca no atalho para rodar qualquer aplicativo como administrator/local. Nas propriedades do atalho vai no campo TARGET (runas.exe /user:COMPUTERNAME\administrator /savedcreds "c:\Program Files\Internet Explorer\iexplore.exe")
A comando savedcreds é ele o responsável por salvar a senha do administrator.
A senha só é solicitada na primeira vez que vc executa o atalho, na s seguinte o aplicativo abre se pedir a senha.
OBS: depois que já está configurado e rodando o comando fica (%windir%\system32\runas.exe /user:COMPUTERNAME\administrator /savedcreds "c:\Program Files\Internet Explorer\iexplore.exe")
Espero te ajudado, este comando me ajudou muito.
-
-
-
Pessoal,
Toda vez que eu executo o script aparece uma tela do DOS fazendo as alterações necessárias para que a permissão na pasta ou arquivo seja concedida. Existe alguma maneira ou forma de fazer com que esta tela do DOS não apareça, como está é possivel o usuário fechá-la.
Grato.
-
-
-
-
-
-
Olá,
Veja se este procedimento pode lhe dar um direcionamento MACRO da situação e contribuir de alguma forma.
WebCast – GPO – Controlando Group Membership - http://bit.ly/9WRiRL
OU
WebCast - GPO - Alterando Permissões Pastas - http://bit.ly/aIy398
Caso seja útil não esqueça de pontuar.
Grande abraço
Jordano Mazzoni
http://jordanomazzoni.com.br Foi util pra voce esta informação ? Classifique http://twitter.com/jordanomazzoni -
Leonardo, hoje me deparei com esta necessidade.
Preciso criar uma pasta em C:\Pasta (Até aqui tudo bem)
Porém preciso que as permissões dos usuários autenticados seja somente leitura.Executei este script, add o nome do meu domínio em "meu domínio" e usando o atributo R de read.
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set WshShell=CreateObject("Wscript.Shell")
objFSO.CreateFolder "C:\Pasta"
Set WshShell=CreateObject("Wscript.Shell")
WshShell.Run "CACLS c:\Pasta\ /E /c /G "meu domínio"\authenticated users:r"Mas ele cria a pasta e os usuários autenticados segue com controle total da pasta criada.
Pode me ajudar por favor?