Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 23/04/2007, à 18:45

coco1234

Droit de fichier dans une fontion de lecture

Bonsoir,
Je voulais savoir s'il est possible d'utiliser les droits d'acces à fichier dans une fonction de lecture . par exemple  : fscanf(), ou autre fonction ?
merci

Hors ligne

#2 Le 24/04/2007, à 01:55

slapierre

Re : Droit de fichier dans une fontion de lecture

J'aimerais que tu précises ta question!

D'après ce que je comprend, c'est non (la fonction ne gère pas les droits d'accès aux fichiers). La fonction - fscanf - va s'exécuter et si l'utilisateur qui lance le programme à les droits suffisants, le fichier sera lu, sinon tu vas recevoir un message d'erreur car le kernel bloque l'accès au fichier.

Pour t'en assurer, roule ton programme avec la commande strace :

   $ strace ./monprog

Simon


"Le spectre de la folie nous empêchera-t-il de hisser l'étendard de l'imagination?" - André Breton

Hors ligne

#3 Le 24/04/2007, à 02:10

slapierre

Re : Droit de fichier dans une fontion de lecture

J'ai vérifié si je n'avais pas dit de conneries... l'honneur est sauf!

#include <stdio.h>
#include <stdlib.h>
int main (void)
{
	FILE *id;
	id = fopen("fichier.txt","r");
	if (id !=NULL) fclose(id);
	return 0;
}

Compiler : $ cc -o out main.c
Tester : $ strace ./out

> Si le fichier n'existe pas :
    open("fichier.txt", O_RDONLY)           = -1 ENOENT (No such file or directory)

> Si on n'a pas l'accès suffisant :
    open("fichier.txt", O_RDONLY)           = -1 EACCES (Permission denied)

> Si tout va bien :
    open("fichier.txt", O_RDONLY)           = 3

Simon

Dernière modification par slapierre (Le 24/04/2007, à 19:12)


"Le spectre de la folie nous empêchera-t-il de hisser l'étendard de l'imagination?" - André Breton

Hors ligne

#4 Le 24/04/2007, à 08:47

coco1234

Re : Droit de fichier dans une fontion de lecture

en fait, je dois faire un fonction authentifier, qui verifie qu un login correspond au mot de passe donnes. Donc je fais la lecture d'un fichier.txt. mais il faut que personne d'autre n'arrive pas à y acceder.

Hors ligne

#5 Le 24/04/2007, à 19:29

slapierre

Re : Droit de fichier dans une fontion de lecture

Le mieux serait de faire comme pour unix / linux : encrypter le mot de passe. Les fichiers /etc/passwd et /etc/shadow sont ainsi liés. Aussi, les permissions de /etc/shadow sont telles que seul le propriétaire du fichier peut l'ouvrir, et le proprio est le root!

-rw-r--r-- 1 root root 1435 2007-04-09 16:08 /etc/passwd
-rw-r----- 1 root shadow 909 2007-04-09 16:08 /etc/shadow

Si ton programme va rouler sur une une plateforme *x, pas de problème, il faudra  utiliser la commande sudo pour exécuter correctement ton programme. Si c'est sous Windows, alors assure toi que le système de fichier est NTFS, et seul l'administrateur pourra accéder au fichier.


Simon


"Le spectre de la folie nous empêchera-t-il de hisser l'étendard de l'imagination?" - André Breton

Hors ligne

#6 Le 25/04/2007, à 11:26

coco1234

Re : Droit de fichier dans une fontion de lecture

je fais un programme sous linux,  est ce que tu peux me dire stp comment faire pour que mon fichier(ou y a les mots de passes) devient un fichier de root?

Hors ligne

#7 Le 25/04/2007, à 21:34

slapierre

Re : Droit de fichier dans une fontion de lecture

Avec la commande change owner :

    $ sudo chown root mon_fichier

Pour changer l'utilisateur et le groupe :

     $ sudo chown root:root mon_fichier


Simon


"Le spectre de la folie nous empêchera-t-il de hisser l'étendard de l'imagination?" - André Breton

Hors ligne

#8 Le 30/04/2007, à 19:03

coco1234

Re : Droit de fichier dans une fontion de lecture

Bonsoir Simon,
J'ai reussi à modifier le proprietaire de mon_fichier, mais j'arrive à le lire avec fscanf sans commande sudo:  ./authentifier
J'arrive aussi à l'ouvrir manuellement!!!!!!!!!
merci beaucoup pour ton aide.

Hors ligne