Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it L'avatar di iaco74
    Registrato dal
    Sep 2002
    Messaggi
    682

    PHP/Apache Permessi Cartelle

    Ciao a tutti,

    Ho un server linux con centos 5.x apache 2.2 e php 5.2.12.

    Php è eseguito attraverso il modulo apache.

    Avrei la necessita di avere una cartella leggibile da php ma non raggiungibile via web.

    Es: /private/pdf

    Qui vorrei avere dei file pdf non raggiungibili via web.

    Vorrei poi mostrare i file attraverso un file PdfViewer.php dove al suo interno tra le altre cose ci sarebbe un file_get_contents(private/pdf/nomefile.pdf).

    Chiaramente tale cartella dovrebbe essere scrivibile da php attraverso un sistema di gestione contenuti.

    Avevo provato a settare i permessi per la cartella cosi owner: rw and execute; group e world tutto disabilitato.

    Ho notato che cosi non funnziona niente.

    Ho letto un po di guide in merito, non sono certo di aver compreso al 100% il tutto.

    Può darsi che il problema risieda nel fatto che l'utente che esegue php sia apache:apache quando si esegue php come modulo apache ?

    La strada da seguire per raggiungere tale scopo sarebbe installare suPHP ?

    Ho letto varie cose in merito ed ho porvato il tutto in un server locale, ma avrei necessità di alcuni chiarimenti in merito per comprendere al meglio alcuni passaggi.

    Ciao
    IACO

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    114
    Al di la dei permessi, che chiaramente devono essere perlomeno di lettura ed esecuzione per apache (se è proprietario o membro del gruppo), se vuoi rendere un file "invisibile" ai navigatori su internet lo devi semplicemente mettere "sotto" la root pubblica del tuo sito.

    Faccio un esempio stupido:
    se il www.tiziocaio.it punta sul tuo server ad un percorso simile:
    /var/www/html/tiziocaio.it/public_html
    qualsiasi file fuori dalla cartella public_html (e sottocartelle), indipendentemente dai suoi permessi, risulterà invisibile ai navigatori.. Per esempio basterebbe farlo risiedere asu un percorso del tipo:
    /var/www/html/tiziocaio.it/public_html

    Poi un consiglio: files di questo tipo forse converrebbe memorizzarli in database invece che su filesystem.

    Gabriele

  3. #3
    Utente di HTML.it L'avatar di iaco74
    Registrato dal
    Sep 2002
    Messaggi
    682
    Ciao,

    grazie per la risposta.

    Sicuramente potrei metterli su db, ma sono troppi ed il db diventerebbe troppo pesante.

    Ho fatto un po di prove e credo e ripeto credo di essere sulla strada giusta.

    Ho installato suPHP su un mio server di prova (corrispondente a quello di produzione) ed ho notato che adesso le cose cominciano a quadrarmi.

    Uso i virtualhost di apache creati attraverso plesk per gestire i domini.

    Notavo appunto che l'utente php con cui eseguivo gli script era sempre apache mentre i file e le cartelle di un determinato virtualhost erano appartenenti ad un determinato user:group.

    Adesso invece con suPHP l'utente che esegue php è quello del virtual host (che ha più senso secondo me anche per ragioni di sicurezza).

    Cosi ho creato una cartella di prova /pdf assegnandole i permessi 755 e dando ai file in esso contenuti i permessi 700.

    Cosi adesso i file non sono raggiungibili via http e php comunque puo leggere/scrivere/eseguire in quella cartella.

    Sembrerebe sia corretto. Puoi confermare ?
    IACO

  4. #4
    Ciao,

    non vedo cosa c'entri questo con PHP, stiamo parlando del webserver (la sua configurazione e/o htaccess) e dei permessi su disco.

    Dato che lo puoi fare con estrema semplicità tramite htaccess ti sposto su Apache

    PS: suPHP è lento ... molto lento! dai un occhio all'mpm itk

  5. #5
    Utente di HTML.it L'avatar di iaco74
    Registrato dal
    Sep 2002
    Messaggi
    682
    Ciao,

    (chiedo venia per aver sbagliato forum)

    Provengo dalla gestione srv win quindi su linux sono un po' fagiano.

    Mi dici che suPHP è lento ok.

    Conisgli quindi di lasciare che php venga eseguito come utente apache:apache.

    Quindi se devo avere una cartella scrivibile da php la soluzione che proponi è di mettere i permessi a 777 e proteggerla con .htaccess ?

    Non ho ben capito. Potresti farmi un esempio ?

    Ciao
    IACO

  6. #6
    a te interessa che non sia accessibile via web, giusto? Ti basta dire ad apache di non far accedere nessuno a quella cartella ... poi se deve anche essere scrivibile da parte di php allora deve avere i permessi corretti che si possono essere 777 ma se assegni quella cartella ad apache basteranno i permessi 700 (per le directory) e 600 (per i file)

    Dai un occhio qua
    http://httpd.apache.org/docs/2.0/mod...cess.html#deny

    e qua
    http://httpd.apache.org/docs/2.0/mod...html#directory

  7. #7
    Utente di HTML.it L'avatar di iaco74
    Registrato dal
    Sep 2002
    Messaggi
    682
    Ciao,

    grazie per la risposta.

    In effetti il tuo ragionamento filierebbe.

    Il problema è che pur essendo su un srv dedicato gestisco i domini attraverso i virtualhost con plesk (come spiegato nei precedenti messaggi).

    Quindi credo di non poter assegnare quella cartella ad apache:apache, perche il proprietario di quel tree di file e cartelle sarebbe appunto per esempio danielsacli.

    Questo porterebbe ad una serie di complicazioni successive. (Ecco perchè avevo cominciato a documentarmi con suPHP)

    Se esistono altre soluzioni a tutto ciò ti prego di farmi un pò di chiarezza.

    Ripeto provengo dalla gestione win. (usando php come fastcgi queste problematiche non le ho mai affrontate)

    Ciao
    IACO

  8. #8
    Non è un problema il non poter assegnare l'utente, dagli permessi 777 ... l'importante è che ci acceda php e non apache ... usa l'htaccess per come ti ho linkato e dagli permessi 777

  9. #9
    Utente di HTML.it L'avatar di iaco74
    Registrato dal
    Sep 2002
    Messaggi
    682
    Ciao,

    grazie per i chiarimenti.

    Provo a fare come mi hai consigliato per vedere che difficoltà trovo.

    (immagino comunque che plesk mi creerà problemi quando vado a fare i backup di quel dominio)


    Questo passaggio non l'ho capito

    ... l'importante è che ci acceda php e non apache
    IACO

  10. #10
    Utente di HTML.it L'avatar di iaco74
    Registrato dal
    Sep 2002
    Messaggi
    682
    Ciao,

    Intanto ho fatto una prova.

    Nel file vhost del dominio ho scritto

    [PHP]
    <Directory /var/www/vhosts/<domain>/httpdocs/doc/pdf>
    Order Deny,Allow
    Deny from all
    </Directory>

    Cosi funzionerebbe.

    Mi rimane da verificare se nelle procedure di backup/restore automatico questo mi crea un problema. Effettuerò questoi test su una macchina in locale, poi vi faccio sapere se questo approccio è risolutivo per il mio problema.

    Ciao
    IACO

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.