Dovoljenja datotek (chmod, chown) v Linuxu preprosto pojasnjena

Linux Branje: 3 min

V Linuxu ima vsaka datoteka in vsak imenik dovoljenja, ki določajo, kdo jo lahko bere, piše ali izvaja. Napačna nastavitev povzroči dve vrsti napak: pri prestrogih pravicah spletni strežnik datotek ne more brati (napaka 403) ali spletna stran ne more nalagati, pri preveč ohlapnih pa jih lahko spremeni vdrta skripta ali drug uporabnik.

Tri ravni dovoljenj

Vsaka datoteka ima tri kategorije dovoljenj:

  • Lastnik (owner, u): uporabnik, ki je datoteko ustvaril ali ji je dodeljen.
  • Skupina (group, g): člani uporabniške skupine, dodeljene datoteki.
  • Drugi (others, o): vsi drugi v sistemu.

Vrste dovoljenj

Vsaka kategorija ima lahko tri vrste pravic:

Pravica Pri datoteki Pri imeniku Vrednost
r (read) branje vsebine izpis vsebine 4
w (write) spreminjanje vsebine ustvarjanje, brisanje, preimenovanje datotek 2
x (execute) izvajanje kot program vstop v imenik 1

V izpisu ls -l so dovoljenja prikazana na primer takole: -rwxr-xr--. Prvi znak je vrsta (- datoteka, d imenik, l simbolna povezava), naslednjih devet znakov pa v skupinah po tri pokaže pravice lastnika, skupine in drugih uporabnikov. Na istem mestu sta vidni tudi imeni lastnika in skupine. V AlmaLinux in Rocky Linux je za pravicami še pika (-rw-r--r--.): ta pove, da ima datoteka oznako SELinux, k dovoljenjem ne spada. Oznako pokaže ls -Z (glej: SELinux: zakaj dobim napako „Permission denied”?).

Spreminjanje dovoljenj: chmod

S številkami

V številski obliki pravice treh kategorij opiše po ena števka, ki je vsota vrednosti r, w in x:

chmod 755 mappa
chmod 644 index.php

755 lastniku da polne pravice (rwx = 4+2+1 = 7), skupini in vsem drugim pa branje in izvajanje (r-x = 4+1 = 5). 644 lastniku dovoli branje in pisanje (rw- = 6), drugim pa le branje (r– = 4).

S črkami

Črkovna oblika spremeni obstoječe pravice:

chmod u+x szkript.sh     # a tulajdonos futtathatja
chmod go-w config.php    # odvzem pravice pisanja skupini in drugim
chmod o= titkos.txt      # drugi ne dobijo nobenih pravic

Priporočene nastavitve za spletne strani

Pri spletnih straneh so za imenike običajno primerna dovoljenja 755, za datoteke pa 644. Občutljive konfiguracijske datoteke (na primer wp-config.php) so lahko tudi strožje (640 ali 600), če spletni strežnik teče v imenu lastnika. Nastavitev celotnega drevesa imenikov:

find /var/www/oldal -type d -exec chmod 755 {} \;
find /var/www/oldal -type f -exec chmod 644 {} \;

Ne uporabljaj ukaza chmod -R 755 za celotno drevo, ker datoteke naredi izvršljive: v preizkusu je datoteka .php s tem postala -rwxr-xr-x, po zgornjem ukazu find … -type f … 644 pa spet -rw-r--r--. Pri veliko datotekah je končnica {} + hitrejša (find /var/www/oldal -type f -exec chmod 644 {} +), ker chmod dobi več datotek hkrati.

Sprememba lastnika: chown

chown spremeni lastnika in skupino datoteke ali imenika. Za to so potrebne pravice root ali sudo:

sudo chown felhasznalo:csoport fajlnev
sudo chown -R www-data:www-data /var/www/oldal

Stikalo -R ga uporabi rekurzivno, za celotno drevo imenikov. Uporabnik spletnega strežnika se razlikuje od distribucije do distribucije: v Debianu in Ubuntuju je www-data, v AlmaLinux in Rocky Linux pa apache ali nginx. Če bi spremenil le skupino, lahko uporabiš tudi ukaz chgrp.

Zakaj se izogibati 777?

777 vsem da polne pravice pisanja. Pogosto se pojavi kot hiter „popravek” napačne nastavitve dovoljenj, vendar lahko tako kateri koli proces datoteke spremeni ali jih zamenja z zlonamerno kodo. Na gostovanju cPanel PHP običajno teče kot lastni uporabnik računa, zato tam 755/644 povsem zadostuje. Dovoljenja je mogoče spremeniti tudi v Upravitelju datotek cPanela, glej: Upravljanje datotek na gostovanju cPanel. Na lastnem VPS vedno dodeli najmanjša potrebna dovoljenja.

Nazaj: Linux – članki (76)