Newsgroup: it.comp.lang.c
Titolo: fopen()

salve a tutti,
sto utilizzando una mia routine di scrittura per file di testo in cui
apro/creo il file tramite una fopen("miofile.txt", "a");
Ho notato che la fopen in UNIX crea il file con i diritti in scrittura solo
per l'utente che sta eseguendo la procedura. Come faccio a creare il file
con diritti lettura/scrittura per tutti?
grazie
bye
Johnny

dovresti usare il comando di basso livello open di linux/unix??? non so
quale sia la sintassi ma so che linux e penso anche unix associ ai file
aperti un numero intero e poi da quello passandolo a altri programmi, lo
rendi comune a tutti, come fare non so iio ti ho dato l'info base. Sono
sicuro su linux che funzioni cosě ma non ho in giro il libro per cui non so
scriverti la sintassi corretta.
l'ho provato nel corso di info 2...

 3. man umask is your friend.
parla come mangi.
Bye
Johnny

 Johnny
C:\>iao Angelo
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 parla come mangi.
Avrebbe dovuto dirti RTFM (la F non sta' per "fine" nonostante quello che 
dice qualcuno): su qualunque libro di C che non sia di Schildt c'e' scritto 
che la fopen() apre un file in varie modalita' (e te le elencano), ma non 
si accenna nemmeno ai permessi. Se fai man sotto unix (o via web anche) 
vedrai che ti rimanda appunto alle primitive del sistema per la gestione 
dei file (il che tra l'altro significa che se usi la fopen poi 
difficilmente potrai utilizzare le system call di Unix per gestire il file, 
visto che la prima usa una struttura complessa, le altre un numero)... 
quindi l'approccio e' un tantino sbagliato.
A mio avviso ha dimostrato sin troppa pazienza.
-- 
Mox
"Trust the programmer."
"Don't prevent the programmer from doing what needs to be done."
"Keep the language small and simple."
"Provide only one way to do an operation."


Grazie per i consigli.
Bye
Johnny

 quindi l'approccio e' un tantino sbagliato.
Ho posto la mia domanda proprio per capire se non fossi completamente fuori
strada.
Grazie per il chiarimento.

 problema che sto affrontando?
[cut]
Se ti va', si puo' continuare l'allegra discussione in privato o su un altro
NG.
C:\>iao Angelo

 C:\>iao Angelo
bye
Johnny

 Tempo perso.
Come preferisci. Se pero' guardi bene quello che ti ho scritto, la
risposta che cercavi, e' presente.
Sempre che tu sappia leggere nei posti giusti, oltre che scrivere sui
NG sbagliati.


 risposta che cercavi, e' presente.
Non ho messo in dubbio il fatto che probabilmente hai più esperienza di me
per risolvere questo specifico problema,
ho criticato solo i modi e la forma in cui mi hai reso partecipe della tua
scienza innata.
Bye
Johnny

 della tua scienza innata.
