Por algunas razones obvias, necesito establecer el umask
valor para una carpeta específica. ¿Cómo se puede 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 ahora podría explicar el problema más claramente.
permissions
umask
Bakhtiyor
fuente
fuente
Respuestas:
podrías usar
setfacl
¿Dónde
name
está el nombre del grupo?Para saber a qué grupos pertenece usted o un usuario específico, consulte En unix / linux, ¿cómo saber en qué grupo se encuentra un usuario determinado a través de la línea de comandos?
fuente
setfacl
ha cambiado. Recibo un error que indica que-m
no es una opción válida.setfacl
no ha cambiado. Lo más probable es que no haya proporcionado el nombre de grupo adecuado (después-m
).setfacl
es para las listas de control de acceso y noumask
. Una mejor solución, pero en realidad no es lo que se pidió, no creo.sudo setfacl -Rdm ...
(Omita la R para la recursividad) debería funcionar. @ Wyatt8740 (correcto). Para estar seguro, ejecute:man setfacl
y escriba/-modify
. Necesitas usarsudo
.No puede establecer 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/home/user/directory
en algo así como 700. Eso hará imposible que otros usuarios (excluyendo la raíz del superusuario) desciendan en/home/user/directory
.Soy paranoico y establezco los permisos en
/home/user
750, por lo que solo yo puedo leer, escribir y descender en mi directorio de inicio. Esto tiene como consecuencia que/home/user/Public
otras personas no puedan acceder a carpetas como , pero puedo vivir con eso.Por actualización de su pregunta: aún así, no puede controlar eso en el sistema de archivos (aparte de usar un tipo de sistema de archivos diferente como FAT, que se desaconseja), 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
umask
función:Puede poner esto en un archivo de configuración, como el archivo que contiene la contraseña de conexión de la base de datos (pensando en aplicaciones como Wordpress).
Recuerde que es 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 establecer la máscara de usuario deseada. Recuerde que los permisos les gustan
755
y644
son bastante peligrosos para las aplicaciones web, si el código es sensible, todos pueden leerlo.fuente
/home/user/Public
(mount -o bind /home/user/Public /some/other/place
) para evitar el problema de permisos del directorio principal.Para cambiar los permisos de una carpeta, use chmod. umask es para archivos.Configure umask para lo que necesita
y cambia de nuevo cuando termines
fuente
umask
). Perdón por agregar información confusa.Otra solución podría ser simplemente establecer la identificación del grupo en los archivos creados en el directorio, lo que hace que los nuevos archivos sean propiedad de la identificación del grupo del directorio, en lugar de la identificación del grupo del usuario que creó los archivos. Así que creo que podrías hacer:
chown www-data:www-data /my/folder
chmod 4755 /my/folder
Esto establece el permiso de archivo especial setgid, lo que provocaría que todos los archivos creados
/my/folder
sean propiedad delwww-data
grupo, que luego tiene permiso rx (5) debido al directorio padre.fuente
Proporcionar una solución anterior implementada con ganchos de concha y
direnv
. La siguiente solución puede ser más compatible en caso desetfacl
que no esté disponible en su sistema. (por ejemplo, macOS)Uso
.envrc
deexport
costumbreumask
valor de dir específica, y laexport
ed env var será descargado cuando salga de ese directorio.Defina un gancho para cambiar el
umask
valor una vez que se cambie el directorio de trabajo.Por el momento, la inicialización directa de hook para zsh no admite
chpwd
hook. Si la solicitud de extracción GH-514 no se ha fusionado cuando ve esta página. Por favor comenteeval "$(direnv hook zsh)"
y el ganchodirenv
enchpwd
forma manual con la siguiente código,Fuente: dynamic-umask-based-on-cwd.md
fuente
Relacionado, pero quizás no aplicable en este caso, el siguiente clip es de
.zshrc
:Entonces, para uso interactivo, algo así funcionaría (pero, obviamente, no para proporcionar seguridad).
fuente