none
Script para modificar permissão em pasta RRS feed

  • Pergunta

  • Pessoal, alguém pode me dar uma ajuda.

     

     

    Tenho nas estações uma pasta "C:\Pasta", precisaria de um script que adicione a permissão NTFS para que dominio\domainusers possa ter acesso à gravar nesta pasta.

     

    Obrigado

    terça-feira, 7 de agosto de 2007 15:36

Respostas

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.

     

    terça-feira, 7 de agosto de 2007 17:55
  • 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

     

    terça-feira, 7 de agosto de 2007 20:04
  • 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" Wink

     

    segundo tenta testar o comando cacls no prompt de comando e veja se os usuários serão listados ok? Wink

    terça-feira, 7 de agosto de 2007 20:16
  • 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

    terça-feira, 7 de agosto de 2007 20:43
  • Leonardo, acho que pelo comando cacls não, tentei fazer uns testes aqui com grupos e não consegui também, mas acho que com o xcacls você consegue(não tenho certeza), testa e manda um feedback Wink

    terça-feira, 7 de agosto de 2007 20:53
  • 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
    terça-feira, 7 de agosto de 2007 21:27
  •  

     

     

     

    quarta-feira, 8 de agosto de 2007 14:17
  • 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

    quinta-feira, 9 de agosto de 2007 21:35
  • 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 Big Smile

     

    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 Big Smile

    sexta-feira, 10 de agosto de 2007 13:55
  • 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?

     

    sexta-feira, 10 de agosto de 2007 17:59
  • Os usuários tem permissões para modificar as permissões das pastas? Se não tiver, o script roda, porém as permissões não são colocadas Wink

    sexta-feira, 10 de agosto de 2007 18:05
  • Os usuários não tem permissão para alterar permissão de pasta, o perfil deles é de Usuários Avançados.

     

    sexta-feira, 10 de agosto de 2007 18:37
  • Então é isso, para esse script funcionar desse jeito, o usuário logado na máquina tem que ter essa permissão Wink 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 Wink

    sexta-feira, 10 de agosto de 2007 19:01
  • 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.

     

     

    sexta-feira, 10 de agosto de 2007 20:10
  • Os computadores estão dentro da OU?

    sexta-feira, 10 de agosto de 2007 20:19
  • Estão sim, esta GPO estou aplicando no dominio pois preciso atingir outros sites da empresa.

    sexta-feira, 10 de agosto de 2007 21:03
  • 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
    terça-feira, 14 de agosto de 2007 11:59
    Moderador
  • 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()

    --------------------

    quinta-feira, 30 de agosto de 2007 16:19
  • 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 (cSmile 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.

     

    terça-feira, 4 de setembro de 2007 11:53
  • Jonas use dessa forma aqui que vai funcionar Wink:

     

    set WshShell = CreateObject("Wscript.Shell")

    WshShell.Run "cacls ""C:\Arquivos de programas\GPRH"" /E /G ALUNO:F"

     

    terça-feira, 4 de setembro de 2007 17:18
  • Obrigado pela dica Laerte.

    Essas aspas so atrapalham.

    Funcionou direitinho.

     

    Big Smile

     

    terça-feira, 4 de setembro de 2007 22:42
  • Olá Bruno,

    Como que eu faço para passar permissões para várias pastas, e o comando run as roda direto de um arquivo .vbs.

    Obrigado.
    quarta-feira, 5 de setembro de 2007 00:16
  • Tenta o seguinte:

     

    Code Snippet

    Set 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"

     

     

     

     

    quarta-feira, 5 de setembro de 2007 01:19
  • 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
    quarta-feira, 5 de setembro de 2007 10:25
    Moderador
  • 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:

     

    http://www.microsoft.com/downloads/details.aspx?FamilyId=E7877F67-C447-4873-B1B0-21F0626A6329&displaylang=en

     

     

    quarta-feira, 5 de setembro de 2007 12:29
  • 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

    sexta-feira, 7 de setembro de 2007 16:06
    Moderador
  • 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.

     

    segunda-feira, 10 de setembro de 2007 22:04
  • 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
    quarta-feira, 12 de setembro de 2007 14:16
    Moderador
  • 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.

    quarta-feira, 24 de outubro de 2007 20:50
  • 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 Wink

    quinta-feira, 25 de outubro de 2007 18:22
  • Tenta utilizar este comando, o executável é nativo do Windows.

     

    Code Block

    Set WshShell = WScript.CreateObject("WScript.Shell")

    intRunError = WshShell.Run("%COMSPEC% /c Echo Y| cacls " _
    & """C:\Arquivos de programas\Borland""" & " /c /g ALUNO:F", 2, True)

     

     

     

    segunda-feira, 29 de outubro de 2007 11:51
  • 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.

    quarta-feira, 5 de dezembro de 2007 19:00
  • Cara altera as permissões da pasta via GPO!!!

    Vai em computer>windows settings>security settings>file system

    e configure as devidas permissões.

    sexta-feira, 28 de dezembro de 2007 13:20
  • Laerte,

     

    Muito Obrigado pela dica....

    Funcionou perfeitamente, consegui resolver um grande problema

     

    Abraço;

     

    Big Smile

    terça-feira, 22 de janeiro de 2008 16:05
  •  

    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.

    terça-feira, 22 de janeiro de 2008 17:08
  • Jonas coloque assim o comando: wshShell.Run "cscript xcacls.vbs ""C:\Arquivos de programas\Borland"" /t /g ALUNO:F",0,true

     

    não esqueça de classificar a resposta caso tenha te ajudado Wink

    terça-feira, 22 de janeiro de 2008 20:22
  • Laerte,

     

    Valeu pela dica, resolveu totalmente o meu problema....não aparece nenhuma janela.

     

    Um abraço.

    quarta-feira, 23 de janeiro de 2008 18:32
  • não esqueça de classificar a resposta Wink

    quarta-feira, 23 de janeiro de 2008 20:09
  • Boa tarde,


    A pasta "C:\pasta" existe nas 350 maquinas? Você já tentou atribuir as permissões na pasta via "Grupos Restritos" em uma GPO? Acho que assim funciona.


    Alvaro Rodrigues
    sábado, 20 de setembro de 2008 17:27
  • Eu queria criar uma pasta na hora do login com permissao so para o usuario que esta criando e pro administrador tem como???
    segunda-feira, 27 de abril de 2009 11:51
  • 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
    quarta-feira, 22 de setembro de 2010 14:28