Coda 2 e SCP fazendo upload de arquivos com a permissão errada

3

Atualmente, tenho um servidor Ubuntu básico executando um site. O site é para alguns alunos que aprendem HTML / PHP e cada aluno tem sua própria conta com um link simbólico para a pasta do site compartilhado. Como os alunos estão trabalhando juntos no site, cada usuário precisa poder modificar todos os arquivos (index.html, por exemplo). Então eu criei um grupo Webdev contendo todos os alunos com o umask padrão de 0002 definido em seus .bashrc (Isso permite que arquivos recém-criados sejam 774). A pasta compartilhada pertence ao grupo Webdev com um chmod g + s para que novos arquivos / pastas também pertençam ao grupo Webdev.

O problema é que os alunos estão usando um IDE (Coda 2) e quando criam um novo arquivo ou pasta usando o IDE, o arquivo tem as permissões do 644 no servidor (não pode ser escrito em grupo). No entanto, quando eu faço um novo arquivo através da conexão com o Cyberduck (cliente SFTP), as permissões de arquivo são 664 (como deveriam ser). Então eu não entendo porque Coda seria diferente.

No entanto, após algumas tentativas e erros, acredito que o Coda primeiro crie o arquivo no disco local e, em seguida, carregue esse arquivo no servidor. Em um mac por padrão, um arquivo recém-criado é 644. Quando o cliente faz upload de um arquivo que já é 644, ele fica 644 no lado do servidor (umask é inútil nessa situação). Eu também tentei criar permissões de ACL para essa pasta, mas um arquivo enviado do meu mac via SCP não obtém as permissões de ACL padrão.

No Coda há uma opção para alterar as permissões de arquivo em uma transferência. No entanto, esta opção parece aplicar um chmod a todos os arquivos que estão sendo carregados ou salvos. Quando um dos alunos está modificando um arquivo criado por outra pessoa quando ele tenta fazer o upload do arquivo ou salvá-lo, o Coda tenta também fazer um chmod, mas falha porque esse usuário não é o proprietário do arquivo.

Minha solução atual está usando bindfs ... Eu montei a pasta compartilhada da web e as permissões de conjuntos de bindfs e a propriedade de grupo de arquivos recém-criados. No entanto, bindfs parece ser um pouco lento e tenho certeza que existe uma solução melhor.

Mesmo se os alunos abandonassem o Coda 2 e usassem o Mac vim com scp, os arquivos recém-criados no servidor se comportariam da mesma forma (644), que é o padrão no mac.

Outras opções ...

1) Ou eu ensino os alunos a usar (ssh / chmod) com seu IDE para alterar suas próprias permissões de arquivo ao fazer o upload.

2) Eu faço todos os Macs dos alunos tem umask padrão de 0002, que faria o upload de arquivos com as permissões certas.

3) Escreva um script de milho para corrigir as permissões de arquivo a cada 5 a 15 minutos ... (Essa opção é a pior, se os alunos estiverem trabalhando juntos ao mesmo tempo).

Existe alguma maneira que eu poderia fazer todos os arquivos que são enviados via SCP têm as permissões de arquivo padrão de 664, embora o arquivo enviado tenha uma permissão menor? (Depois de horas de pesquisa eu não acho que isso é possível) Eu acho que um script de milho é a minha melhor opção para usuários iniciantes. Como os desenvolvedores da Web trabalham juntos em sites maiores?

semelhante a isto: link

Também similar: link

    
por Tom Black 14.06.2012 / 19:58

3 respostas

3

O Coda realmente envia arquivos locais. A menos que você use hacks como o link agora sem suporte / desatualizado, os arquivos terão as permissões que tiverem localmente. Como o OSX tem umask 022, os arquivos criados no OSX não podem ser gravados em grupo, portanto, 644. O Coda faz o upload com satisfação. Como você descobriu, o Coda pode forçar permissões específicas, mas não é suficientemente granulado o suficiente para especificar que ele deve ser feito apenas para novos arquivos, por isso será um erro salvar arquivos existentes que não são de propriedade do usuário (que é o caso mais comum). A única maneira de fazer isso funcionar é mudando a umask do usuário para o OSX. Crie o arquivo /etc/launchd-user.conf e coloque lá:

umask 002

Em seguida, reinicie. Posteriormente, o Coda cria arquivos que são 664 localmente e os carrega. Os arquivos agora podem ser gravados em grupo e não há necessidade da opção Definir permissões no upload nas preferências do Coda.

Veja também o link .

    
por 04.09.2013 / 11:54
1

No painel de preferências do Coda, na guia Regras, parece que você pode definir as permissões desejadas para arquivos enviados via ftp / sftp. O padrão é 644; Parece que apenas verificar a caixa "Gravar" na linha "Grupo" pode resolver o problema. Cada estudante teria que fazer isso em sua própria cópia do Coda, é claro.

    
por 14.06.2012 / 23:04
1

O problema não são as permissões no arquivo, mas o (s) grupo (s) ao qual seus alunos pertencem. Na máquina servidor web, se você fizer o grupo primário de cada aluno igual ao grupo do servidor web (em sistemas Linux usualmente www-data ou apache), e definir as permissões Default File como 660 no painel Coda, tudo deve estar bem .

# usermod -g apache studentUID

ou

# usermod -g www-data studentUID

dependendo de qual sabor do Linux você está executando no servidor web.

    
por 10.07.2013 / 01:46