Donner droits a un fichier

Donner droits a un fichier - C - Programmation

Marsh Posté le 13-03-2007 à 08:15:43    

Bonjour,
je suis sous LINUX et j'ai un programme en C qui créer et ecrit dans un fichier texte.
J'aimerais donner des droits a ce fichiers (777) , mais je n'arrive pas à trouver comment on fait.
Pourriez vous m'aider svp ?
d'avance merci

Reply

Marsh Posté le 13-03-2007 à 08:15:43   

Reply

Marsh Posté le 13-03-2007 à 08:38:43    

Si tu tapes la commande "man 2 chmod", tu vois l'utilisation en C de chmod.
 
       #include <sys/types.h>
       #include <sys/stat.h>
 
       int chmod(const char *path, mode_t mode);
       int fchmod(int fildes, mode_t mode);
 
La première fonction permet de changer les droits sur un fichier identifié par un chemin, la seconde sur une référence de fichier.
 
Tout le détail :
http://www.linux-kheops.com/doc/ma [...] mod.2.html
 
vw.

Reply

Marsh Posté le 13-03-2007 à 08:43:44    

La réponse a été donnée mais, juste en passant, c'est inutile de donner les droits d'exécutions à un fichier de données.
 
Donne-lui 666 (r+w pour user/group/other) à la rigueur, voire un classique 644 (r+w pour user, read only pour group/other).

Reply

Marsh Posté le 13-03-2007 à 09:11:48    

Merci pour cette réponse aussi rapide. En fait je veux mettre des droits sur ce fichier car derriere j'ai un script php qui va lire ce fichier. Donc si g bien compris, je peux utiliser la fonction chmod, et ca va me donner qqch comme ca:
const char *pathname = /var/www/monfichier.txt;
chmod (pathname,666);  
??

Reply

Marsh Posté le 13-03-2007 à 14:31:40    

Il y a moyen de faire plus portable du genre :
mask = S_IRUSR (S_IREAD) | S_IWUSR (S_IWRITE) | ...
 
vw

Reply

Marsh Posté le 14-03-2007 à 21:28:32    

Combi_A_Vendre a écrit :

Il y a moyen de faire plus portable du genre :
mask = S_IRUSR (S_IREAD) | S_IWUSR (S_IWRITE) | ...
 
vw


 
+1, ça permet de faire en sorte que ton programme fonctionne sur tout OS compatible POSIX et ça rends aussi le code plus lisible par quelqu'un qui ne connait pas forcément les détails des droits d'accès (notation en octal en particulier)

Reply

Marsh Posté le 14-03-2007 à 22:02:11    

DrOctopus a écrit :

je suis sous LINUX et j'ai un programme en C qui créer et ecrit dans un fichier texte.
J'aimerais donner des droits a ce fichiers (777) , mais je n'arrive pas à trouver comment on fait.


Si tu utilises "open()" tu peux spécifier les droits à mettre au fichier lors de sa création
=> open("fichier", O_WRONLY|O_CREAT|O_APPEND, 0777);
Malheureusement avec "fopen()" tu peux pas.
 

DrOctopus a écrit :

Donc si g bien compris, je peux utiliser la fonction chmod, et ca va me donner qqch comme ca:
const char *pathname = /var/www/monfichier.txt;
chmod (pathname,666); ??


 
Petit détail dangereux: les droits sont à mettre en "octal" c'est à dire qu'il faut explicitement faire commencer le nombre par un "0" => chmod(pathname, 0666)
sinon il y aura conversion du nombre 666 (base 10) en nombre octal (1232) et au lieu d'avoir "rw-rw-rw-" t'auras "-w--wx-wT" !!!
 
Bien évidemment la solution de "Combi_A_Vendre" est beaucoup plus standard...
 


Message édité par Sve@r le 14-03-2007 à 22:07:05

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed