Ik heb een formulier gemaakt waarmee ik fotos kan uploaden naar mijn site.
Dat werkte pas nadat ik de bestandsrechten van de fotomap ipv 755 op 777 zette.
Is dit de juiste oplossing of begeef ik me op glad ijs?
Ik zou als het kan nooit chmod 777 gebruiken, omdat je niet ALLE rechten wilt uitdelen.
Als 755 niet werkt, dan is er iets mis met de rechten-structuur bij je webhosting.
Als ik mij niet vergis kan het minder kwaad als het script onder je eigen username draait.
De rechten helemaal open zetten is nooit de juiste oplossing. Ik heb nu 2 vragen voor je die tot een oplossing moeten leiden:
1. Onder welke user draait PHP?
2. Welke user is eigenaar van de fotomap?
[size=xsmall]Toevoeging op 16/06/2016 23:51:39:[/size]
>> Als ik mij niet vergis kan het minder kwaad als het script onder je eigen username draait.
Dan heb je die gigantische rechten ook niet nodig, dan kom je er met 700 zelfs wel. De executable bit is noodzakelijk omdat het een directory is, anders was 600 genoeg geweest.
Waarom niet gewoon de username zelf? Als je mod_ruid2 op de server hebt geinstalleerd en goed in Apache hebt geconfigureerd, draait alles onder je username en zal je niet zo snel meer met Permission Denied's zitten omdat je rechten ergens niet kloppen. Iets wat mijn vroegere hosting niet voor elkaar kon krijgen, en mij veel ergernis gaf ;-)
Niet per se, ik zou hierin met Ariën meegaan en mod_ruid2 eens bekijken. Zo te horen is het een eigen server, dan heb je wat speelruimte.
Maar je kunt ook de user lid maken van www-data en de group eigenaar maken van de map. Mooi is anders, en het timmert het niet zover dicht als je zou willen; je hebt dan alsnog 770 nodig op zijn minst.
Edit: niet zo klein als gehoopt:
[size=xsmall]Toevoeging op 18/06/2016 02:09:09:[/size]
Ook nog een kleine aanvulling:
Lees je in op hoe rechtenbeheer werkt, van start tot eind. Ik ga dit nu niet voor je googlen, maar in de basis werkt het als volgt:
Je hebt 3 categorieën van rechten: read, write en execute
Je hebt ook 3 niveaus van rechten: user, group en world
In de 3 niveaus worden de rechten ook opgebouwd uit de categorieën:
Het eerste octet is voor user, het tweede voor group, het derde voor world.
Nu dit duidelijk is gaan we over naar hoe Apache dit standaard behandelt:
Apache start standaard op als de root user en root group en degradeert zichzelf naar wat er genoemd wordt in je configuratie: in dit geval de user www-data en waarschijnlijk ook de group www-data.
Met mod_ruid2 kun je beinvloeden welke user en group gebruikt wordt vanuit Apache. Probeer het volgende in httpd.conf (dit is de eenvoudigste manier, en is veel meer granulatiteit mogelijk met name op user en grouo niveau):
RMode stat
Wat er nu gebeurt is dat als de user en group die bij het bestand dat je opvraagt worden opgevraagd door Apache. Ik geef je nu de volgende situatie:
- Je hele homedirectory is eigendom van de user rina en de group rina (standaard onderdebian en derivaten als ubuntu)
- Apache vraagt index.php op
- Dit bestand is eigendom van de user rina in de group rina (hij staat in je homedirectory en is door jezelf gemaakt)
- Index.php wordt door mod_ruid omgeschakeld naar uitvoer door de user rina in de group rina (door het opvragen van het eigendom op index.php)
- Alle bestanden die worden opgevraagd of geschreven door index.php zullen standaard als de user rina en group rina werken: wanneer de map waar je naar schrijft eigendom is van jezelf gaat dit bijna geganandeerd goed.
Zeker weten dat je die niet hebt? Naar mijn weten is het vrij standaard om een httpd.conf te hebben.
Staat er in apache2.conf dan iets vermeld of je domein/host die je hebt ingesteld?