Alterando permissões em arquivos do usuário para automatizar a criação do Apache VirtualHost

2

Atualmente tenho uma pequena máquina Ubuntu Server 12.04 (ambiente de teste) com cerca de 3 usuários não-root criados. Cada usuário tem seu próprio diretório public_html sob seu home ..., permitindo que eles implementem vários aplicativos como hosts virtuais nomeados. Cada usuário pertence ao grupo Apache www-data , configurado da seguinte forma:

sudo usermod -a -G www-data [username]
sudo chown -R [username]:www-data /home/[username]/public_html
sudo chmod 2750 /home/[username]/public_html

Agora, como usuário root, estou no processo de criar um script bash que automatizará a criação das pastas para o VirtualHost com public_html de um usuário solicitado, além de criar uma entrada associada em /etc/apache2/sites-available/ . O script (executado com sudo ) solicitará ao usuário ( $uzer ) e ao nome do host virtual desejado ( $vhost ). Até agora, depois de executar alguns testes, finalmente chego ao seguinte ...

mkdir -vp /home/$uzer/public_html/$vhost
mkdir -vp /home/$uzer/public_html/$vhost/www
mkdir -vp /home/$uzer/public_html/$vhost/logs
mkdir -vp /home/$uzer/public_html/$vhost/backups

Eu preciso alterar a propriedade dessas pastas recém-criadas, por isso não tenho certeza se devo fazer o seguinte:

chown -vR $uzer:www-data /home/$uzer/public_html/$vhost
chmod 2750 /home/$uzer/public_html/$vhost

Minhas perguntas:

  • A minha estrutura de pastas está correta / ideal?
  • Sei que usei a opção recursiva ( -R ), mas devo repetir o mesmo para $vhost/www , $vhost/logs e $vhost/backups ?
  • Estou correto em pensar que o chmod acima provavelmente é redundante?
  • Existe uma maneira de executar os comandos mkdir como o usuário $uzer ?
por maGz 26.04.2013 / 12:43

2 respostas

3

P: A minha estrutura de pastas está correta / ideal?

A: A estrutura da pasta parece boa.

P: Eu sei que usei a opção recursiva (-R), mas devo repetir o mesmo para $ vhost / www, $ vhost / logs e $ vhost / backups?

A: Seria redundante executá-lo nesses diretórios

P: Estou certo em pensar que o chmod acima é provavelmente redundante?

Sim, tecnicamente é redundante porque o seu sudo inicial que creta os diretórios está definindo o 'set group id bit', mas definir esse bit (o 2 em 2750) não é uma garantia. Já vi diretórios com isso em que os usuários moveram arquivos para o diretório ou acidentalmente alteraram o grupo em arquivos, então eu o deixei.

Existe uma maneira de executar os comandos mkdir como o usuário $ uzer?

root$ su -u $user -c "mkdir ..."

Além disso, você pode salvar uma etapa no chmod do / www, / log, & / backups usando a opção mkdir --mode=... .

Por exemplo

mkdir -vp --mode=2750 /home/$uzer/public_html/$vhost
mkdir -vp --mode=2750 /home/$uzer/public_html/$vhost/www
mkdir -vp --mode=2750 /home/$uzer/public_html/$vhost/logs
mkdir -vp --mode=2750 /home/$uzer/public_html/$vhost/backups
    
por 26.04.2013 / 13:26
0
  1. Na verdade, não importa qual estrutura de pastas você está usando.
  2. Se você estiver usando a opção -R no chown, isso afetará apenas os arquivos e diretórios que estão presentes no momento em que você está executando o comando.
  3. Não, porque sempre é necessário usar o comando chmod para alterar a permissão se você estiver fazendo alterações manualmente.
  4. Você pode pedir ao arquivo /etc/sudoers para permitir que $ user crie qualquer diretório com o comando mkdir .
por 26.04.2013 / 13:18