¿Cómo le doy al usuario de www-data una carpeta en mi carpeta de inicio?

31

Tengo una carpeta: /home/myuser/folderA

Quiero dar al usuario de www-data acceso de escritura a lo anterior, mientras que 'myuser' continúa teniendo acceso normal (ya que de todos modos es la carpeta de inicio de myuser).

¿Qué comandos necesito usar?

Nota: no quiero www-datatener acceso a ninguna otra carpeta /home/myuser/.

Gracias por adelantado.

nEnlazado
fuente

Respuestas:

46

Primero, agréguese al grupo www-data

usermod -a -G www-data (your username)

Luego:

chgrp www-data /home/myuser/folderA
chmod g+rwxs /home/myuser/folderA

Debería hacer el truco a menos que los permisos en su /home/myuserno permitan el acceso de otros usuarios.

El primer comando cambia la propiedad del grupo de la carpeta a la del servidor web. El segundo comando otorga a los miembros del www-datagrupo derechos de lectura, escritura, entrada al directorio, y el sindicador del grupo garantizará que cualquier archivo que se cree dentro de ese directorio tome www-datacomo grupo, por lo que si crea un archivo, myuserel www-datausuario tendrá acceso.

Nótese bien. esto también depende de la umaskconfiguración de su cuenta de usuario y del servidor web: debe asegurarse de que los archivos creados en la carpeta A tengan rwacceso de grupo (y los directorios creados dentro del grupo de necesidad rwx)

Si su servidor web no tiene derechos de entrada en su /home/myuserdirectorio (bastante sensato), entonces no entrará allí a menos que haga otra cosa. Dos soles:

  1. sudo mount --bind /home/myuser/folderA /var/www/mysite/folderA (Este es un truco feo y tendría que repetirse después del reinicio. Pero un truco poderoso, también se puede usar para hacer que las carpetas sean accesibles dentro de las cárceles SSH).

  2. Simplemente mueva la carpeta compartida a otro lugar, por ejemplo /home/shared-stuff/folderA.

La segunda opción es la mejor. Digamos que el contenido de la carpeta A es realmente público y no te importa quién lo vea, puedes configurarlo como

sudo mkdir -m777 /home/shared-stuff

Luego puede poner dentro de eso, digamos, la carpeta A con permisos como se indicó anteriormente, y la carpeta B a la que www-data no debería tener acceso con diferentes permisos, por ejemplo

$ cd /home/shared-stuff ; ls -l
drwxrwsr-x 2 myuser www-data   4096 Jan 17 21:46 folderA
drwxrwx--- 2 myuser myuser     4096 Jan 17 21:46 folderB
artfulrobot
fuente
lo que es sen g+rwxs?
T.Todua
Bit "Grupo pegajoso". Su efecto explicado en el párrafo que comienza con "El primero ..." :-)
artfulrobot
6

Otra forma es cambiar el nombre de usuario directamente en la configuración de apache, esto es si es su máquina local y guarda imágenes de otro lugar que aplastarían los permisos realizados en la carpeta. ¡También debe hacerlo si solo tiene 1 usuario y no le importa www-data!

$ sudo vi /etc/apache2/apache2.conf

Encuentra usuario y grupo y pon el tuyo
User <Your User>
Group <Your Group>

$ sudo service apache2 restart
Shadowbob
fuente
Esta solución no parece tan segura, ¿alguien sabe qué tipo de amenazas de seguridad causará esta configuración?
Fleuv
Estoy bastante seguro de que no es seguro, es por eso que solo di la precisión de la máquina local.
Shadowbob
Esta solución proporciona todo el acceso a apache a su carpeta ...
Loenix