Ce face os.umask()
Când creezi un fișier, permisiunile cerute (de obicei 0o666 pentru fișiere și 0o777 pentru directoare) sunt reduse cu biții din umask. Cu masca uzuală 0o022, fișierele noi au 0o644. umask(noua) setează masca și returnează valoarea veche; nu există o funcție doar pentru citire.
Parametri
| Parametru | Descriere |
|---|---|
masca |
Biții de permisiuni eliminați. |
Ce returnează
Masca anterioară.
Exemple
Exemplul 1: Fișiere private
import os, stat
veche = os.umask(0o077)
open("privat.txt", "w").close()
os.mkdir("privat_dir")
print(stat.filemode(os.stat("privat.txt").st_mode), stat.filemode(os.stat("privat_dir").st_mode))
os.umask(0o022)
open("public.txt", "w").close()
print(stat.filemode(os.stat("public.txt").st_mode))
os.umask(veche)
Rezultat
-rw------- drwx------
-rw-r--r--
Greșeli frecvente
- Te aștepți ca
open(..., "w")să creeze fișierele cu permisiunile pe care le vrei. Ele depind de umask; setează-le explicit cuos.chmoddacă contează.
Comenzi înrudite
os.chmod(), fchmod(), lchmod(), chflags(), lchflags(): Schimbă permisiunile unui fișier și, pe BSD/macOS, flag-urile speciale.os.mkdir() și os.makedirs(): Creează un director sau un întreg șir de directoare imbricate.