Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1

    [C] Cambiare utente con comandi da shell...

    Ciao,


    sto muovendo i primi passi da c e sono su linux (debian)...


    Ho creato e compilato un piccolo programmino che non fa altro che eseguire dei comandi da shell... come creare delle directory ed eseguire qualche programma.


    Se eseguo questo programma da root funziona tutto, mentre se lo lancio da php, il programma gira con i permessi di apache (o php, non so) cioè quelli dell'utente nobody.


    i comandi all'interno del programino C li eseguo con la funzione system().


    Ora, per ovviare il problema ho pensato di dare un system("su"); e system("mia password"); sperando che funzioni come mi funzionano questi comandi se sono io ad eseguirli...


    Qualche suggerimento?

  2. #2

  3. #3
    ciao,


    purtroppo non posso...

    http://forum.html.it/forum/showthrea...hreadid=748744
    http://forum.html.it/forum/showthrea...hreadid=748407


    in sintesi, devo manipolare la struttura delle dir dove sono memorizzati i messaggi di posta... e sono due utenti che possono farlo...


    postfix con l'utente vmail (che crea le cartelle ed i file ma lascia i permessi su queste cartelle = a chown vmail:vmail 750)
    e nobody, che fa lo stesso... (ma lascia chown nobody:nogroup 750)

    risultato che non posso creare o modificare file che crea l'altro.

    e purtroppo da nobody non posso nemmeno eseguire un chmod o chown su cartelle creati da vmail.


    Quindi, siccome da php non funziona per gli stessi motivi, pensavo di creare qualcosa di simile in c, sperando di aggirare il problema e riuscire a far girare il programma da root.




  4. #4
    ma non puoi fare un chgroup a nobody?
    io farei chgroup nobody vmail..
    cosi' l'utente nobody riesce a toccare i file di vmail..
    (
    non so' se il comando chgroup cosi' e' giusto..
    io modifico direttamente da /etc/passwd il gid..)

  5. #5
    e l'utente vmail riesce a toccare i file di nobody?



    ma non si può proprio fare il login da codice?

  6. #6
    no.. a meno che non li crea dopo aver cambiato il gruppo,
    allora si..
    no, si deve ottenere il gid e l'uid pari a 0 per essere root..
    tramite codice con il setuid

  7. #7
    potresti farmi un esempio di come utilizzare il setuid?

    l'unico modo che ho di far funzionare tutto è creare quelle directory da root.. cos' poi posso fare chown vmail:vmail.

  8. #8
    non e' bene utilizzare il setuid..
    cosi' come non e' bene utilizzare il bit di suid dei programmi
    da root
    #chmod +s exeguibiles

    poiche' un cracker potrebbe prendere il controllo della tua macchina..

    invece prova a fare il chgroup e poi dimmi..(ti DEVE funzionare)

    $man chgroup

  9. #9
    purtroppo non funziona...

    alla fine, quando creo dei file con questi due utenti, ogni utente mi lascia sul file che ha creato il proprio utente ed il proprio gruppo, con permessi di scrittura solo per l'utente.


    Quindi, anche se avessi due utenti nello stesso gruppo, alla fine, non potrei scrivere nella cartella creata dall'altro gruppo.


    Pensavo di risolvere temporanemanete dando chmod 777, ma il problema descritto è quello sopra... quando creo una cartella, non eredita ne utente associato, ne gruppo associato ne permessi associati.


    Dovrei ogni volta lanciare chown nobody:vmail, ma ovviamente non posso eseguire questo comando da non root.

  10. #10
    puoi fare un setuid con l'uid di vmail
    (guarda in /etc/password per saperlo
    Username:Password:UserID:GroupID:Info:HomeDirector y:Shell )
    in maniera tale da non rendere l'eseguibile exploitabile..

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 © 2024 vBulletin Solutions, Inc. All rights reserved.