Adicionado um novo usuário para agrupar www-data e para sudoers, ainda não tenho certeza porque o usuário cria novos diretórios como root

1

Sou novo na administração de sistemas Linux (lidando com usuários e grupos), mas tenho muita experiência em linha de comando como desenvolvedor. No momento, estou tentando garantir que três usuários que eu adicionei ao meu servidor Debian no grupo www-data tenham as permissões apropriadas e esperadas. O objetivo é ter todos os diretórios em / var / www / html / como www-data: www-data (eu acho que é isso que eu quero, pelo menos ... Eu estou fazendo isso, então eu não tenho permissões mistas entre coisas criadas sob raiz e www-data).

Eu adicionei meus três novos usuários ao arquivo sudoers com a opção ALL (o mesmo que root).

Eu não sei como pensar nos usuários agora e preciso de algumas orientações sobre isso.

Por exemplo, quando eu faço login como desenvolvedor1 e emite o comando mkdir, ele me diz que não tenho a permissão apropriada para fazer isso. Então eu sudo e digito a senha para o meu usuário e, em seguida, mkdir test ... e mostra como um dir com root como o proprietário e root como o grupo.

Como posso fazer do developer1 um usuário que possa criar diretórios com www-data como proprietário e grupo? Este é o caminho certo para abordar isso?

obrigado.

    
por Lynn 09.04.2011 / 01:07

2 respostas

2

A razão pela qual os diretórios criados por sudo são de propriedade root: root é porque o sudo literalmente permite executar comandos como um usuário diferente , neste caso como root (já que você não especificou um diferente nome de usuário).

Coloque o desenvolvedor1 no grupo www-data, então certifique-se de que o diretório no qual você deseja que este usuário crie arquivos / diretórios pertence ao grupo www-data e é gravável pelo dito grupo.

Agora, o desenvolvedor1 pode criar arquivos e diretórios lá, porque suas participações em grupo permitem que ele faça isso.

Mas você notará que esses novos diretórios / arquivos são de propriedade de developer1: developer1 (ou, alternativamente, developer1: users ou algo parecido). Para corrigir isso, você pode criar o grupo primário www-data do desenvolvedor1, caso em que tudo o que ele criar será de propriedade do grupo www-data.

Se seu objetivo for fazer com que esse usuário crie arquivos em outro lugar em um grupo diferente (por exemplo, usuários ou desenvolvedores), crie-os como www-data em, por exemplo. / var / www, bem, isso é uma coisa que eu ainda não descobri. Até agora, eu fui preso com um dos dois (bem, três, na verdade: o terceiro é apenas viver com isso) soluções alternativas:

  1. Faça com que o (s) usuário (s) manualmente chgrp arquivos e diretórios quando eles são criados. Pode ser feito recursivamente e / ou em um lote, assim você pode, por exemplo faça o upload de um grande número de arquivos e, em seguida, chgrp de uma só vez.
  2. Configure um cron job que seja executado de tempos em tempos (por exemplo, a cada 5-10 minutos) e recursivamente chgrp s tudo sob sua raiz da Web (ou seja o que for que você esteja tentando controlar) para www-data. Como alternativa, você pode usar essa tarefa cron para chown -R www-data:www-data /var/www para garantir que todos os arquivos / diretórios pertençam ao usuário www-data, bem como ao grupo www-data.

Sei que nenhum desses é ideal, embora, depois que um arquivo é criado, ele retenha sua propriedade, independentemente de quem o edite.

    
por 09.04.2011 / 01:20
1

Isso deve funcionar:

# chown -R www-data.www-data /var/www/html
# find /var/www/html -type d -print0 | xargs -0 chmod g+s
# useradd developer1 -G www-data
# useradd developer2 -G www-data

O que está acontecendo é setgid e grupos. Setgid permite que todos os arquivos e diretórios criados em / var / www / html pertençam ao grupo atual (neste caso, www-data). Ao adicionar as contas de desenvolvedor ao grupo de dados www, você garante que elas tenham permissão de gravação.

Você pode encontrar outros problemas se os desenvolvedores estiverem copiando arquivos para o diretório sem permissões de gravação de grupo, mas eles podem ser corrigidos manualmente com chmod pelo proprietário.

    
por 09.04.2011 / 08:56