Cómo configurar umask para una carpeta específica

19

Por algunas razones obvias, necesito establecer el valor de umask para una carpeta específica. ¿Cómo puede uno hacer eso?

¡Gracias de antemano!

ACTUALIZACIÓN 1

La razón por la que necesito usar umask para una carpeta específica es la siguiente. Tengo una aplicación web y cuando crea algún archivo, el permiso predeterminado es 700. Pero necesito al menos 755 permisos para ese archivo. Creo que podría explicar el problema más claramente ahora.

    
pregunta Bakhtiyor 22.05.2011 - 20:02

4 respuestas

26

podrías usar setfacl

setfacl -d -m group:name:rwx /path/to/your/dir

Donde name es el nombre del grupo

Para encontrar a qué grupos pertenece usted o un usuario específico, consulte En unix / linux, ¿cómo se puede saber en qué grupo está un usuario dado a través de la línea de comando?

    
respondido por el yogi70 14.11.2012 - 16:31
10

No puede configurar umask por directorio, es un valor de nivel de proceso. Si necesita evitar que otros lean archivos en un directorio, revoque los bits de permisos correspondientes.

Por ejemplo, si tiene un directorio /home/user/directory con algunos archivos y directorios que pueden obtener permisos como 777 de un proceso, establezca los bits de permiso de /home/user/directory en algo así como 700. Eso hará que sea imposible para otros usuarios (excluyendo la raíz del superusuario) para descender en /home/user/directory .

Soy paranoico y establezco los permisos en /home/user en 750, por lo que solo puedo leer, escribir y descender en mi directorio personal. Esto tiene como consecuencia que otras personas no puedan acceder a carpetas como /home/user/Public , pero puedo vivir con eso.

Por actualización de su pregunta: aún así, no puede controlar eso en el sistema de archivos (que no sea usar un tipo de sistema de archivos diferente como FAT, que está muy desaconsejado), debe hacerlo en su aplicación web. Si su aplicación web está codificada en PHP, puede cambiar la umask sobre la marcha utilizando la función umask :

<?php
umask(0022);
// other code
?>

Puedes poner esto en un archivo de configuración, como el archivo que contiene la contraseña de conexión a la base de datos (pensando en aplicaciones como Wordpress).

Recuerde que se trata de un valor de proceso, algunos servidores web le permiten configurarlo en sus archivos de configuración; de lo contrario, podría modificar los scripts de inicio para configurar el umask deseado. Recuerde que los permisos como 755 y 644 son bastante peligrosos para webapps, si el código es sensible, todos pueden leerlo.

    
respondido por el Lekensteyn 22.05.2011 - 20:18
0

Para cambiar los permisos de una carpeta, use chmod. umask es para archivos.

Configura umask a lo que necesitas por

umask xxx

y cambie cuando haya terminado

umask 022
    
respondido por el wojox 22.05.2011 - 20:09
0

Otra solución podría ser simplemente establecer el id del grupo en los archivos creados en el directorio, lo que hace que los nuevos archivos pertenezcan al id del grupo de directorios, en lugar del id del grupo del usuario que creó los archivos. Así que creo que podrías hacer lo siguiente:

chown www-data:www-data /my/folder

chmod 4755 /my/folder

Esto establece el permiso del archivo especial setgid, lo que provocaría que todos los archivos creados en /my/folder sean propiedad del grupo www-data , que a continuación tiene el permiso rx (5) debido al directorio principal.

    
respondido por el Bastiaan 11.07.2017 - 08:49

Lea otras preguntas en las etiquetas