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.