![¿El grupo www-data escribe después de sftp?](https://rvso.com/image/1413926/%C2%BFEl%20grupo%20www-data%20escribe%20despu%C3%A9s%20de%20sftp%3F.png)
Me gustaría que mi usuario de Apache pueda leer y escribir archivos, que mis usuarios de SFTP puedan cargar archivos que luego estén disponibles (rwX) tanto para otros usuarios de SFTP como para Apache, y que todos los demás puedan leer. .
psst: I know this question comes up a lot, and I've been reading answers and trying many many things for two days now and am now thoroughly confused
. TambiénSoy consciente de los riesgos de seguridad que implica permitir el acceso de escritura de www-data a mi sitio, pero ese no es el tema que estoy aquí para discutir.
Aquí están mis pasos:
usermod -aG www-data tim
mkdir -p /var/www/mysite/public_html
# now upload/untar the site, etc. not shown here #
chown -R www-data:www-data /var/www/mysite
chmod -R u+rwX,go+rwX,g+s,o-w /var/www/mysite
# now make the apache virtual host and so on .. not shown here #
Los archivos internos public_html
están configurados así: el grupo ha escrito:
-rw-rwSr-- 1 www-data www-data favicon.ico
Ahora, inicio sesión como mi cuenta "tim" usando sftp, subo un nuevo archivo a la carpeta public_html y luego miro su permiso:
-rw-r--r-- 1 tim wwww-data COPYING.txt
Así que heperdidogrupo ESCRIBIR, aunque pensé que lo había agregado g+s
en la carpeta principal para que heredara el grupo.
Aparentemente esto no significa que también herede el grupo /mask/. Leí en alguna parte (y perdí la referencia) que SFTP no respeta la umask; Parece que ahí es donde se pierden los permisos, pero no sé cómo solucionarlo.
editar Encontré la referencia de umask y la probé.http://john.parnefjord.se/node/62- Puedo ver que el archivo se está ejecutando al iniciar sesión, pero aún así la máscara no está configurada en g+w después de una carga.
Respuesta1
No verifiqué mucho, pero lo intenté 2 o 3 veces con diferentes permisos de grupo en un servidor local.
Lo que entiendo aquí es que, cualesquiera que sean los permisos que se otorgan al archivo en el sistema local, sonexactamente los mismos permisosobtenido por el archivo en el servidor remoto.
Respuesta2
Cuando un proceso crea un archivo en Unix, el proceso controla qué permisos se asignan al archivo. El proceso especifica un conjunto de permisos, normalmente 0666 o 0777, en la llamada al sistema de creación de archivos. Los permisos son modificados por la umask del proceso para producir los permisos reales para el archivo. Los indicadores especiales en el directorio principal no forman parte de este proceso. Un proceso también puede cambiar los permisos de un archivo existente mediante otra llamada al sistema denominada chmod()
.
SFTP es en realidad un protocolo de sistema de archivos remoto. Cuando un cliente crea un archivo en un servidor, el cliente puede decirle al servidor exactamente qué permisos otorgar al nuevo archivo. El cliente también puede invocar chmod()
de forma remota para cambiar los permisos de los archivos existentes. El servidor OpenSSH SFTP no proporciona ningún medio para que el administrador del servidor restrinja esto, que yo sepa.
Lo que probablemente haría es escribir un script de shell que recorra la carpeta y corrija los permisos de los archivos. Puede ejecutar el script cron
cada pocos minutos. Algo como lo siguiente debería ayudarte a comenzar:
#!/bin/sh
cd /var/www/mysite || exit 1
find . -type f ! -perm 0664 -exec chmod 0664 '{}' ';'