Cambiar permisos en archivos de usuario para automatizar la creación de Apache VirtualHost

Cambiar permisos en archivos de usuario para automatizar la creación de Apache VirtualHost

Actualmente tengo una pequeña máquina Ubuntu Server 12.04 (entorno de prueba) con aproximadamente 3 usuarios no root creados. Cada usuario tiene su propio public_htmldirectorio bajo su home... lo que les permite implementar múltiples aplicaciones como hosts virtuales con nombre. Cada usuario pertenece al www-datagrupo Apache, configurado de la siguiente manera:

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

Ahora, como usuario root, estoy en el proceso de crear un script bash que automatizará la creación de las carpetas para VirtualHost en un usuario solicitado, public_htmlasí como también creará una entrada asociada en /etc/apache2/sites-available/. El script (ejecutado con sudo) solicitará el usuario ( $uzer) y el nombre del host virtual deseado ( $vhost). Hasta ahora, después de realizar algunas comprobaciones, finalmente llego a lo siguiente...

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

Necesito cambiar la propiedad de estas carpetas recién creadas, por lo que no estoy seguro de si debería hacer lo siguiente:

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

Mis preguntas:

  • ¿Mi estructura de carpetas es correcta/ideal?
  • Sé que he usado -Rla opción recursiva (), pero ¿debería repetir lo mismo $vhost/wwwpara $vhost/logsy $vhost/backups?
  • ¿Estoy en lo cierto al pensar que el chmod anterior probablemente sea redundante?
  • ¿Hay alguna manera de ejecutar los mkdircomandos como usuario $uzer?

Respuesta1

P: ¿La estructura de mi carpeta es correcta/ideal?

R: La estructura de carpetas parece estar bien.

P: Sé que he usado la opción recursiva (-R), pero ¿debería repetir lo mismo para $vhost/www, $vhost/logs y $vhost/backups?

R: Sería redundante ejecutarlo en esos directorios

P: ¿Estoy en lo cierto al pensar que el chmod anterior probablemente sea redundante?

Sí, técnicamente es redundante porque su sudo inicial que crea los directorios está configurando el 'establecer bit de identificación de grupo', pero configurar ese bit (el 2 en 2750) no es una garantía. He visto directorios con esto en los que los usuarios movieron archivos al directorio o cambiaron accidentalmente el grupo de archivos, así que lo dejaría.

¿Hay alguna manera de ejecutar los comandos mkdir como usuario $uzer?

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

También puede guardar un paso en el chmod de /www, /log y /backups usando el mkdir --mode=...modificador.

Por ejemplo

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

Respuesta2

  1. En realidad, no importa qué estructura de carpetas esté utilizando.
  2. Si está utilizando -Rla opción en chown, solo afectará a los archivos y directorios que estén presentes en el momento en que ejecute el comando.
  3. No, porque siempre debe usar chmodel comando para cambiar el permiso si realiza algún cambio manualmente.
  4. Puede solicitarle /etc/sudoersal archivo que permita a $user crear cualquier directorio con mkdirel comando.

información relacionada