Permissões em um ambiente Linux multiusuário

1

Essa pergunta foi feita muitas vezes, mas não encontrei uma solução para esse tipo de permissão.

Eu tenho um VPS com vários sites em chroot, cada um executando com um usuário único, sem privilégios de root. Estou tentando implementar um script de implantação, que é executado por um usuário mestre (não raiz), que pode acessar todos os sites e modificar todos os arquivos.

Um grupo comum

O primeiro conselho que vejo normalmente é criar um grupo, que contenha o mestre e todos os usuários do site.

Pelo que entendi, terei que alterar as permissões dos meus arquivos e pastas para 770 (ou algo semelhante que dê ao grupo permissões iguais ao proprietário). No entanto, muitas vezes eu tenho essas permissões sendo "redefinidas" para 700 (ou similar, onde o grupo perde as permissões). A maioria dos meus sites é construída em Wordpress, que pode ter alguns itens de segurança automagic, que redefine as permissões exageradas. Além disso, se um desenvolvedor alterar localmente as permissões do grupo e fizer o upload delas, as permissões serão alteradas.

Estou procurando uma solução mais estável - alguma pista?

Felicidades:)

    
por sqren 06.12.2011 / 00:51

2 respostas

1

Se o servidor da web não tiver permissão para alterar arquivos.dirs, ele não poderá alterar a propriedade.

Embora não haja realmente informações suficientes aqui para projetar um modelo de segurança, em geral eu acho que basear o acesso do servidor web em torno das permissões de 'outros' é a melhor abordagem - portanto diretórios devem ser drwxrwSr-x (pertencentes a um grupo que inclui usuários que requerem acesso de modificação, mas excluindo o servidor da Web, observe o uso do bit setgid) e os arquivos -rw-rw-r-- (e se você precisar ter arquivos editáveis pelo servidor da Web uid, em seguida, drwxrwxrwx).

Mas este não é necessariamente o modelo melhor / completo para o seu caso - quando você diz que o site está em chroot, você quer dizer que eles estão todos no mesmo chroot? Ou você tem várias instâncias de servidor web cada uma executando em seu próprio chroot? No segundo cenário, a divisão dos IDs do usuário é redundante e o modelo descrito acima é apropriado.

Certamente, você não deseja permitir que o servidor da Web tenha permissão para gravar quaisquer arquivos dentro da raiz do documento, exceto aqueles especificamente designados para essa finalidade.

Portanto, talvez você deva ter todos os arquivos / pastas pertencentes ao seu usuário de implantação e com uma propriedade de grupo do grupo com apenas 2 membros - o usuário de implantação e o servidor da Web - e criar seus arquivos / dirs como drwxr- S --- / -rw - r ----- (novamente com dirs / arquivos designados como drwxrwS --- / -rw - rw ----)

    
por 06.12.2011 / 11:00
1

Por que você não usa uma ferramenta de implantação como capistrano para escrever uma tarefa que conecta em todos os servidores com usuários variáveis e upload de material usando scp ou sftp ou até mesmo check-out de um repositório git?

Você pode fazer algo próximo usando o shell script e o SSH, mas existem ferramentas de implantação para resolver esses tipos de problemas.

    
por 06.12.2011 / 01:29