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

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

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 public_htmldiretório home, permitindo-lhes implantar vários aplicativos como hosts virtuais nomeados. Cada usuário pertence ao www-datagrupo Apache, 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 criando um script bash que automatizará a criação de pastas para o VirtualHost sob um usuário solicitado, public_htmlbem como criará uma entrada associada em /etc/apache2/sites-available/. O script (executado com sudo) solicitará o usuário ( $uzer) e o nome do host virtual desejado ( $vhost). Até agora, depois de executar algumas verificações, finalmente cheguei 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

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?
  • Eu sei que usei -Ra opção recursiva (), mas devo repetir o mesmo $vhost/wwwpara $vhost/logse $vhost/backups?
  • Estou correto ao pensar que o chmod acima provavelmente é redundante?
  • Existe uma maneira de executar os mkdircomandos como usuário $uzer?

Responder1

P: Minha estrutura de pastas está correta/ideal?

R: A estrutura de pastas 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?

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

P: Estou correto ao pensar que o chmod acima provavelmente é redundante?

Sim, tecnicamente, é redundante porque o sudo inicial que cria 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 alteraram acidentalmente o grupo de arquivos, então eu deixaria assim.

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 de/www,/log e/backups usando a mkdir --mode=...opção.

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

Responder2

  1. Na verdade, não importa qual estrutura de pastas você está usando.
  2. Se você estiver usando -Ra opção 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 você sempre terá que usar chmodo comando para alterar a permissão se estiver fazendo alguma alteração manualmente.
  4. Você pode pedir /etc/sudoersao arquivo que permita que $user crie qualquer diretório com mkdircomando.

informação relacionada