Wat is die korrekte toestemming vir 'n gids oplaai met PHP / Apache?
Vra
Jammer vir die basiese vraag -. Ek is 'n NET ontwikkelaar en het nie veel ervaring met LAMP setups
Ek het 'n PHP webwerf wat oplaai sal toelaat om 'n spesifieke gids. Ek is meegedeel dat hierdie gids moet in besit van die webbediener gebruiker vir die oplaai proses om te werk, so ek het die gids en dan stel regte as sodanig:
chown apache:apache -R uploads/
chmod 755 -R uploads/
Die enigste probleem is nou dat die FTP gebruiker nie die opgelaaide lêers glad kan verander.
Is daar 'n toestemming instelling wat my sal toelaat om nog oplaai van lêers en dan hulle later verander as 'n ander persoon as die webbediener gebruiker?
gebruikerOplossing
Jy kan 'n nuwe groep te skep met beide die apache gebruiker en FTP gebruiker as lede en dan maak die toestemming van die gids oplaai 775. Dit moet beide die apache en FTP gebruikers die vermoë om die lêers te skryf in die gids gee, maar hou almal van hulle verander.
Ander wenke
Ek sou gaan met antwoord Ryan se as jy regtig wil om dit te doen.
In die algemeen op 'n * nix omgewing, jy altyd wil om te dwaal op weggee so min regte as moontlik te maak.
9 keer uit 10, 755 is die ideale toestemming vir hierdie - as die enigste gebruiker met die vermoë om die lêers te verander sal die webbediener wees. Verander dit na 775 met jou ftp gebruiker in 'n groep as jy regtig nodig het om dit te verander.
Aangesien jy nuwe PHP deur jou eie toelating is, hier is 'n nuttige skakel vir die verbetering van die veiligheid van jou oplaai diens:
move_uploaded_file
Of ten minste 766.
- Lees = 4
- skryf = 2
- voer slegs = 1
7 = lees + skryf + voer
6 = lees + skryf
- eerste nommer: eienaar
- tweede nommer: groep
- derde nommer: ander gebruikers
Ek sal byvoeg dat as jy 'SELinux wat jy nodig het om seker te maak die tipe konteks is tmp_t Jy kan dit te bewerkstellig deur die gebruik van die chcon nut
chcon t tmp_t oplaai
Wat belangrik is, is dat die apache
gebruiker en groep minimum read
toegang moet hê en in sommige gevalle execute
toegang. Vir die res kan jy 0
toegang gee.
Dit is die mees veilige omgewing.
Ek sou die idee van die skep van 'n ftp-groep wat die regte op te laai sal ondersteun. Maar ek dink nie dit is nodig om 775 toestemming gee. 7 erwe vir lees, skryf, uit te voer. Normaalweg jy wil toelaat dat sekere groepe te lees en te skryf, maar afhangende van die geval, uit te voer nie nodig wees nie.
Onthou ook CHOWN
of chgrp
jou gids webwerf. Probeer myusername# chown -R myusername:_www uploads
Op grond van die antwoord van @Ryan Ahearn
, volgende is wat ek gedoen het op Ubuntu
16.04 tot 'n gebruiker front
dat slegs toestemming vir nginx se web dir /var/www/html
skep.
Stappe:
* pre-steps: * basic prepare of server, * create user 'dev' which will be the owner of "/var/www/html", * * install nginx, * * * create user 'front' sudo useradd -d /home/front -s /bin/bash front sudo passwd front # create home folder, if not exists yet, sudo mkdir /home/front # set owner of new home folder, sudo chown -R front:front /home/front # switch to user, su - front # copy .bashrc, if not exists yet, cp /etc/skel/.bashrc ~front/ cp /etc/skel/.profile ~front/ # enable color, vi ~front/.bashrc # uncomment the line start with "force_color_prompt", # exit user exit * * add to group 'dev', sudo usermod -a -G dev front * change owner of web dir, sudo chown -R dev:dev /var/www * change permission of web dir, chmod 775 $(find /var/www/html -type d) chmod 664 $(find /var/www/html -type f) * * re-login as 'front' to make group take effect, * * test * * ok *