IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

problème de droits linux dans un prog C


Sujet :

C

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 77
    Points : 56
    Points
    56
    Par défaut problème de droits linux dans un prog C
    Bonjour,
    Je fais un programme qui est sensé créer un fichier s'il n'existe pas déjà et écrire dedans.
    Seul problème, je n'arrive pas à lui donner les droits que je veux.

    J'ai regardé le man de 'CREAT', mais il semblerait que je n'ai pas trop compris...
    J'ai essayé d'utiliser la fonction creat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int descripteur = creat(adresse,S_IRWXO)
    Ce qui en théorie, devrait me créer un fichier avec tous les droits possible et imaginables, mais ça ne marche pas.

    Et l'étape supérieure :
    Si le fichier existe déjà, je l'ouvre, j'efface tout et j'écris dedans. Autrement dit, il faudrait que j'arrive à faire la même chose que précédemment, mais en utilisant la fonction : OPEN.
    J'ai déjà essayé un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    descripteur = open(adr,O_RDWR|O_CREAT|O_TRUNC);
    Mais j'ai encore et toujours le même problème : si le fichier n'est pas déjà créé, il va m'en fabriquer un nouveau avec des droits ULTRA limités...

    Voilà, si quelqu'un sait comment résoudre un de ces 2 problèmes, ça m'arrangerait beaucoup ! (surtout le 2ème...)

    Merci par avance

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    open admet 3 paramètres.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int open(const char *pathname, int flags, mode_t mode);
    Le 3eme paramètres, c'est justement les droits que tu veux donner si tu créés le fichier.

    Si tu veux les droits 777 lors de la création, c'est : S_IRWXU | S_IRWXG | S_IRWXO qu'il faut mettre en 3eme paramètre

    Regarde ici

  3. #3
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 401
    Points : 23 783
    Points
    23 783
    Par défaut
    Citation Envoyé par knice
    Ce qui en théorie, devrait me créer un fichier avec tous les droits possible et imaginables, mais ça ne marche pas.
    Mais encore ?

    Citation Envoyé par ram-0000 Voir le message
    Si tu veux les droits 777 lors de la création, c'est : S_IRWXU | S_IRWXG | S_IRWXO qu'il faut mettre en 3eme paramètre
    C'est, en outre, la même chose pour le second paramètre de creat(). En spécifiant uniquement le dernier, on fixe les droits 007, soit les pleins pouvoirs pour les utilisateurs « autres » uniquement. Le propriétaire du fichier et les membres du groupe, eux, n'auront aucun accès.

    D'autre part, il faut se souvenir, d'une part, que ces droits sont modifiés par umask et que, d'autre part, pour pouvoir créer un fichier quelque part, il faut vérifier qu'on a le droit d'écrire dans le répertoire qui doit contenir le fichier (et qu'à un niveau plus élevé, le filesystem entier soit monté en rw et avec les droits adéquats).

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 77
    Points : 56
    Points
    56
    Par défaut
    Mortel, merci beaucoup !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème d'itération dans mon prog
    Par akabis dans le forum VB.NET
    Réponses: 4
    Dernier message: 01/06/2009, 09h22
  2. problème dans l'appel d'une commande Linux dans python
    Par ghadroud dans le forum Général Python
    Réponses: 25
    Dernier message: 20/04/2009, 14h55
  3. Réponses: 4
    Dernier message: 07/02/2008, 11h56
  4. Réponses: 8
    Dernier message: 06/06/2007, 17h03
  5. Réponses: 2
    Dernier message: 13/05/2006, 13h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo