Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    254

    scrittura file con un altro utente

    Salve a tutti
    ho delle domande da porvi:

    ho bisogno di scrivere dei file sul server utilizzando un utente diverso da quello del server per cui vi chiedo: è possibile in PHP cambiare l'utente in locale?

    Se questa domanda vi risultasse una eresia allora passiamo alla seconda domanda:
    Ho effettuato una connessione ftp al server con l'utente che interessa a me ma quando vado scrivere il file e controllare il proprietario risulta il precedente e non quello specificato nella connessione ftp.

    Dato che me lo chiederete vi anticipo che voglio bloccare i permessi in scrittura all'utente di default ed effettuare le scritture con un utente speciale.

    Come posso fare? vi metto il codice per farvi vedere la strada che ho intrapreso:

    Codice PHP:
    <?
    function get_users_ftp() 
     { 
     
    $ftp_detailss [ftp_user_name]= 'utente_speciale';
     
    $ftp_detailss [ftp_user_pass]= 'la_password';
     
    $ftp_detailss [ftp_server]= 'localhost';
     return 
    $ftp_detailss;

     
    $ftp_details=get_users_ftp();
     
    $conn_id ftp_connect($ftp_details [ftp_server]); 
     
    $login_result ftp_login ($conn_id$ftp_details [ftp_user_name], $ftp_details [ftp_user_pass]); 
     if ((!
    $conn_id) || (!$login_result)) { 
             echo 
    "Ftp-connect failed!"; die; 
         } else {
             echo 
    "Connected.";
      
         }
     
     
    ftp_pasv ($conn_idtrue) ;

    $myFile="prova_file_ftp.php";
    $f=fopen($myFile'w+') or die("can't open file");
    fwrite($f"PROVA");
    Grazie in anticipo

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    254
    Oppure ho quest'altra soluzione:

    Codice PHP:
    if (!isset($_SERVER['PHP_AUTH_USER'])) {
        
    header('WWW-Authenticate: Basic realm="My Realm"');
        
    header('HTTP/1.0 401 Unauthorized');
        echo 
    'Text to send if user hits Cancel button';
        exit;
    } else {
        echo 
    "<p>Hello {$_SERVER['PHP_AUTH_USER']}.</p>";
        echo 
    "<p>You entered {$_SERVER['PHP_AUTH_PW']} as your password.</p>";
    $myFile="prova_file_ftp.php";
     
    $f_ita=fopen($myFile'w+') or die("can't open file");
     
    fwrite($f_ita"PROVA"); 
    Però il proprietario del file non è quello che ha fatto l'autenticazione. Insomma io ho bisogno di cambiare utente in fase di scrittura file, sapete se si può fare e come si può fare??

    Grazie

  3. #3
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    254
    Quindi nessuno mi sa dire come faccio ad eseguire uno script con un utente specifico piuttosto che l'anonimo?

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Per cortesia, non fare up di continuo.
    La tua discussione è ancora in prima pagina, se qualcuno sa come fare ti aiuterà.

  5. #5
    Quando ti logghi con ftp, sei l'utente con cui ti sei loggato

    per eseguire da script con un altro utente, basta che fai shell_exec('sudo -u NOME_ALTRO UTENTE echo "hello" >> /path/to/file')

    poi vedi te...
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    254
    ok provo shell_exec

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2010
    Messaggi
    254
    Chiudo il post con la sintesi:

    Nel primo esempio ho confuso un po' i ruoli: io effettuavo una connessione ftp e poi scrivevo un file. Chiaramente sono due cose
    distinte.
    La connessione ftp non ha nulla a che vedere con la creazione del file. Per risolvere il problema della scrittura file da parte di un utente diverso dall'anonimo avrei dovuto cimentarmi in esecuzioni di chiamate shell combinate con sudo che probabilmente mi davano la possibilità di eseguire un intero script e non un pezzo di codice come volevo io.

    Per cui ho deciso di seguire questa strada:
    Premesso che le necessità erano le seguenti:
    - Scrivere in cartelle specifiche dell'applicazione
    - Scrivere nella root dell'applicazione
    - Scrivere in applicazioni presenti in altri domini

    la mia soluzione è:
    creare una, ed una sola, cartella con diritti di scrittura. Dopo aver scritto il file, attraverso connessione ftp, trasferisco il file nella posizione che mi interessa che sia essa in una cartella specifica, nella root o in altri domini tutte cartelle senza diritti di scrittura.

    Prima di salutarvi vi chiedo: è una soluzione sicura?

    Ringrazio Santino per la collaborazione.

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.