• Bannato User Attivo

    Creare un hosting e impostare permessi UID su cartelle utenti

    Ciao a tutti ragazzi,
    ho 2 problemi

    1. Vorrei fare un piccolo hosting free solo che non vorrei usare safe mode per dividere le cartelle secondo gli UID che assegna pureftpd, ma vorrei dividere le cartelle sempre per UID ma con safe mode off come posso fare?
    2. Quando creo una cartella con il php invece di mettere l'UID del file php che l'ha creata, mette l'UID 33 cioè quello di www-data come faccio a fargli ereditare l'UID del file che ha creato la cartella o il file??

    Grazie in anticipo
    Ciao


  • Moderatore

    Considera che lo script viene invocato dall'utente www-data, quindi è chiaro che devi procedere internamente per fare quello che chiedi.

    In primo luogo essendo un hosting l'utente dev'essere loggato per scaricare/editare/cancellare i file.

    A questo punto puoi benissimo usare chown e chmod per settare il proprietario e i permessi sui file.


  • Bannato User Attivo

    Se voglio forzare come accade con curlftpfs (permettere di mappare percorsi FTP), che se crei un file con php, curlftpfs "forza" ad applicare al file un UID e GID settati nei parametri nel mount, forse facendo un mount è possibile? Oppure esiste un altro modo?


  • Moderatore

    In questo caso è il programma che fa l'upload a dover settare i permessi. Io infatti parlavo dello script php per l'upload, tipo i filemanager web-based di molti hosting.


  • Bannato User Attivo

    @paolino said:

    In questo caso è il programma che fa l'upload a dover settare i permessi. Io infatti parlavo dello script php per l'upload, tipo i filemanager web-based di molti hosting.

    Intendo apache2 quando crea un file non può settare lo stesso UID e GID del file php che ha eseguito il comando crea file?
    Il vecchio php 5.2 lo faceva da quanto mi ricordo, ma php 5.3 mette l'UID di www-data!


  • Moderatore

    No anche prima agiva così. Forse la tua installazione era modificata evidentemente, ma di default php gira con l'utente impostato per apache e quindi i file creati appartengono a quell'utente.


  • Bannato User Attivo

    @paolino said:

    No anche prima agiva così. Forse la tua installazione era modificata evidentemente, ma di default php gira con l'utente impostato per apache e quindi i file creati appartengono a quell'utente.

    E come faccio a ripristinare quest'impostazione!?


  • Moderatore

    Semplicemente usando mod_suphp.

    In pratica php non viene più eseguito dall'interno di apache come plugin, ma viene lanciato tramite cgi come processo a sè stante e con l'uid dell'utente che l'ha lanciato ovviamente.


  • Bannato User Attivo

    @paolino said:

    Semplicemente usando mod_suphp.

    In pratica php non viene più eseguito dall'interno di apache come plugin, ma viene lanciato tramite cgi come processo a sè stante e con l'uid dell'utente che l'ha lanciato ovviamente.

    Come posso installare la mod_suphp su Debian 4.0 con apache2 installato con apt-get?


  • Moderatore

  • Bannato User Attivo

    AIUTOOOO!!!!!
    Ti spiego un pò la mia situazione grave:

    **- Il filesystem del VPS non mi consente + di 275 IDs

    • Devo dividere le cartelle degli utenti in modo che nessuno
      possa accedere alle altre.
    • Uso Debian 4 etch 64bit
    • Uso vsftpd con lib-pam mysql**

    Cosa devo fare per favore è urgentissimo nn so + che fare!!


  • Moderatore

    Con ID a cosa ti riferisci? Il filesystem non supporta nessun ID.

    Intendi forse gli utenti unix o quelli di proftp?


  • Bannato User Attivo

    Intendo gli utenti unix.
    Cmq il mio problema è che vorrei utilizzare un solo
    uid e gid per tutti gli utenti.
    Ho visto in giro che hosting free come altervista e altri non usano la safe mode in php per bloccare gli accessi alle cartelle degli altri utenti,
    ma quando vuoi fare un operazione esterna alla tua radice ti da semplicemente pagina bianca!
    Come posso fare una cosa simile sul mio hosting??

    P.S. Rivedete il vostro forum mobile ha un problema nel invio della risposta!


  • Moderatore

    Beh se non usi il safemode devi avere per forza di cose un pannello di controllo user-aware.

    Il punto è che il safemode si preoccupa di implementare le restrizioni nel motore php, se non lo usi devi implementarle negli script php.

    Riguardo il numero di utenti unix, è chiaramente la strada sbagliata. Normalmente gli hosting condivisi usano mysql per memorizzare le informazioni sugli utenti ( è questo il motivo per cui proftpd usa mysql, proprio per creare una lista di utenti "virtuali" che non sono utenti unix ).


  • Bannato User Attivo

    Intendi gli utenti con l'ID da 9033 in poi? che vengono usati da proftpd, senza fare useradd?
    ma io non posso fare il chown di molti IDs, sennò mi appare disk quota exceed.
    Forse la soluzione potrebbe essere:
    <Directory /docroot>
    php_admin_value open_basedir /docroot
    </Directory>
    Che ne pensi?

    Oppure come dici tu con gli utenti virtuali, come posso fare hai una guida? Ricordando però che ho sempre un limite
    di IDs e dopo molti chown mi appare Disk quota exceed! e uso Debian etch 64bit

    P.S. Ti ricordo, rivedete il forum mobile non riesco a postare!


  • Moderatore

    @frank92 said:

    ma io non posso fare il chown di molti IDs, sennò mi appare disk quota exceed.

    Brutto affare, se hai bisogno di tante operazioni sui file mi sa che dovresti passare ad un dedicato. Il VPS è stato impostato con una quota specifica e al massimo puoi provare a chiedere all'hoster di aumentarla.

    Forse la soluzione potrebbe essere:
    <Directory /docroot>
    php_admin_value open_basedir /docroot
    </Directory>
    Che ne pensi?

    Questo qui limita semplicemente il webserver a muoversi da /docroot in giù, però non fa nessuna distinzione tra le directory dei vari utenti.

    Un altro modo è attivare questo blocco qui

    
    <Directory /home/*/public_html>
       AllowOverride FileInfo AuthConfig Limit Indexes
       Options MultiViews Indexes SymLinksIfOwnerMatch ExecCGI
       <Limit GET POST OPTIONS PROPFIND>
         Order allow,deny
         Allow from all
       </Limit>
       <LimitExcept GET POST OPTIONS PROPFIND>
         Order deny,allow
         Deny from all
       </LimitExcept>
     </Directory>
    
    

    che praticamente ti dà la possibilità di accedere a http://www.nomedominio.ext/~nomeutente

    Ovviamente questo vale per gli utenti unix con tanto di home directory sotto cui creare poi la directory public_html in cui mettere tutti i file html, ecc...

    Oppure come dici tu con gli utenti virtuali, come posso fare hai una guida? Ricordando però che ho sempre un limite
    di IDs e dopo molti chown mi appare Disk quota exceed! e uso Debian etch 64bit

    Gli utenti virtuali di cui parlo riguardano proftp ma non apache e risolvono parte del problema.

    L'altra parte ( quella relativa ad apache e php ) la risolvi o col safe mode oppure col modulo suphp. Il primo pone limitazioni all'accesso di directory e files ed è sconsigliato. Il secondo invece esegue il web server non con l'user di default ( http, www-data o quello che lo è definito in debian ) ma con l'user corrente, cioè il proprietario dell'account di hosting dove gira il sito richiesto dall'utente.

    In questo modo se tu hai una directory principale ( /www ad esempio ) dove sotto tieni tutte le sottodirectory degli utenti ( /www/pippo, /www/pluto ... ) con i loro file html, jpeg e quant'altro, la prima cosa da fare è settare quelle sottodirectory di proprietà dell'utente legittimo ( pippo, pluto, ecc... ) e e del gruppo www-data ( quello del webserver ).

    In questo setti i permessi sulle directory a 600 ( cioè solo l'utente può leggere e scrivere ), gli altri non possono nemmeno leggere.

    Chiaramente ti serve un server che non abbia limiti sul numero di utenti e quote sulle operazioni sul filesystem e un VPS è inadeguato per questo tipo di operazione.

    Ti dò un pò di link sulla faccenda. http://httpd.apache.org/docs/2.0/vhosts/mass.html#xtra-conf questo qui riguarda la creazione di vhosts dinamici ( altrimenti bisogna riavviare apache ogni volta che un utente apre un account ).

    http://blog.stuartherbert.com/php/series-the-web-platform/ questo è un articolo dettagliatissimo su come gestire permessi e accessi per host condivisi.

    http://www.suphp.org/Documentation.html questa qui è la documentazione del modulo suphp.

    P.S. Ti ricordo, rivedete il forum mobile non riesco a postare!

    grazie per la segnalazione, la comunico agli amministratori


  • Bannato User Attivo

    Non esiste una specie di open_dir che agisca proprio su apache2 e no su php?


  • Moderatore

    Considera che anche se esistesse agirebbe sulla sessione di apache che ingloba tutti gli utenti che hanno l'account su quel server.

    Alla fin fine apache non ha modo di sapere che la directory X è dell'utente pippo.

    Poi c'è il problema di gestire l'accesso anche per il server ftp e quello è indipendente da apache.