Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.
La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Ho un problemino nel settaggio dei permessi su una directory appena creata con mkdir().
In parole povere mkdir (path, 04777) mi crea la directory, ma i permessi vengono settati a 755, quindi per ora uso qualcosa del genere:
The parameter mode specifies the permissions to use. It is modified by the process's umask in the usual
way: the permissions of the created directory are (mode & ~umask & 0777). Other mode bits of the created
directory depend on the operating system. For Linux, see below.
Dunque come si fa a calcolare il secondo parametro di mkdir() a prescindere da umask considerando che si vuole ottenere una directory con permessi 777 ?
Inoltre è consigliabile settare i permessi direttamente alla creazione della directory, o è meglio farlo successivamente con chmod() ?
Ultima modifica di Dani il mer 12 mar 2008, 3:35, modificato 1 volta in totale.
The parameter mode specifies the permissions to use. It is modified by the process's umask in the usual
way: the permissions of the created directory are (mode & ~umask & 0777). Other mode bits of the created
directory depend on the operating system. For Linux, see below.
Dunque come si fa a calcolare il secondo parametro di mkdir() a prescindere da umask considerando che si vuole ottenere una directory con permessi 777 ?
Inoltre è consigliabile settare i permessi direttamente alla creazione della directory, o è meglio farlo successivamente con chmod() ?
La man page ti dice che i permessi della directory saranno calcolati effettuando un AND tra mode (quella che specifichi: mettere 0777 fa passare tutto), umask del processo e 0777.
Se specificando come mode 0777 i permessi della directory risultano essere 0755, vuol dire che
Se proprio devi settare i permessi a 0777, puoi ridefinire la umask del processo che ospita il tuo programma tramite la funzione umask(mask) prima di una qualsiasi mkdir(). Per semplificarti la vita potresti settare la umask a inizio programma a 0777 in modo che i bit di mode da te specificati rimangano inalterati dagli AND. Vedi man 2 umask per i dettagli.
birg81 ha scritto:... e scrivere chmod 777 <tua_directory> e buonanotte benche' piu' dispendioso
Si sta parlando di un programma C, percui lanciare un comando esterno al programma è poco desiderabile.
@414N: Come ottengo il valore di umask, prima di modificarlo, per poi ripristinarlo dopo aver creato la directory ?
@fire_eater: Prova a compilare con -Wall e -Werror :P