Läs och ställ in filbehörigheter på din VPS
Varje fil och mapp på din VPS har en ägare, en grupp och behörigheter. Är de för generösa kan en hackad webbplats eller tjänst skriva överallt. Är de för strikta får du fel som "Permission denied" eller en 403 på din webbplats. Här läser du hur du tolkar behörigheter och ställer in dem rätt. Har du ett webbhotellspaket med DirectAdmin, se Förbjuden (403): Du har inte behörighet att komma åt / på den här servern.
Läsa behörigheter med 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
Det första tecknet anger typen: - är en fil, d en mapp, l en symbolisk länk. Sedan följer tre grupper med tre tecken: vad ägaren får göra, vad gruppen får göra och vad alla andra får göra. Därefter står ägaren (anna) och gruppen (www-data).
| Bokstav | För en fil | För en mapp |
|---|---|---|
r | Läsa | Lista namnen i mappen |
w | Ändra | Skapa, byta namn på och ta bort filer |
x | Köra som program | Gå in i mappen och öppna filer i den |
Tänk på två saker. Utan x på en mapp kommer du inte åt filerna i den, även om de är läsbara. Och den som har w på en mapp kan ta bort filer i den, även om de tillhör någon annan.
Behörigheter som siffror
Ofta skriver man behörigheter som tre siffror: r räknas som 4, w som 2 och x som 1, summerat per grupp.
| Siffra | Behörigheter | Användning |
|---|---|---|
| 644 | rw-r--r-- | Vanlig fil, till exempel en webbsida eller bild |
| 755 | rwxr-xr-x | Mapp, eller ett program som alla får använda |
| 640 | rw-r----- | Konfiguration med ett lösenord, läsbar för webbservern via gruppen |
| 600 | rw------- | Hemlig fil, som authorized_keys, en privat nyckel eller en .env-fil |
| 700 | rwx------ | Privat mapp, som ~/.ssh |
Ändra behörigheter och ägare
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 ändrar behörigheterna, med en siffra eller med bokstäver (u, g, o för ägare, grupp och övriga, med + eller -). chown ägare:grupp ändrar ägare och grupp; det får bara root göra, alltså med sudo.
För en hel mapp är chmod -R 644 ett vanligt misstag: alla undermappar förlorar då sitt x och blir oanvändbara. Ställ in mappar och filer separat med find:
sudo find /var/www/example.com -type d -exec chmod 755 {} +
sudo find /var/www/example.com -type f -exec chmod 644 {} +
Webbservern via gruppen
På Debian och Ubuntu körs nginx och PHP-FPM som standard under användaren www-data. En snygg uppdelning: du äger filerna och gruppen är www-data. Webbservern får då läsa via gruppen och skriva bara i den mapp där det verkligen behövs, som uploads (chmod g+w eller ägare www-data på enbart den mappen). Ge inte webbservern skrivrätt till dina PHP-filer.
777. Då får alla på servern läsa, ändra och köra filen eller mappen. Om en enda webbplats eller tjänst någon gång blir komprometterad kan inkräktaren skriva överallt där 777 är satt. Det verkliga problemet är nästan alltid ägaren eller gruppen: lös det i stället för att öppna upp allt.Behörigheter för SSH
SSH-servern kontrollerar behörigheterna för dina nycklar. Får andra skriva i din .ssh-mapp eller din hemkatalog ignorerar den din nyckel och du får en lösenordsfråga igen, utan tydligt felmeddelande. Ställ in det så här:
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
Har du skapat mappen som root åt en annan användare, ställ då även in rätt ägare, som i En egen användare med sudo. På AlmaLinux och Rocky Linux kan även SELinux neka åtkomst till en fil som har rätt behörigheter; för en manuellt skapad .ssh-mapp hjälper restorecon -Rv ~/.ssh.
s i stället för ett x någonstans, som för /usr/bin/passwd? Det är setuid-biten: programmet körs då med ägarens behörigheter. Några systemprogram behöver det, men sätt det aldrig själv på ett skript. En oväntad setuid-fil kan tyda på ett intrång, se Hackad? De första stegen.Vill du lära dig mer? Gå den kostnadsfria kursen VPS och Linux-serveradministration, lektion 3.1 Användare, grupper och filrättigheter.
