.svn könyvtárak tiltása Apache webszerveren

Ha az SVN-t web alkalmazások verziókezelésére használjuk, és az éles szerveren lévő fájlokat is verziókezelni akarjuk, akkor egyrészt jól jöhet a tipp, hogyan tegyük ezt leállás nélkül, másrészt belefutunk abba a problémába, hogy a webszerver megjeleníti a .svn könyvtárak tartalmát.

Ez nekünk nem jó, nagyon nem. Ugyanis biztonsági rés keletkezik, az egyébként gondosan felépített pajzson.

El kell tehát magyarázni a webszervernek, hogy a .svn könyvtárakat és azok tartalmát felejtse el, soha ne szolgáljon ki ilyen tartalmat.

Ha Apache kiszolgálót használunk, akkor ezt megtehetjük a .htaccess fájlokban is, de pratikusabb közvetlenül a központi konfigurációs fájlban, a httpd.conf-ban megtenni. Ennek helye linux rendszereken általában a /etc/httpd/conf/httpd.conf, Windows környezetben pedig C:\Program Files\Apache\Apache2\conf\httpd.conf

És a lényeg, hogyan tehetjük ezt meg:

<Directory ~ "\.svn">
  Order allow,deny
  Deny from all
</Directory>

A beállítás elég egyszerű, különösebb magyarázatot nem igényel. A ~ jelentése, hogy reguláris kifejezéssel mintát fogunk illeszteni az aktuálisan vizsgált útvonalra. A "\.svn" jelentése, hogy minden olyan elérési útra igaz a beállítás, amiben benne van a .svn string. A következő két sor meg annyit mond, hogy tilos kiszolgálni.

Ennyi, remélem hasznos volt.

6 hozzászólás

Ha deploy-nak használod az

Ha deploy-nak használod az svn up-ot, lehetnek gondok a jogosultságokkal, ui az svn a jogosultságokat nem őrzi meg. Két tipp:
1. umask beállítása, pl. $ umask 0022, de így minden frissített fájl jogai egyformák lesznek;
2. lehet metainfókat adni a fájlokhoz, így a jogokat is el lehet tárolni, és visszaállítani minden update után: http://svn.haxx.se/users/archive-2005-12/0067.shtml

Egyelőre (még) nem

Egyelőre (még) nem deploy-nak használom az SVN-t, de tervezem. Jó tipp, köszi!