¿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?

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).


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.