
¿Puedo hacer una pregunta sobre el permiso de archivos? Configuré el servidor Ubuntu donde se ejecutó Apache. Tengo un formulario de carga php simple y puedo cargar archivos en /var/www/site/uploads de la siguiente manera.
sandbox@sandbox-virtual-machine:/var/www/site/uploads$ ll
total 1736
drwxrwxrwx 2 www-data www-data 4096 Oct 18 02:53 ./
drwxrwxrwx 3 sandbox sandbox 4096 Oct 18 00:42 ../
-rw-r--r-- 1 www-data www-data 145998 Oct 18 02:53 3d wallpaper pic.jpg
-rw-r--r-- 1 www-data www-data 166947 Oct 18 02:53 3D Wallpapers 9.jpg
-rw-r--r-- 1 www-data www-data 1451489 Oct 18 02:53
6453_3d_landscape_hd_wallpapers_green.jpg
¿Hay alguna forma de cargar archivos y aparecen como
-rw-r--r-- 1 sandbox sandbox 145998 Oct 18 02:53 3d wallpaper pic.jpg
-rw-r--r-- 1 sandbox sandbox 166947 Oct 18 02:53 3D Wallpapers 9.jpg
-rw-r--r-- 1 sandbox sandbox 1451489 Oct 18 02:53
6453_3d_landscape_hd_wallpapers_green.jpg
para poder enviarlos inmediatamente al script de shell en espera/ejecución. En este momento, el script en espera (mover, sumas de verificación, cambiar nombre, cambiar tamaño, etc.) no puede hacer nada con los archivos cargados con atributos de www-data. Si solo hago como cuenta local, como
sandbox@sandbox-virtual-machine:/var/www/site/uploads$touch testfile
entonces el script podrá ejecutarse como me gustaría. Cualquier sugerencia sería agradecida, gracias de antemano también.
Gracias a todos por ayudarme, pude progresar.
Ahora estoy cerca de resolverlo y agregar el resultado.
sandbox@sandbox-virtual-machine:/var/www/site/uploads$ ll
total 388
drwxrwxrwx 2 www-data www-data 4096 Oct 18 04:22 ./
drwxrwxrwx 3 sandbox sandbox 4096 Oct 18 04:17 ../
-rw-r--r-- 1 sandbox sandbox 166947 Oct 18 04:21 3D Wallpapers 9.jpg
-rw-r--r-- 1 sandbox sandbox 219808 Oct 18 04:20 adafruit_pi.png
-rw-rw-r-- 1 sandbox sandbox 0 Oct 18 04:22 test
¿Cómo puedo configurar el permiso para archivos cargados como 'prueba' solo con diferencia en el grupo medio? Como adafruit_pi.png Vs prueba. ¿Qué declaración debo insertar en el código php, por favor?
Respuesta1
PHP se ejecuta como una aplicación web en Apache y ese es el www-data
usuario que estás viendo.
Después de la carga, puedes cambiar el propietario y el grupo de los archivos con:
exec( 'chgrp sandbox 3*.jpg' );
exec( 'chown sandbox 3*.jpg' );
Tenga en cuenta que después de cambiar los permisos, el servidor web no podrá escribir en los archivos, ni eliminarlos ni moverlos.
Respuesta2
Intente agregar el usuario www-data al grupo sandbox
Respuesta3
Intente cambiar el usuario y el grupo para el servicio de Apache: busque en el archivo de configuración de Apache (creo que en Ubuntu está ubicado en /etc/apache2/apache2.ini) y busque las líneas:
User www-data
Group www-data
y cambiar www-data
a sandbox
.
Tenga en cuenta que el sandbox
usuario debe tener permisos de lectura/escritura en la carpeta webroot.
Espero eso ayude.
NOTA: Esto debe implementarse con fines de prueba, no es recomendable para un entorno de producción.