Problema de permisos de usuario Linux

Problema de permisos de usuario Linux

Cada vez que creo un nuevo archivo desde "eclipse", necesito ejecutar estas dos líneas de código para obtener el permiso de lectura/escritura:

chmod -R 775 /var/www/folder/filename.extension

y/o

sudo chown -R www-data:www-data /var/www

Y, si copio algunos archivos en esa carpeta del servidor y accedo a ellos desde la URL del navegador como:

localhost/folder/filename.extension

Recibo un error de permiso del servidor Apache.

¿No hay alguna manera de poder deshacerme de este problema?

*Nota:El error principal ocurre cuando mi move_uploaded_file()función intenta mover el archivo al /var/www/MyProject/directorio.

Respuesta1

Utilice el bit SGID.

Haga esto una vez y olvídese de este problema:

chmod g+s /var/www/folder

Quizás quieras hacer lo mismo con todas las subcarpetas:

find /var/www/folder -type d | xargs chmod g+s

y, por si acaso:

find /var/www/folder -type d | xargs chgrp www-data

Ahora todos los archivos que se creen /var/www/folder/pertenecerán al grupo propietario de la carpeta que los contiene, pase lo que pase. Esto le permitirá crear cualquier archivo o carpeta sin preocuparse de que no pertenezcan, por ejemplo, alwww-datosgrupo, que es lo que quieres.

Tenga en cuenta que esto funcionará solo para archivos o carpetas que se creen dentro del directorio. Si los archivos se crean en otro lugar y se mueven al árbol de directorios, aún deberá cambiar la propiedad manualmente.

Ejemplo:

# Create folder that belongs to www-data group
$ mkdir test
$ chown john.www-data test
$ ls -l

drwxr-xr-x 2 john www-data 4096 Jun 17 10:14 test

# Create a file, check the ownership
$ touch test/file1
$ ls -l test/

-rw-r--r-- 1 john users       0 Jun 17 10:16 file1

# Set the SGID bit
$ chmod g+s test
$ ls -l

drwxr-sr-x 2 john www-data 4096 Jun 17 10:19 test

# Create a file, check the ownership
$ touch test/file2
$ ls -l test/

-rw-r--r-- 1 john users       0 Jun 17 10:18 file1
-rw-r--r-- 1 john www-data    0 Jun 17 10:19 file2

Más informaciónaquí.

Respuesta2

Puede utilizar ACL predeterminadas para asignar permisos de usuarios y grupos a nuevos archivos y directorios:

setfacl -dR u:domain:rwx,g:www-data:rwx /var/www/folder/filename.extension

Respuesta3

Primero, me gustaría señalar que se debe ser más específico al hacer preguntas; por ejemplo, qué sistema operativo o distribución de Linux está utilizando, ya que eso puede acelerar enormemente el proceso de encontrar una solución. Dicho esto, puede comenzar a solucionar problemas cambiando la carpeta específicapropiedadyUAC(Control de acceso de usuario) de forma recursiva, así:

chown domain:www-data /var/www/folder -chR

chmod 775 /var/www/folder -cR

NOTA: Al excluir la barra diagonal final(/)al final del nombre de la carpeta, sus cambios se aplicarán a la carpeta y a todo su contenido.


En cuanto a los errores de permiso al acceder al archivo (¿script?) en el navegador, debe asegurarse de que su usuario tenga los permisos correctos para publicar archivos en formato apache. Eso debería solucionarse editando su /etc/httpd/*/httpd.confarchivo y agregando:

User domain
Group www-data

información relacionada