Estoy usando los espacios de trabajo SSH de Cloud9IDE y, por diversas razones, debemos crear ese túnel SSH como root. Esto no es realmente un problema, sin embargo, los archivos y directorios que estamos creando con él en realidad se encuentran en una carpeta de usuario (en este caso digamos que el usuario es "foobar", por lo que los archivos se crean en /home/foobar/public_html/ desarrollador).
El problema es que dado que el usuario "root" en realidad está creando los archivos, navegar a esos archivos en el navegador devuelve un 404, ya que el servidor usa el usuario "foobar" para servir páginas.
Necesito una forma de garantizar que, aunque los archivos hayan sido creados por el usuario root, el usuario foobar debería poder leerlos y ejecutarlos como si ese usuario los hubiera creado.
Intenté usar setfacl -Rdm con un grupo que incluye root y foobar, y eso terminó haciendo que foobar ya no pudiera servir ningún archivo en su directorio.
Por ejemplo:
-rw-r--r-- 1 foobar foobar 125 May 15 11:26 die.html
-rw-r--r-- 1 root root 127 May 15 12:20 dies.html
En este caso, el archivo "die.html" se entrega correctamente, pero "dies.html" genera un error 404 debido al propietario y al grupo.
¿Alguna idea sobre cómo resolver esto? Para reiterar: necesitaría que esto sucediera con todos los archivos futuros, no solo con los archivos que existen actualmente.
Respuesta1
Elige tu opción:
chown foobar:foobar *
chown foobar:foobar dies.html
chown foobar *
chown foobar dies.html
Entonces, para que todos los archivos creados sean propiedad de foobar, esto es lo que debe hacer:
ejecuta crontab -e
e ingresa esto:
* * * * * while true; do chown foobar:foobar -R /home/foobar/public_html/dev/* & sleep 1; done
Guárdalo y deja que cron se haga cargo de los permisos.
Respuesta2
cambie su identidad de usuario a foobar después de establecer el túnel ssh ingresando su foobar
la contraseña de foobar.
Respuesta3
Crear un nuevo grupo, decirdesarrolladores y coloque a todos los usuarios que necesiten acceso de lectura/escritura a sus archivos en ese grupo. Y luego cambie el grupo de ese directorio adesarrolladores.
Con este comando:
chgrp -R devs /home/foobar/public_html/dev
Después de ese conjuntosetgidbit en ese directorio con este comando:
chmod -R g+s /home/foobar/public_html/dev
A partir de este punto, todos los archivos creados en ese directorio serán propiedad del grupo.desarrolladoresy todos los usuarios de ese grupo tendrán acceso de lectura/escritura a los archivos (depende de los permisos).
Si quieres saber que es setgidrevisa este enlace.