Tiedostojen käyttöoikeuksien lukeminen ja oikea asettaminen VPS:lläsi
Jokaisella VPS:si tiedostolla ja kansiolla on omistaja, ryhmä ja oikeudet. Jos oikeudet ovat liian väljät, murrettu verkkosivusto tai palvelu voi kirjoittaa minne tahansa. Jos ne ovat liian tiukat, saat virheitä kuten "Permission denied" tai 403-virheen verkkosivustollesi. Tässä ohjeessa näet, miten oikeudet luetaan ja asetetaan oikein. Jos sinulla on DirectAdmin-webhotelli, katso Kielletty (403): Sinulla ei ole oikeutta käyttää kohdetta / tällä palvelimella.
Oikeuksien lukeminen komennolla ls -l
ls -l /var/www/example.com -rw-r--r-- 1 anna www-data 1520 index.html -rw-r----- 1 anna www-data 412 config.php drwxr-xr-x 2 anna www-data 4096 images drwxrwxr-x 2 www-data www-data 4096 uploads
Ensimmäinen merkki kertoo tyypin: - on tiedosto, d kansio ja l linkki. Sen jälkeen tulee kolme kolmen merkin ryhmää: mitä omistaja saa tehdä, mitä ryhmä saa tehdä ja mitä kaikki muut saavat tehdä. Niiden jälkeen näkyvät omistaja (anna) ja ryhmä (www-data).
| Kirjain | Tiedostolla | Kansiolla |
|---|---|---|
r | Lukeminen | Kansion sisältämien nimien listaaminen |
w | Muokkaaminen | Tiedostojen luominen, uudelleennimeäminen ja poistaminen |
x | Suorittaminen ohjelmana | Kansioon siirtyminen ja sen tiedostojen avaaminen |
Huomaa kaksi asiaa. Ilman kansion x-oikeutta et pääse sen tiedostoihin, vaikka ne olisivat luettavissa. Ja jolla on kansioon w-oikeus, voi poistaa siitä tiedostoja, vaikka ne kuuluisivat jollekulle muulle.
Oikeudet numeroina
Oikeudet kirjoitetaan usein kolmena numerona: r on 4, w 2 ja x 1, ja ne lasketaan yhteen ryhmittäin.
| Numero | Oikeudet | Käyttö |
|---|---|---|
| 644 | rw-r--r-- | Tavallinen tiedosto, esimerkiksi verkkosivu tai kuva |
| 755 | rwxr-xr-x | Kansio tai ohjelma, jota kaikki saavat käyttää |
| 640 | rw-r----- | Salasanan sisältävä asetustiedosto, jonka verkkopalvelin voi lukea ryhmän kautta |
| 600 | rw------- | Salainen tiedosto, kuten authorized_keys, yksityinen avain tai .env-tiedosto |
| 700 | rwx------ | Yksityinen kansio, kuten ~/.ssh |
Oikeuksien ja omistajan muuttaminen
chmod 640 /var/www/example.com/config.php chmod g+w /var/www/example.com/uploads sudo chown anna:www-data /var/www/example.com/config.php
chmod muuttaa oikeuksia joko numeroilla tai kirjaimilla (u, g ja o tarkoittavat omistajaa, ryhmää ja muita, ja niiden kanssa käytetään + tai -). chown omistaja:ryhmä muuttaa omistajan ja ryhmän. Sen saa tehdä vain root, joten käytä sudo.
Koko kansiolle tehty chmod -R 644 on tunnettu virhe: kaikki alikansiot menettävät silloin x-oikeutensa eivätkä ole enää käytettävissä. Aseta kansiot ja tiedostot erikseen komennolla find:
sudo find /var/www/example.com -type d -exec chmod 755 {} +
sudo find /var/www/example.com -type f -exec chmod 644 {} +
Verkkopalvelin ryhmän kautta
Debianissa ja Ubuntussa nginx ja PHP-FPM toimivat oletuksena käyttäjänä www-data. Siisti järjestely: sinä omistat tiedostot ja ryhmä on www-data. Verkkopalvelin voi silloin lukea tiedostoja ryhmän kautta ja kirjoittaa vain kansioon, jossa se on oikeasti tarpeen, kuten uploads (chmod g+w tai omistajaksi www-data vain tähän kansioon). Älä anna verkkopalvelimelle kirjoitusoikeutta PHP-tiedostoihisi.
777. Silloin kuka tahansa palvelimella voi lukea, muokata ja suorittaa tiedostoa tai kansiota. Jos yksikin verkkosivusto tai palvelu joskus pettää, murtautuja voi kirjoittaa kaikkialle, missä on 777. Varsinainen ongelma on lähes aina omistaja tai ryhmä: korjaa se sen sijaan, että avaisit kaiken.SSH:n oikeudet
SSH-palvelin tarkistaa avaintesi oikeudet. Jos muut voivat kirjoittaa .ssh-kansioosi tai kotikansioosi, palvelin ohittaa avaimesi ja sinulta kysytään taas salasanaa ilman selkeää virheilmoitusta. Aseta oikeudet näin:
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
Jos loit kansion rootina toiselle käyttäjälle, korjaa myös omistaja, kuten ohjeessa Oma käyttäjä sudo-oikeuksilla. AlmaLinuxissa ja Rocky Linuxissa myös SELinux voi estää tiedoston, jolla on oikeat oikeudet. Käsin luodulle .ssh-kansiolle auttaa restorecon -Rv ~/.ssh.
s:n x:n paikalla, kuten tiedostossa /usr/bin/passwd? Se on setuid-bitti: ohjelma toimii silloin omistajansa oikeuksilla. Muutama järjestelmäohjelma tarvitsee sitä, mutta älä koskaan aseta sitä itse skriptille. Odottamaton setuid-tiedosto voi viitata murtoon, katso Hakkeroitu? Ensimmäiset askeleet.Haluatko oppia lisää? Käy ilmainen kurssi VPS ja Linux-palvelimen ylläpito, oppitunti 3.1 Käyttäjät, ryhmät ja tiedosto-oikeudet.
