1. "da root devo compilare un programma": no. E' una pessima idea. Scusa, "pessima" non inizia a descrivere il problema. Se il sistema non e' completamente rotto, da root non *devi* compilare nulla. Perche' per compilare ti basta essenzialmente avere i permessi per (1) i permessi di lettura sorgenti che devi compilare; (2) permessi di scrittura (e possibilmente lettura ed exec) si una qualche sottodirectory da qualche parte nel filesystem [ammesso che il programma da compilare non sia stato scritto da persone prive dei pollici opponibili, nel qual caso potresti avere bisogno dei permessi per scrivere nella stessa directory dove stanno i sorgenti -- cosa che puoi comunque ovviare copiando i sorgenti nella singola directory dove hai i permessi di scrittura). Questo e' completamente sufficiente per "compilare" un programma. Ah, ovviamente devi anche (3) avere permesso di esecuzione sui programmi che usi per compilare (che e' piuttosto default in una qualunque installazione Unix sensata -- al piu' non ci sono installati i tools, ma quello e' un problema diverso --). Piu' (4) permessi di lettura per alcune cose quali le librerie contro cui devi linkare e gli header di suddette librerie (se il linguaggio in questione ha il contesto di header). Davvero, compilare da root e' una nota bad practice e troverai quintali di informazioni nel web sul perche'.
2. Ti e' chiaro che in Unix, una volta che sei root puoi fare quello che ti pare (salvo poche operazioni sull'hardware per le quali non basta essere root ma devi essere il kernel e due o tre cose che non puo' fare nessuno -- se non il kernel -- per ottimi motivi tecnici)? Dal che discende che una volta che puoi diventare root (ovvero, aprire una shell che gira con i permessi di root) puoi fare proprio tutto quello che vuoi, incluso lanciare comandi con i permessi di un altro utente? Quindi, se puoi diventare root puoi:
a. creare gli utenti che ti pare, con la loro home e la loro password
b. compilare il programma suddetto proprio come root (anche se e' una pessima idea farlo); o meglio... compilarlo come utente non previlegiato
c. spostare file da ovunque a dove ti pare (ok, a patto che il medium su cui scrivi sia scrivibile)... specificamente puoi spostare nella home di chi ti pare il file che ti pare (e non solo: puoi anche attribuirgli l'ownership dell'utente e del gruppo che piu' ti aggrada: hei, puoi anche fare combinazioni in cui nessun utente che non sia root puo' di fatto accedere al file! cooll!)
d. lanciare un qualunque programma con i permessi di qualunque utente (specificamente "loggarti" vuole eseguire /bin/login o al limite una shell: quindi si, puoi loggarti come chi ti pare) e lanciare il programma (o anche direttamente lanciare il programma con suddetti permessi -- senza fare login!)
Insomma... una volta che sai come diventare root, puoi fare grosso modo quello che ti pare su un sistema. Anche le cose che non dovresti fare.
E personalmente quello che vuoi fare non dovresti farlo perche' ci sono due casi:
1. il programma di cui parliamo e' veramente scritto in modo demenziale (e si, ce ne sono)
2. non hai la minima idea di quello che stai facendo e ti stai inventando requisiti immaginari
3. chi sta sopra di te dovrebbe cambiare mestiere e smetterla di darti processi privi di senso da implementare (nel quale caso mi dispiace tantissimo per te: avere capi idioti e' decisamente un incubo)
Ora, io il programma non lo conosco e non ti so dire... pero' *davvero* devo essere io a spiegarti che:
"""
esempio da root creo l'user Pippo compilo il programma, lo sposto nella home con nome "programma_Pippo" quindi do un " su Pippo" inserisco la password di Pippo e mi ritrovo nella shell loggato come Pippo mi sposto nella home con "cd /home/Pippo" e lancio il programma con "./programma_Pippo".
""""
e' banale una volta che sai essere root? E *davvero* devo spiegarti io come funziona sudo? sudo e' venuto fuori nel 1980 (36 anni fa) ed e' uno strumento di default dell'amministrazione dei sistemi da *tanto* tempo. E in OS X, ma soprattutto un po' di distribuzioni Linux di quelle "critiche", e' lo strumento di default, tanto che root in quanto root non e' manco abilitato come utente per fare login. Sinceramente non ricordo l'ultima volta che ho fatto su invece di sudo (anche perche' tipicamente se hai un briciolo di attenzione alla sicurezza non vuoi che la gente faccia su, ma puoi rendere sensato fare sudo).
Poi, gia' che ci siamo... tutta questa idea di installare nella home di *ogni* utente il "maggico programma" e' proprio un'idea nata male. Spero solo che il programma sia stato scritto da gente senza pollici opponibili e che tu ci sia costretto. Perche' nella norma i programmi si installano in directory condivise e poi gli utenti lanciano il programma (che, guarda caso, avrai i permessi di chi lo esegue -- ovviamente chi esegue deve avere i permessi per eseguire --. Uff.. mi sembra fuori luogo qui entrare nei dettagli delle differenze fra uid, euid e, per i sistemi che lo implementano, fsuid. Giusto per rendere meno che demenziale aggiornare -- specie se sei fuori dalla casa delle bambole ed esistono piu' di "una macchina" su cui hai le home di "tutti gli utenti" --.