← retour aux snippets

umask: définir temporairement un umask pour créations

Contrôler les permissions par défaut lors de la création de fichiers/dirs.

python filesystem #umask#permissions#security

objectif

Contrôler les permissions par défaut lors de la création de fichiers/dirs.

code minimal

import os, tempfile, pathlib, stat
if os.name == "posix":
    old = os.umask(0o077)  # restreindre
    try:
        with tempfile.TemporaryDirectory() as tmp:
            p = pathlib.Path(tmp)/"f"; p.write_text("x", encoding="utf-8")
            mode = stat.S_IMODE(os.stat(p).st_mode)
            print((mode & 0o077) == 0)  # attendu: True (pas de perms groupe/autres)
    finally:
        os.umask(old)
else:
    print(True)

utilisation

import os
if os.name == "posix":
    cur = os.umask(0o022); os.umask(cur)  # lire la valeur courante
    print(isinstance(cur, int))
else:
    print(True)

variante(s) utile(s)

import os
print(os.name in ("posix","nt"))

notes

  • umask affecte les permissions maximales autorisées à la création.
  • Réinitialisez toujours l’umask après usage (try/finally).