Webszerver által létrehozott könyvtárak és fájlok jogosultságainak módosítása

A W3HOST wiki wikiből

Webszerver által létrehozott könyvtárak és fájlok jogosultságainak módosítása

A W3HOST webtárhelyekre elhelyezett weboldalak nagyobb biztonsága érdekében a php fájlokat futtató webszerver más felhasználói jogosultságokkal fut, mint amit FTP kapcsolaton keresztül használunk. Ennek előnye a nagyobb biztonság, azonban okoz némi kényelmetlenséget is (főleg Joomla használata esetén).

A kényelmetlenség akkor jelentkezik, mikor törölni szeretnénk a teljes oldalt FTP kapcsolaton keresztül, és néhány könyvtár és fájl ott marad a tárhelyen (azok maradnak ott, amelybe a weboldalunk elhelyezett valamit).

Miért jelent ez nagyobb biztonságot?

Mert ha figyelünk a helyes könyvtárak és fájlok jogosultságaira, akkor a webszerver (azaz a weboldal) csak azokat a fájloknak és könyvtáraknak a tartalmát tudja módosítani, amit mi engedélyezünk! Tehát mi szabályozhatjuk! Ez nagyon fontos. Azonban néhány speciális esetben ez fordítva is igaz lesz. Azaz FTP kapcsolattal mi sem fogjuk tudni írni/módosítani a webszerver (azaz a weboldal) által létrehozott tartalmat, azaz még törölni sem.

Itt egy kicsit speciálisabban is olvashatunk erről.

Ha törölni/módosítani szeretném a webtárhelyem teljes tartalmát, mit tegyek?

Hozzunk létre a webtárhelyünkön egy fájlt, pl.: jogosultsag.php. Ezt a fájlt ott helyezzük el, amely könyvtárban, és az összes alkönyvtárban szeretnénk elvégezni a jogosultság beállítást. Ez a megoldás NEM csökkenti a webtárhely biztonságát, csupán jogosultságot ad az FTP írhatóságra.

Tehát:

  • A jogosultsag.php fájl létrehozása a következő tartalommal:
<?php
echo "<html>";
echo "<head>";
echo "<title>W3HOST - Webtárhely fájlok és könyvtárak jogosultságainak beállítása. />";
echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\"/>";
echo "<meta name=\"description\" content=\"Minta a webszerver által létrehozott fájlok és könyvtárak jogosultságának módosítására.\" />";
echo "</head>";
 
echo "<body>";
echo "<pre>";
 
$success=true;
// Fájlok
$success=$success && changefilemod();
// Könyvtárak
$success=$success && changedirmod();
 
if ($success) {
	echo "\n\nA script futása sikeresen végetért.";
} else {
	echo "\n\nA script futása közben hiba törtent!";
}
 
echo "</pre>";
echo "</body>";
echo "</html>";
 
function changefilemod() {
  echo "\n\n1. Fájlok jogosultságainak beállítása...\n";
  $command="find " . $_SERVER["DOCUMENT_ROOT"] . " -uid " . posix_geteuid() . " -type f -exec chmod 664 '{}' \;";
  $output = system($command, $retval);
 
  if ($retval) {
    echo "\nA fájlok jogosultságainak beállítása NEM sikerült.\n";
    echo $output;
    return false;
  }
 
  echo "\nA fájlok jogosultságainak beállítása sikeresen megtörtént.\n";
  return true;
}
 
function changedirmod() {
  echo "\n\n2. Könyvtárak jogosultságainak beállítása...\n";
  $command="find " . $_SERVER["DOCUMENT_ROOT"] . " -uid " . posix_geteuid() . " -type d -exec chmod 775 '{}' \;";
  $output = system($command, $retval);
 
  if ($retval) {
    echo "\nA könyvtárak jogosultságainak beállítása NEM sikerült.\n";
    echo $output;
    return false;
  }
 
  echo "\nA könyvtárak jogosultságainak beállítása sikeresen megtörtént.\n";
  return true;
}
 
?>


Amint ez megtörtént, FTP kapcsolaton keresztül már nem fog gondot okozni ez a szerver környezet.