¿Cómo configuro los archivos y directorios creados como raíz para que sean leídos y ejecutables como otro usuario?

¿Cómo configuro los archivos y directorios creados como raíz para que sean leídos y ejecutables como otro usuario?

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 -ee 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 foobarla 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.

información relacionada