Construindo no Windows 7


3

No meu trabalho, recentemente mudamos do XP para o Windows 7 e, como desenvolvedor, foi um pesadelo. Eu desenvolvo para sistemas embarcados, portanto nosso processo de compilação pode ser um pouco diferente. Nosso processo de criação é extremamente complicado e gera muitas cópias de arquivos, que precisam ser movidas e copiadas. O problema é que uma construção geralmente falha porque não tem permissão para copiar um arquivo.

Em todo o diretório de compilação, eu executava

takeown /F * /R /D Y
icacls . /T /Grant <userid>:F

No diretório raiz da compilação, mas ainda tenho problemas para copiar arquivos (não é possível criar o arquivo regular 'bla.bla': permissão negada). Portanto, sou forçado a tocar manualmente no arquivo, definir o modo como + www e criar novamente.

Minha pergunta é se existe uma maneira simples de obter uma árvore de diretórios para que qualquer usuário / aplicativo possa criar / modificar todos os arquivos nela. icacls não parece cortá-lo.

EDIT: Informações adicionais: Windows x64, GNU make, usando um arquivo bat para definir variáveis ​​ambientais antes de chamar make

Respostas:


2

Localize o diretório de compilação no Windows Explorer gráfico, clique com o botão direito do mouse e selecione Propriedades . Vá para a guia Segurança , clique no botão Avançado e, na janela exibida, clique no botão Avançado . Se Incluir permissões herdáveis ​​do pai deste objeto estiver marcado, desmarque-o. Escolha Remover na caixa de diálogo de aviso exibida. Se alguma ACL permanecer na caixa Entradas de permissão , exclua-as.

Agora, selecione Adicionar , digite seu nome de usuário e clique em OK . Em seguida, uma caixa de diálogo que permite selecionar permissões para esse usuário é exibida. Marque a caixa Controle total em Conceder e clique em OK . Repita o procedimento para outras contas ou grupos de usuários que precisam acessar o diretório, se houver. Além disso, adicione Controle total ao grupo Administradores e ao SYSTEMusuário interno, apenas por precaução. Se o diretório estiver em sua máquina local e apenas você puder fazer logon, poderá dar ao grupo Todos controle total, para ter certeza absoluta de que as coisas funcionarão.

Em seguida, selecione Substituir todas as permissões do objeto filho por permissões herdáveis ​​deste objeto . A caixa de diálogo agora deve ser algo como isto:

Caixa de diálogo de segurança avançada do Windows

Por fim, clique em OK e escolha Sim para verificar se você deseja substituir a permissão de todos os arquivos e subdiretórios desse diretório. Isso substituirá qualquer que seja a sopa de permissões do alfabeto por permissões que correspondam exatamente ao que você acabou de aplicar ao próprio diretório de construção. Além disso, as alterações nas permissões do diretório de construção serão propagadas automaticamente para todos os arquivos abaixo deles agora; portanto, você só precisará alterar as permissões do diretório de construção no futuro, em vez de fazê-lo recursivamente em todo o diretório.


Além de alguns problemas menores com o forforce (esperando que os arquivos sem check-out sejam RO), isso fez o truque. -- Obrigado!
Gdogg

0

Para começar, eu executaria a ferramenta que você está usando para criar / mover como administrador, que deve corrigir muitos dos problemas. Além disso, quando você diz que o ICacls parece não cortá-lo, falha em conceder a você os direitos ou em direitos, mas você ainda está tendo problemas?


Ainda tenho os problemas, mas parece funcionar corretamente. Parece que novos arquivos não são criados com nenhuma permissão, quando eu gostaria que eles fossem criados com as permissões do diretório pai. Estou executando o script como um usuário com privilégios administrativos, usando o Windows PowerShell (ou cmd.exe * 32). Como posso executá-lo como um administrador (a partir da linha de comando?)
Gdogg

Nas configurações da pasta, defina-o para que todos os arquivos criados na pasta herdem as permissões (a outra resposta possui um bom gráfico).
soandos
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.