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

Linux Discussion :

/bin/date permission denied


Sujet :

Linux

  1. #1
    Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2013
    Messages : 1
    Points : 3
    Points
    3
    Par défaut /bin/date permission denied
    Bonjour,

    Je souhaite synchronisé mon pc sous linux ( Ubuntu ) via une antenne GPS, néanmoins lorsque je souhaite utiliser la commande " /bin/date XXXXXXXXX" j'ai un beau ; " Permission denied" qui apparaît, je sais qu'il faut être root pour pouvoir modifier la date, mais je ne sais malheureusement pas comment y passer en restant dans mon programme ou comment ajouter les droits et lesquels pour corriger mon problème.

    Merci d'avance.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    #include <termios.h>
    #include <time.h>
    #include <sys/time.h>
    #include <time.h>
    #include <errno.h>
     
    #define OFFSET 47700
     
     
     
    int main(void)
    {
     
     
    char commande[35]="/bin/date 040318482015.45";
    [...]
     
    // On écrit dans commande /bin/date suivi de l'heure et la date au format MMJJHHmmAAAA.ss
    //sprintf(commande,"/bin/date %s",datetemps);
    printf(" ma commande est :%s  \n",commande);
    // On change la date et l'heure du système. (Millisecondes à 0)
    							system(commande);
     
     
    return 0;
    }

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 395
    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 395
    Points : 23 756
    Points
    23 756
    Par défaut
    Bonjour,

    Citation Envoyé par minouxxxxx Voir le message
    je sais qu'il faut être root pour pouvoir modifier la date, mais je ne sais malheureusement pas comment y passer en restant dans mon programme ou comment ajouter les droits et lesquels pour corriger mon problème.
    Ce n'est pas ton programme qui doit passer root de lui-même mais le système (ou son administrateur) qui doit le lancer depuis le compte root. C'est important parce que c'est une erreur assez sérieuse et néanmoins très fréquente.

    Ceci posé, tu as deux solutions :

    • Soit ton programme est lancé ponctuellement, généralement par toi. Dans ce cas, tu utilises la commandes sudo pour lancer un programme sous une autre identité (root par défaut) sans avoir à ouvrir une session exprès pour cela. Tu fais « $ sudo ./tonprogramme » et ça devrait marcher ;
    • Soit ton programme doit tourner en permanence et dès le démarrage du système. Dans ce cas, il faut apprendre à faire un dæmon, puis tu ajoutes ton programme à SysVInit ou systemd. À cette occasion, le programme sera lancé par root.


    Par ailleurs, sous Linux, il existe les capabilities et spécialement CAP_SYS_TIME, qui te permettent une fois lancé de renoncer aux privilèges root tout en conservant le pouvoir de modifier la date.


    Enfin, essaie d'éviter de recourir à system() chaque fois que tu le peux. Cette commande ne fait qu'envoyer un ordre au shell tel que tu le ferais toi-même depuis la ligne de commande. Cet appel lance donc un autre programme qui, lui, va faire le travail que tu cherches à faire. Ça veut dire que ton programme ne sert virtuellement à rien (à part la partie GPS tout de même) et que ça introduit des failles de sécurité potentielles.

    Pour changer l'heure sous Unix avec des appels système, vois stime() ou settimeofday().

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

Discussions similaires

  1. Linux error :13: Permission Denied
    Par manue85 dans le forum Oracle
    Réponses: 11
    Dernier message: 31/03/2005, 16h53
  2. Bash - Permission Denied
    Par M.Dlb dans le forum Linux
    Réponses: 3
    Dernier message: 07/12/2004, 22h42
  3. Réponses: 4
    Dernier message: 02/11/2004, 15h18
  4. permission denied
    Par HULK dans le forum Apache
    Réponses: 2
    Dernier message: 08/04/2004, 19h46
  5. [PostgreSQL]permission denied
    Par alex2205 dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 13/02/2003, 13h27

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