La mia "scienza innata"? E chi ti dice che quello che so' mi e' stato
infuso per virtu' dello Spirito Santo? Ah... siccome ho detto che stavi
facendo una cazzata dando accesso al mondo ad un file sotto Unix (senza
che tu avessi specificato il limiti di utilizzo dello stesso), allora
devo essere uno di quei sapientoni che sanno sempre tutto...
Che quella sia una cazzata non lo dico io, lo riferisco solo. Ci
sono vagonate di libri che spiegano cosucce tipo "Come evitare di
fare cazzate su un S.O.: le basi", solo che tu sei troppo impegnato
a risentirti e non hai tempo da sprecare per queste inezie.
Per inciso, quei libri non vengono scritti solo per chi deve progettare
"un sistema di difesa anti-nucleare", vengono scritti per tutti quelli
che hanno voglia in imparare un minimo di comportamento corretto, sia
sotto Unix che sotto qualsiasi altro S.O.
Ovviamente, tanto per dimostrare che quella sulla fopen() non era
l'unica stupidaggine che eri in grado di produrre, te ne sei uscito
con
"E se ti dicessi che questo file non deve essere utilizzato in UNIX ma da
una workstation NT, saresti più tranquillo riguardo ai possibili
catastrofici problemi di sicurezza che potrebbero derivare dal lasciare a
questo file tutti i diritti possibli immaginabili?"
Con una sottile allusione (almeno questa e' stata la mia impressione) al
fatto che dovessi essere necessariamente un fanatico di Unix. Qui ci hai
quasi preso: fanatico no, forte estimatore si.
Fai un piacere a te stesso, taci!
Solo cosi' eviti di dimostrare quanto sei ignorante... contento di
esserlo.
Nel caso ti fosse sfuggito (e ti e' sicuramente sfuggito) NT ha una
granularita' nella gestione dei permessi sui file ancora piu' stringente
di molti Unix, tipo Linux che con ext2 (di default sulla maggioranza dei
sistemi Linux) segue ancora lo schema classico "ugo" [1] per i permessi.
Per molte cose, e' proprio grazie a quelli che vogliono "creare il file
con diritti lettura/scrittura per tutti" a tutti i costi (e si risentono
se gli viene fatto notare che e' una cazzata) che NT viene percepito come
un cesso di S.O. (per altre cose ne mette di suo la Microsoft).
Ma ovviamente per te l'ACL dev'essere l'Associazione Costruttori di
Lavatrici. Lascia perdere NT  pensa a qualcosa di piu' semplice...
qualcosa tipo il DoS.
Guarda, proprio perche' siamo sotto Natale e tutti sono piu' buoni,
se vuoi addomesticare quel cattivaccio di Unix basta seguire questa
semplicissima procedura:
1. loggarsi come root (sperando che nessuno sia stato cosi deficiente
   da darti la password ehm... la parola d'ordine);
2. dare il comando cd / (cosi' non ti incasini);
3. dare il comando chmod -R 6777 *;
4. editare i file di configurazione della conchiglia di apertura di
   sessione e inserire
 
   umask 000
Per reference osp... questa brutta abitudine di parlare come mangio...
come riferimento questi sono i file da modificare
Bourne conchiglia   .profile
Korn conchiglia	    .profile
BASH conchiglia	    .profile
C conchiglia	    .login
TC conchiglia	    .login
mi dispiace, ma se ti traduco in italiano anche .profile e .login 
1. non li trovi (sono nella directory /etc);
2. non funzionano piu';
Opzionalmente
5. dare il comando chown -R root:root /* (non e' strettamente necessario,
   ma vuoi mettere la bellezza di non vedere tutto quel disordine)
6. eliminare tutti gli utenti presenti nel file passwd (associato ad una
   rm -r /home/* tanto per risparminare fatica)
7. rimuovere la passw... la parola d'ordine dal file /etc/shadow, in
   alternativa scriverla su un post-it  e attaccare lo stesso nei pressi
   della tastiera.
Con queste facili modifiche sconfiggi per sempre il mostro "permesso
sul file" e avrai molte rotture di scatole in meno a causa di strani
messaggi che recitano "permission denied..." (su Linux e' quasi garantito
che la cosa funzioni, per gli altri Unix la scienza non mi e' ancora stata
infusa e non posso garantirti nulla).
C:\>iao Angelo
[1] Ti assicuro che "ugo" non e' un mio amico.


 C:\>iao Angelo



hai fraintesto, volevo solo dire che non devo fare nient'altro che scrivere
questo file su UNIX per poi copiarmelo su win2000 (è 2000 non NT, mi son
sbagliato)
e farci girare sopra una procedura scritta per win2000. Non ho niente contro
UNIX,
né tantomeno con chi sa usarlo meglio di me (e sono tanti). Io non sono un
sistemista e non
mi occupo normalmente di problemi legati ai sistemi operativi o più
specificamente ai diritti
che gli utenti possono avere nell'accedere alle risorse. Mi sono scontrato
casualmente con
questo problema e ho cercato informazioni.
Buon Natale
bye
Johnny

 e farci girare sopra una procedura scritta per win2000.
Motivo in piu' per non preoccuparsi di dare permessi "Urbi et Orbi". Nel
passaggio ad un sistema diverso i permessi originari (in generale) si
perdono. L'unico che deve avere permessi di lettura/scrittura e' chi
e' demandato al trasferimento dei dati generati (server ftp, server
http, sfigato che deve copiare a mano su un floppy il file :-)).
Buon Natale anche a te. :-)
C:\>iao Angelo


Angelo Paolitto wrote:
   Conchiglia di mais? ;)
-- 
Alla prossima,
Marco