Ho visto innumerevoli esempi e tutorial che mostrano come creare un file e tutti "imbrogliano" semplicemente impostando i bit di autorizzazione del file. Mi piacerebbe sapere/scoprire come istanziare correttamente os.FileMode da fornire a uno scrittore durante la creazione/aggiornamento di un file.Golang correttamente istanziato os.FileMode
Un esempio grezza è presente sotto:
func FileWrite(path string, r io.Reader, uid, gid int, perms string) (int64, error){
w, err := os.OpenFile(path, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0664)
if err != nil {
if path == "" {
w = os.Stdout
} else {
return 0, err
}
}
defer w.Close()
size, err := io.Copy(w, r)
if err != nil {
return 0, err
}
return size, err
}
Nella funzione di base sopra bit di permesso 0664 è impostato e anche se questo può avere senso talvolta preferisco avere un modo corretto di impostare correttamente la mododelfile. Come visto sopra un esempio comune sarebbe che l'UID/GID è noto e già fornito come valori int e le cifre permanenti sono cifre ottali che sono state precedentemente raccolte e inserite in un db come stringa.
Grazie Jim, sempre utile! –
A meno che non mi sbagli molto, questo non è utile se stai cercando di avere alcuni file che sono scrivibili e altri no. Uno può avere o in (ad esempio) 0200 per attivare la scrittura dell'utente, ma sarebbe di aiuto la leggibilità del codice se ci fosse una costante di os per controllare questo. Sì, mi aspetto che ogni programmatore valga la pena di conoscere il permesso di ottale unix, ma è comunque una cattiva programmazione utilizzare un valore magico quando è possibile utilizzare un nome descrittivo. Per quanto posso dire, le librerie standard sono mancanti e aspettiamo che tutti abbiano le costanti dei permessi dei file Unix. –