![]() |
Frågor om filrättigheter och PHP, CHMOD
På både Loopia och Binero så kan PHP fritt ändra på filer, skapa filer, skapa mappar, radera filer och mappar osv och man behöver inte sätt att något ska vara CHMOD 777. Filerna som PHP skapar får CHMOD 644 och katalogerna CHMOD 755 automatiskt. Det har funkat perfekt för mig.
Nu har jag skaffat en VPS och installerat LAMP enligt denna guiden. På min VPS måste mappen först ha CHMOD 777 innan PHP kan skapa mappar och filer under den katalogen. Men de mappar och filer som skapas får 644 för filer och 755 för mappar. Mitt problem blir när jag nu flyttar filer från min sajt på Binero till min VPS via FTP. PHP vägrar skriva till filerna om inte alla mappar plus alla filer får CHMOD 777. Jag gissar att det har något att göra vem som äger eller vem som har skapat filerna - eller? Hur kan jag på min Debian VPS göra så att PHP fritt kan manipulera filer precis som på Binero och Loopia? Det har väl att göra med kommandot chown att göra - eller? Och om jag sätter CHMOD 777 på allting - gör jag inte säkerheten mindre då? Vad skulle kunna hända? Säkerhet är det viktigaste för mig. Tack på förhand. |
Citat:
|
chown -R www-data:www-data funkade perfekt, tack!
Testade bara en viss mapp. Är det säkrare att köra det på bara de mappar och filer som behöver det än hela /var/www och alla domäner? |
Citat:
Men jag skulle inte säga att det är något extremt utan du kan lugnt sätta det på alla filer för domänen/siten/vhosten som används av webbservern. Dock så ska du ju bara ge webbservern skrivrättigheter på de filer som den ska ha skrivrättigheter på. |
Ok jättebra.
Dock upptäckte jag om jag satte webbservern som ägare så förlorade jag själv skrivrättigheter via FTP. Jag behöver både två. Jag har tidigare använt detta för att skapa en grupp och en användare: groupadd www-pub adduser –ingroup www-pub NN Så hur fixar jag så att denna användaren NN äger och har rättigheter till allt och sedan kan webbservern även äga vissa mappar och filer. Kan mappar och filer ha flera ägare? Googlade lite men hittade inget svar. |
Citat:
Skrivrättigheter skall du bara dela ut på uppladdnings-mappar (tex för wordpress: wp-content/upload, wp-content/gallery) och mappar som innehåller cachar. Om ett script behöver skriva till servern under installation så ge den temporärt tillstånd genom chmod (utan -R) i den specifika mappen och ta sedan bort skrivrättigheterna när installationen är klar. |
Citat:
Kataloger och filer kan bara ha en ägare men via grupper kan man låta flera användare få access till filerna. |
Citat:
Jag undviken att använda FTP av den här anledningen:) Kör med scp eller något liknande istället och har en användare med lite mer rättigheter. |
Jag tycker att /var/www och alla underkataloger och filer ska ägas av användaren www-pub och gruppen www-pub som jag skrev i guiden (inte www-data, alltså webbservern).
MEN, det krävs ofta att man ger PHP eller webbservern rättigheter att skriva till vissa filer eller mappar (vi tar exemplet "wp-content" i WordPress), och då föreslår jag att du gör så här: Kod:
chown -R www-pub:www-data wp-content Sedan måste du också ange vilka rättigheter ägaren och användarna i ägargruppen ska ha -- de kan nämligen skilja sig åt. Det gör du med kommandot chmod: Kod:
chmod -R g+w wp-content (Jag brukar aldrig använda siffror för chmod, det är obegripligt för mig.) Du kan också skriva exempelvis Kod:
chmod -R o-wx wp-content För att se vilka rättigheter filerna och mapparna har, kör kommandot "ls -l" och titta på de första kolumnerna. |
Weaver,
Jo det är väl så man normalt gör. Men i mitt fall måste servern även kunna manipulera med filer och mappar i två stora mappar. abergman, Tack så mycket för hjälpen. Som du kanske förstod så är jag helt noob med detta. Har nyligen skaffat VPS. Jag testade useradd -G www-data NN och då stod det: useradd: user NN exists Sen för att testa skrev jag groups NN men då nämns bara www-pub och sudo och inte www-data plus att det är samma sak på FTP. Jag vet inte om jag gjorde fel. scp har jag aldrig hört talat om. Jag behöver inte riktigt FTP för dessa två stora mapparna, jag kan skriva ett PHP script istället som kan manipulera de filerna så jag har i alla fall löst mitt problem även om det kanske inte är perfekt. Är det förresten någon skillnad i säkerhet mellan om www-data äger och kan manipulera filerna eller om filerna har CHMOD 777 och kan på det sättet manipuleras av www-data? |
Tack så mycket Christian! Mitt svar kom före ditt inlägg.
Jag testar och återkommer. |
Fan, nu har jag klantat till det och får inte rätt på det.
Jag körde chown –R root:www-pub /var/www för att "nollställa" chown som jag hade det från början enligt Christians guide. Och nu har jag helt förlorat skrivrättigheter på FTP och jag fattar inte varför. Det funkade innan och NN är medlem i gruppen www-pub. |
Och chown -R www-pub:www-data ger invalid user "www-pub:www-data" ...
|
Har gruppen skrivrättigheter för /var/www? Eftersom NN är medlem i ägargruppen och inte längre är ägare, måste gruppen har rättigheterna wx, exempelvis så här:
Kod:
chmod -R g+wx /var/www |
Citat:
Kod:
chown -R www-data:www-pub xxx |
Tack så mycket Christian, nu fungerar det. Både FTP och PHP.
|
Annars är php med fcgi din vän just här... Då slipper du allt sånt :)...
Då körs PHP som CGI och du anger vilken user php ska exekveras som. |
Citat:
|
Citat:
|
Flytten från Binero till min VPS på Glesys gick rätt bra och allting fungerar nu förutom att jag upptäckte att jag får permission error på FTP om jag försöker radera eller ändra namn på filer. Skriva över och ändra filer funkar dock.
Jag är inloggad på FTP som NN och inte root. Jag har provat att testa med olika CHMOD och ange olika ägare till filerna men jag lyckas inte. Alltså även om jag sätter att NN ska äga filen och den ska vara i samma grupp som NN finns i och jag sätter dessutom CHMOD 777 på filen så kan jag inte radera den via FTP utan får permission error. Däremot kan filen raderas via PHP eller Shell kommando utan problem. Så vad har jag missat här? Inte lätt att hålla reda på ägare, grupper och permissions men säkert finns det något ännu mer som man missat ... |
Ok, upptäckte det nu ...
Eftersom MAPPEN (inte filen) hade 755 så hade gruppen som NN är medlem i inte rätt att skriva i mappen vilket krävs för att radera FILEN. |
För att nya filer skapade av webbservern skall kunna raderas av din ftpanvändare så är det umask() du skall använda.
Ett exempel där "mappnamn" är en mapp där du laddar upp filer till via formulär (samma gäller om du skapar bilder med GD eller sparar en fil med valfritt innehåll).. [httpd är användaren som webbservern kör som och ftp-grupp är den gruppen som den användaren du loggar in via FTP är medlem i] Kod:
// shell |
Citat:
|
Alla tider är GMT +2. Klockan är nu 19:06. |
Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson