Permisos de archivos PHP/Linux

Permisos de archivos PHP/Linux

¿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-datausuario 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-dataa sandbox.

Tenga en cuenta que el sandboxusuario 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.

información relacionada