Pagina 1 di 2 12 UltimoUltimo
Visualizzazione risultati 1 fino 30 di 33

Discussione: Lo stesso script di upload crea files con owner e permessi diversi

  1. #1
    Data registrazione
    27-08-2019
    Messaggi
    21

    Predefinito Lo stesso script di upload crea files con owner e permessi diversi

    buongiorno
    lo scenario è questo

    cartella protetta:
    /edAtt/ ..........0755...3607931:999
    ......|_user1 ....0755...3607931:999 - files - 0664 - 3607931:999
    ......|_user2 ....0755...3607931:999 - files - 0664 - 3607931:999
    ......|_user3 ....0755...3607931:999 - files - 0600 - 48:999 (err 550)
    ......|_user4 ....0755...3607931:999 - files - 0600 - 48:999 (err 550)
    ......|_user5 ....0755...3607931:999 - files - 0600 - 48:999 (err 550)

    la cartella /edAtt/ accessibile tramite credenziali contiene lo script di upload.
    L'upload viene eseguito da 5 utenti diversi e ognuno ha la propria cartella e
    i files degli user3/4/5 vengono creati con owner 48 (nello script non è impostato nulla).
    Questi 3 utenti sono stati creati dopo i primi 2, ma è l'unica differenza che posso segnalare.
    I files (script compresi) sono stati caricati con l'unico utente ftp (giornalinothewest) che ho.

    Potete cambiare i permessi dei files a 0600 e own:grp 3607931:999 nelle sotto/cartelle di edAtt?
    grazie

  2. #2
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,064

    Predefinito

    Volendo puoi modificare i permessi o con chmod o con FTP.
    In generale, le cartelle devono avere 0775, i file 0664. Eventuali permessi di lettura/scrittura dovresti gestirle lato applicativo.

    Ciao!

  3. #3
    Data registrazione
    27-08-2019
    Messaggi
    21

    Predefinito

    grazie, si, i files di proprietà di 48 riesco solo cancellarli, ma non a cambiarne ownership ne con filezilla, ne via php.
    Non c'è modo di sapere il perchè di questa differenza di comportamento con gli utenti aggiunti da un mese a questa parte?

  4. #4
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,064

    Predefinito

    Non mi è chiaro cosa vuoi fare e in che modo sono creati questi file. Perché vorresti modificare i permessi?

    Ciao!

  5. #5
    Data registrazione
    27-08-2019
    Messaggi
    21

    Predefinito

    Per le permissions ho visto e corretto a 664, ma resta
    il problema che lo script crea i files con owner diversi.
    per 2 utenti crea - 3607931:999
    per 3 utenti crea - 48:999
    Lo script php è minimale con i controlli essenziali ma comune a tutti
    ed ha owner 3607931 perciò mi aspetterei che creasse sempre files con il suo owner.
    ... sempre che io non mi sbagli!
    grazie!

  6. #6
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,064

    Predefinito

    Ma con "utenti", intendi un utente connesso con una sessione? Come crei il file?

    Ciao!

  7. #7
    Data registrazione
    27-08-2019
    Messaggi
    21

    Predefinito

    possono accedere alla cartella /edAtt 5 utenti tramite credenziali dove aprono una pagina php:
    - $usr = $_SERVER['REDIRECT_REMOTE_USER'];
    - ogni utente ha una sua cartella /edAtt/$usr
    - la pagina in php fornisce anche un form per l'upload:
    "<form action="upload.php" method="post" enctype="multipart/form-data">"
    - lo script in upload.php:
    "$target_dir = '/membri/giornalinothewest/edAtt/'.$usr.'/';"
    "$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);"
    - seguono controlli e se passati,
    "move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)"

    Di fatto non saprei dirti dove "tmp_name" venga creato e ho anche qualche
    perplessità su "$target_dir" ma dalle prime prove, in base ai msg di errore,
    ho dovuto inserire "/membri" prima di /giornalinothewest.
    grazie

  8. #8
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Si è corretto utilizzare la sintassi completa /membri/giornalinothewest (la tua root)
    Prova creando la directory di $usr prima di spostare il file tramite il parametro $to (che tu chiami $target_file) di move_uploaded_file mkdir il percorso completo è
    Codice PHP:
    //Solo se non esiste la directory
    mkdir('/membri/giornalinothewest/edAtt/'.$usr);
    Quel numero 3607931 convertito in stringa è Owner giornalinothewest mentre 999 Group membri.

  9. #9
    Data registrazione
    27-08-2019
    Messaggi
    21

    Predefinito

    le directory /edAtt/$usr le creo insieme alle credenziali d'accesso, dal pannello di controllo/gestione files ... e lo script, per quanto posso, lo faccio lavorare in una struttura predeterminata.
    Si, 3607931:999 mi sono chiari ... è il 48:999 che non capisco da dove salta fuori.
    grazie

  10. #10
    Data registrazione
    27-08-2019
    Messaggi
    21

    Predefinito

    L'ultimo upload ha creato questo:
    file.odt 44495 Byte - 2023.01.18 21:06:59 - 1230 - r.-w-.-wx.--T - 48:999

    è possibile vedere nei log qualcosa a riguardo?
    grazie

  11. #11
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,252

    Predefinito

    Citazione Originalmente inviato da giornalinothewest Visualizza messaggio
    Per le permissions ho visto e corretto a 664, ma resta
    il problema che lo script crea i files con owner diversi.
    per 2 utenti crea - 3607931:999
    per 3 utenti crea - 48:999
    L'assegnamento è consistente? Sono sempre gli stessi utenti per cui i file vengono creati con 48?

    Se si, hai controllato se ci sono "coincidenze"? Tipo se usando lo stesso browser, oppure caricano file di un tipo specifico?

  12. #12
    Data registrazione
    27-08-2019
    Messaggi
    21

    Predefinito

    I files sono di tipo diverso (txt, odt, docx, jpg, png).
    Gli utenti (1 e 2), creati a novembre/22, girano bene ... mentre tutti quelli creati da dicembre/22 in poi creano files con owner 48 e mi hanno detto che usano chrome su windows.
    Ma anche l'utente 2 (che funziona) usa chrome su windows.
    Io utente 1 uso chrome su linux.
    perdona ... cosa intendi per assegnamento?

  13. #13
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,252

    Predefinito

    "Assegnamento" non era la parola migliore. Intendevo "quale owner viene assegnato ai file caricati da un utente", ma mi hai capito comunque

    Vedo nel primo post che le directory stesse hanno un owner diverso. Le hai create tutte nello stesso modo?

    Quale owner viene fuori se oggi crei una directory...
    - via PHP, con mkdir()
    - via client FTP
    - via Pannello di AlterVista?

  14. #14
    Data registrazione
    27-08-2019
    Messaggi
    21

    Predefinito

    creati ora per prova sia da pannello che da ftp e risultano corretti sia come permessi sia come owner: 755 3607931:999
    Non ho mai creato le cartelle via php.
    Ho provato a crearlo con php e l'ha fatto correttamente 755 3607931:999
    Però devo dire che a me e all'utente che ho creato nello stesso momento ha sempre funzionato correttamente.
    È con gli utenti creati in un secondo momento che crea files con owner 48.

    [Intendevo "quale owner viene assegnato ai file caricati da un utente"]
    il file dovrebbe esser creato con gli stessi owner:grp dello script php
    e non saprei come forzare il chown prima della creazione.
    Ultima modifica di giornalinothewest : 21-01-2023 alle ore 00.14.35 Motivo: completamento

  15. #15
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,252

    Predefinito

    Mistero. Se le nuove directory hanno il proprietario corretto, il mio suggerimento sarebbe di scaricare i file da quelle esistenti, e ricaricarli in nuove directory. Alla fine le rinomini, ed hai risolto.

  16. #16
    Data registrazione
    27-08-2019
    Messaggi
    21

    Predefinito

    Purtroppo non riesco a scaricarli:
    non ho diritti sui files di "48"
    ed è già molto se riesco a cancellarli.
    Per questo domandavo se ci fosse traccia nei log.
    Questa è una cartella di raccolta e l'upload di solito è mensile. Una volta elaborati i files vengono cancellati.

  17. #17
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Puoi impostare i permessi ricorsivi (significa dalla root a ogni cartella) directory 775? Invece del 755 che manca permesso di scrittura per il gruppo. Non so se ti aiuta. Magari dopo l'upload imposti nuovamente a 755.
    Ultima modifica di darbula : 21-01-2023 alle ore 02.18.00

  18. #18
    Data registrazione
    27-08-2019
    Messaggi
    21

    Predefinito

    I permessi 755 sarebbero già ottimi, ma una volta creato il file con owner 48 non accetta, ne da ftp ne da php, alcuna variazione di chmod.
    cmq provo a farlo.
    cambiato ricorsivamente in 775 tutte le cartelle/files, ma il file con owner 48 da errore.
    "550 Errore impostazione permessi su questo file"

    purtroppo non posso provare l'upload (a me funziona sempre) devo farlo fare ...
    Ultima modifica di giornalinothewest : 21-01-2023 alle ore 02.31.37 Motivo: completamento

  19. #19
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Ovviamente non dei file e soprattutto non da owner 48.. quindi rimangono le cartelle.
    Io a volte riscontro problemi di accesso negato se non ho le cartelle 775 tramite script php.
    Sistemi Unix like se il proprietario user possiede più file del proprietario 48 ti è solo concesso di cancellare i file con proprietario 48.
    Che output ti da ad esempio darbulatest.php
    Codice PHP:
    <?php
    error_reporting
    (PHP_INT_MAX);
    include
    '/membri/giornalinothewest/edAtt/utente/fileowner48';
    Ultima modifica di darbula : 21-01-2023 alle ore 02.50.04 Motivo: Aggiornamento

  20. #20
    Data registrazione
    27-08-2019
    Messaggi
    21

    Predefinito

    non sono sicuro d'aver compreso.
    Se "include" serve per eseguire un codice all'interno del file con owner 48: Non contiene codice da eseguire.
    È un file di "testo" libreoffice writer.
    cmq aggiungendo il codice allo script di controllo delle cartelle esce questo warning:
    "Warning: include(/membri/giornalinothewest/edAtt/patata/intervistaOpenYourMind.odt): failed to open stream: Permission denied in /membri/giornalinothewest/edAtt/staff.php on line 97"
    Ultima modifica di giornalinothewest : 21-01-2023 alle ore 15.23.51 Motivo: completamento

  21. #21
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Per farti vedere Permission denied, a volte accade anche con cartella 755 in alcune circostanze e owner corretto.
    Puoi solo cancellare i file con owner 48. Non esistono altre soluzioni.
    Non è importante cosa fa include, al momento non è noto perché il proprietario diventa 48.
    Al più potrei consigliare di creare un log manuale tramite codice php creato da me.. ma non è detto si trovi la causa.
    Ultima modifica di darbula : 21-01-2023 alle ore 15.54.04

  22. #22
    Data registrazione
    27-08-2019
    Messaggi
    21

    Predefinito

    avendo avuto l'occasione di testare con più persone insieme stamattina, si è evidenziato questo:
    i files caricati, che contengono spazio nel nome, vengono creati con owner 48.
    Io ho sempre evitato gli spazi nei nomi e l'upload ha sempre funzionato, ma ...
    appena ho caricato un file con spazio nel nome il risultato è stato owner 48 anche per me.

    in conclusione ... eliminando gli spazi dal nome dei files, il problema pare scomparso!
    Suppongo sia dovuto al php, ma non ho i mezzi per indagare a fondo.
    cmq sia, ringrazio tutti per il supporto.

  23. #23
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,252

    Predefinito

    Il mistero si infittisce, farò due prove

    Nel frattempo, magari puoi sostituire gli spazi con un carattere segnaposto?

    Codice PHP:
    $target_dir = "/membri/giornalinothewest/edAtt/{$usr}/";

    $original_name = $_FILES['fileToUpload']['name'];
    $safe_name = str_replace(' ', '-', $original_name);

    $target_file = $target_dir . $safe_name;

    # [...]

    move_uploaded_file($_FILES['fileToUpload']['tmp_name'], $target_file);
    Ultima modifica di dreadnaut : 21-01-2023 alle ore 18.05.02

  24. #24
    Data registrazione
    27-08-2019
    Messaggi
    21

    Predefinito

    si, bonificare il nome del file a monte, è già in "opera" grazie

    grazie per il suggerimento di questa forma:
    $target_dir = "/membri/giornalinothewest/edAtt/{$usr}/";
    Ultima modifica di giornalinothewest : 21-01-2023 alle ore 18.39.16

  25. #25
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,064

    Predefinito

    Citazione Originalmente inviato da giornalinothewest Visualizza messaggio
    eliminando gli spazi dal nome dei files, il problema pare scomparso!
    È un problema noto su Altervista, a volte nomi di cartelle o nomi di file con uno spazio possono creare problemi di permessi. Il consiglio è quindi quello di evitare di inserire spazi nel nome di una cartella o file.
    Se ci sono delle cartelle "rotte" per permessi errati che non permettono la loro eliminazione da FTP o pannello di controllo, fatemelo sapere.

    Ciao!

  26. #26
    Data registrazione
    27-08-2019
    Messaggi
    21

    Predefinito

    Citazione Originalmente inviato da alemoppo Visualizza messaggio
    È un problema noto su Altervista, a volte nomi di cartelle o nomi di file con uno spazio possono creare problemi di permessi...
    Ciao!
    sei stato il primo a rispondere a questo 3d 10gg fa ...

  27. #27
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,064

    Predefinito

    Citazione Originalmente inviato da giornalinothewest Visualizza messaggio
    sei stato il primo a rispondere a questo 3d 10gg fa ...
    Sì, ma non avevo capito come creavi le cartelle/file e se avessero spazi nei nomi, né se riuscissi a eliminarle (o meglio, hai detto di poterle cancellare, quindi non capivo il problema, o meglio non lo capisco nemmeno adesso ):
    Citazione Originalmente inviato da giornalinothewest Visualizza messaggio
    grazie, si, i files di proprietà di 48 riesco solo cancellarli, ma non a cambiarne ownership ne con filezilla, ne via php.
    Ciao!

  28. #28
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,252

    Predefinito

    Confermo il problema: ho provato a caricare un file via PHP, con due nomi diversi:
    Codice:
    senza-spazio.jpg  19.50KB  2023-01-21 18:08  0664  xxxxx 999
    con spazio.jpg    19.50KB  2023-01-21 18:08  0600     48 999
    xxxxx è il mio user id.

    Visto che ad un certo punto anche il mio codice chiama move_uploaded_file(), ho provato a stampare il risultato di stat(), sia sul file temporaneo che sulla destinazione finale:
    Codice PHP:
    $tempname = $_FILES['image']['tmp_name'];
    $target = self::IMAGES_ROOT . $path . $filename;

    var_export(stat($tempname));
    move_uploaded_file($tempname, $target);
    var_export(stat($target));
    Risultato? Sembra che move_uploaded_file() non riesca ad applicare owner e permessi corretti se il nome del file contiene almeno uno spazio:
    Codice:
    # senza-spazio.jpg
    
    File temporaneo
    ---------------
    'mode' => 33152, --> 0o100600
    'uid' => 48,
    'gid' => 999,
    
    Destinazione
    ---------------
    'mode' => 33204, --> 0o100644
    'uid' => xxxxx,
    'gid' => 999,
    
    # con spazio.jpg
    
    File temporaneo
    ---------------
    'mode' => 33152, --> 0o100600
    'uid' => 48,
    'gid' => 999,
    
    Destinazione
    ---------------
    'mode' => 33152, --> 0x100600
    'uid' => 48,
    'gid' => 999,
    Ultima modifica di dreadnaut : 21-01-2023 alle ore 20.31.42

  29. #29
    L'avatar di dreadnaut
    dreadnaut non è connesso Super Moderatore
    Data registrazione
    22-02-2004
    Messaggi
    6,252

    Predefinito

    Confermo il problema: ho provato a caricare un file via PHP, con due nomi diversi:
    Codice:
    senza-spazio.jpg  19.50KB  2023-01-21 18:08  0664  xxxxx 999
    con spazio.jpg    19.50KB  2023-01-21 18:08  0600     48 999
    xxxxx è il mio user id.

    Visto che ad un certo punto anche il mio codice chiama move_uploaded_file(), ho provato a stampare il risultato di stat(), sia sul file temporaneo che sulla destinazione finale:
    Codice PHP:
    $tempname = $_FILES['image']['tmp_name'];
    $target = self::IMAGES_ROOT . $path . $filename;

    echo
    $filename;
    echo
    "\tPrima di move_uploaded_file: {$campi_utili($tempname)}";

    move_uploaded_file($tempname, $target);

    echo
    "\tDopo move_uploaded_file: {$campi_utili($target)}";

    $chown_result = var_export(chown($target, getmyuid()), true);
    $chmod_result = var_export(chmod($target, 0644), true);

    echo
    "\tDopo chown → {$chown_result} e chmod → {$chmod_result}: {$campi_utili($target)}";
    Risultato? Sembra che move_uploaded_file() non riesca ad applicare owner e permessi corretti se il nome del file contiene almeno uno spazio. Inoltre, chown e chmod non riescono a risolvere il problema, ma sembrano completare con successo

    Codice:
    senza-spazio.jpg
        Prima di move_uploaded_file:      [ mode => o100600, uid => 48,    gid => 999 ]
        Dopo move_uploaded_file:          [ mode => o100664, uid => xxxxx, gid => 999 ]
        Dopo chown → true e chmod → true: [ mode => o100664, uid => xxxxx, gid => 999 ]
    
    con spazio.jpg
        Prima di move_uploaded_file:      [ mode => o100600, uid => 48,    gid => 999 ]
        Dopo move_uploaded_file:          [ mode => o100600, uid => 48,    gid => 999 ]
        Dopo chown → true e chmod → true: [ mode => o100600, uid => 48,    gid => 999 ]
    Rinonimare il file dopo averlo caricato non risolve quindi il problema :(

    Il resto del mio codice PHP non ha problemi a leggere il file con proprietario 48, ma tentare di scaricarlo via FTP restituisce (correttamente, dal punto di vista del server) un errore:

    Codice:
    Command:	RETR con spazio.jpg
    Response:	550 Impossibile aprire con spazio.jpg: Permesso negato
    Ultima modifica di dreadnaut : 21-01-2023 alle ore 21.16.05

  30. #30
    Data registrazione
    27-08-2019
    Messaggi
    21

    Predefinito

    mi solleva che non sono l'unico a cannare le virgolettature
    sembra che ne soffra pure il php.

    in ogni caso ancora grazie a tutti per il supporto.

Pagina 1 di 2 12 UltimoUltimo

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •