Por que designar permissões de gravação e execução a um grupo ao executar scripts da web?

2

Se eu tiver um script que deve ser executado pelo usuário nobody , por que é necessário atribuir permissões de leitura e execução em grupo. Por exemplo, no artigo no link , ele observa que a permissão 755 deve ser atribuída a scripts em uma Web servidor. Entendo que o usuário nobody é tratado como others e, como proprietário do script, eu gostaria de ter permissões completas. Estou faltando alguma coisa?

    
por PeanutsMonkey 05.04.2012 / 05:37

1 resposta

2

Com permissões do linux, others significa "todos os outros". Então, digamos que você tenha um arquivo com permissões como esta:

-rwxr-x--x 1 peanut users 256 Jan 1 myscript

Ignorando o primeiro -, temos rwx primeiro, que são as permissões user . O user é a conta que possui o arquivo e está na terceira coluna: peanut . Este usuário tem permissão para ler, escrever e executar o arquivo.

Em seguida, temos r-x , que são as permissões group , e o grupo em questão está na quarta coluna: users . Qualquer pessoa que seja membro deste grupo tem permissão para ler e executar este arquivo. Você pode ver a associação ao grupo fazendo:

$ grep users /etc/group
users:x:100:tom,dick,harry

Isso mostra o ID do grupo 100 e quem não é um membro principal do grupo. Os membros principais podem ser encontrados procurando membros no arquivo passwd - qualquer pessoa que tenha 100 na quarta coluna é um membro principal:

 peanut:x:1000:100:peanut,,,:/home/peanut:/bin/bash

As últimas permissões são --x , que são a others permission, ou "everyone else" - ou seja, cada uma que não seja o usuário ou um membro do grupo. Isso incluiria o usuário nobody , se existir, mas também qualquer outro usuário. Então todo mundo tem permissão para executar este arquivo.

Muitas vezes, o servidor web no linux é executado sob sua própria conta, às vezes nobody sometimes www-data sometimes httpd sometimes apache . Qualquer que seja o usuário que execute o daemon do servidor da Web, se você quiser que ele execute um script, ele precisará de permissão para fazê-lo. É raro que você torne o usuário do servidor da web o proprietário do script ou um membro do grupo que possui o script, portanto, isso só deixa a permissão others para conceder acesso a ele.

Uma abordagem alternativa para um site executando vários sites, é criar um usuário por site, então use o suexec para dizer na definição de virtualhost qual usuário deve ser usado para executar scripts. Dessa forma, você não precisa dar ao servidor da Web qualquer permissão explícita ou implícita para os scripts.

    
por 06.04.2012 / 12:04