¿Establecer grupo predeterminado para el usuario cuando crea nuevos archivos?

37

A menudo me encuentro creando archivos a medida que los creé a través de SSH y son propiedad de ellos, jm:jmpor ejemplo.

Luego, para permitir que Apache acceda a él, necesito hacerlo, por ejemplo chown jm:www-data.

Estoy seguro de que puedo especificar que cuando creo archivos, en lugar de usar el grupo bajo mi nombre, ¿especifique otro?

¿O hay una mejor manera de administrar usuarios / grupos?

JM en el trabajo
fuente

Respuestas:

75

Si desea que todos los archivos nuevos en un directorio particular sean propiedad de un grupo en particular, simplemente aplique el setgidbit en él:

chgrp www-data /some/dir
chmod g+s /some/dir

Si tiene un árbol de directorios existente al que desea aplicar este comportamiento, puede hacerlo con find:

find /some/dir -type d -exec chgrp www-data {} +
find /some/dir -type d -exec chmod g+s {} +

(si los directorios ya pertenecen al grupo correspondiente, puede omitir el primer comando en estos dos ejemplos).

James Henstridge
fuente
1
¡Buena respuesta! ¿Podría, por favor, aclarar qué significan los símbolos ... {} +?
Alexander Lomia
3
Son argumentos del findcomando, cubiertos en la página del manual. Para la primera invocación, ejecutará el comando chgrp www-data, agregando varios resultados como argumentos (en lugar de invocar el comando una vez para cada resultado que obtendría {} \;).
James Henstridge
66
¿Por qué no usar chmod g+s /some/dir -R? Acabo de probar y parece funcionar.
Cragmonkey
13
@Cragmonkey: eso también establecerá el bit setgid en los archivos normales. Si alguno de ellos es ejecutable, esto permitiría a otro usuario en el sistema obtener los privilegios del grupo que posee el archivo.
James Henstridge