Ce face os.chmod(), fchmod(), lchmod(), chflags(), lchflags()
chmod(cale, 0o640) setează permisiunile în notație octală: primele cifre sunt pentru proprietar, grup și restul (4 = citire, 2 = scriere, 1 = execuție). Se pot folosi și constantele din stat (stat.S_IRUSR | stat.S_IWUSR). fchmod() lucrează pe un fișier deschis, iar lchmod() pe legătura simbolică însăși (nu există pe Linux).
chflags() și lchflags() (BSD, macOS) setează flag-uri speciale, de exemplu stat.UF_IMMUTABLE (fișierul nu mai poate fi modificat sau șters) sau stat.UF_HIDDEN.
Parametri
| Parametru | Descriere |
|---|---|
cale / fd |
Fișierul. |
mod |
Permisiunile, de exemplu 0o755. |
flaguri |
Combinație de constante stat.UF_* / stat.SF_*. |
Ce returnează
None.
Exemple
Exemplul 1: Permisiuni pentru un script și o cheie
import os, stat
open("script.sh", "w").close()
open("cheie.pem", "w").close()
os.chmod("script.sh", 0o755)
with open("cheie.pem") as f:
os.fchmod(f.fileno(), stat.S_IRUSR | stat.S_IWUSR)
for nume in ["script.sh", "cheie.pem"]:
print(nume, stat.filemode(os.stat(nume).st_mode))
Rezultat
script.sh -rwxr-xr-x
cheie.pem -rw-------
Exemplul 2: Flag-uri pe macOS
import os, stat
open("important.txt", "w").close()
os.chflags("important.txt", stat.UF_IMMUTABLE)
try:
os.remove("important.txt")
except PermissionError as e:
print("Nu se poate șterge:", e.strerror)
os.chflags("important.txt", 0)
os.symlink("important.txt", "scurt")
os.lchflags("scurt", stat.UF_HIDDEN)
os.lchmod("scurt", 0o600)
print(oct(os.lstat("scurt").st_mode & 0o777))
Rezultat (pe macOS)
Nu se poate șterge: Operation not permitted
0o600
Greșeli frecvente
- Scrii
os.chmod(f, 755)fără prefixul0o: 755 zecimal înseamnă alte permisiuni.
Comenzi înrudite
os.stat(), os.lstat() și os.fstat(): Toate informațiile despre un fișier: mărime, permisiuni, proprietar, date.os.umask(): Setează masca de permisiuni scoase automat de la fișierele și directoarele noi.Path.stat(), lstat(), chmod(), lchmod(), owner(), group(): Informații despre un fișier (mărime, date, permisiuni, proprietar) și schimbarea permisiunilor.os.access(): Verifică dacă procesul are drept de citire, scriere sau execuție asupra unui fișier.