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_html
directorio bajo su home
... lo que les permite implementar múltiples aplicaciones como hosts virtuales con nombre. Cada usuario pertenece al www-data
grupo 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_html
así 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
-R
la opción recursiva (), pero ¿debería repetir lo mismo$vhost/www
para$vhost/logs
y$vhost/backups
? - ¿Estoy en lo cierto al pensar que el chmod anterior probablemente sea redundante?
- ¿Hay alguna manera de ejecutar los
mkdir
comandos 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
- En realidad, no importa qué estructura de carpetas esté utilizando.
- Si está utilizando
-R
la opción en chown, solo afectará a los archivos y directorios que estén presentes en el momento en que ejecute el comando. - No, porque siempre debe usar
chmod
el comando para cambiar el permiso si realiza algún cambio manualmente. - Puede solicitarle
/etc/sudoers
al archivo que permita a $user crear cualquier directorio conmkdir
el comando.