Forum Programmation.shell Programmer démarrage et arret mandriva

Posté par  .
Étiquettes :
0
31
jan.
2007
Bonjour,

Utilisateur de linux (Mandrake, puis Mandriva) depuis plusieurs années, mais nul en bash, je souhaiterais néanmoins écrire un petit programme qui me permette d'empêcher mon fils Christophe (17ans), de trop trainer sur internet alors qu'il a des devoirs à faire... Sad
Comme je ne souhaite pas lui interdire l'accès à la machine qui lui sert (aussi) pour de la bureautique, j'ai envisage le système suivant:

- Chris se logue avec son nom d'utilisateur et son mot de passe.

- Un script vérifie à quand remonte sa dernière connexion (jour, h, min)

- Si la connexion remonte a PLUS d'une heure, l'accès est libre pour tous programmes, sinon le système s'arrête en affichant dans un message envoyé a l'écran: "Quota dépassé, connexion possible dans XX min". L'idéal serait de désactiver uniquement la connexion internet, mais cela me parait un peu trop complexe à réaliser a mon niveau.

- Si il poursuit, il peut le faire librement, MAIS s'il lance la connexion internet (firefox, amsn) (ou plus généralement le démon internet ???) un drapeau est positionné à 1 au lieu de 0, et un compteur, lié au lancement de l'application démarre pour une période d'une heure, avec une commande du type: '/opt/firefox/firefox' & '/opt/nil' associé au raccourci clavier des applications correspondantes où nil est un petit exécutable, du type: sleep 3600;halt
c'est ce que j'utilise en ce moment.

Le système fonctionne très bien mais n'interdit pas de relancer l'ordinateur juste après l'arrêt.
Dans mon idée ce drapeau que je n'exploite pas pour le moment devrait permettre au démarrage, de tester la dernière connexion par une ligne du type:
last -R christophe > dirusr1c
qui transfèrerait le contenu de la commande dans un fichier dirusr1c, (ou autre nom)
ensuite un $h=$(cut '' -b 42-43 dirusr1c)
devrait me permettre d'extraire l'heure puis la minute de la dernière connexion, reste à transformer le tout en variable numérique et l'utiliser, ensuite faire un test conditionnel (plus de une heure apres le précédent arret, ou moins de une heure... et en fonction, soit remettre le flag a 0 et poursuivre, soit le laisser inchangé et arrêter l'ensemble.
pour plus de clarté j'ai pondu un petit organigramme fonctionnel qui se trouve http://img475.imageshack.us/my.php?image=organigrammecj7.jpg

Tout est améliorable, vous aurez surement des idées plus raffinées que ma grossière approche. Par ailleurs il serait bien que le résultat soit conforme a la GPL

Pour info, je tourne avec Mandriva 2007, connecté sur internet par adsl ethernet au moyen d'une freebox, et j'utilise essentiellement kde...

Merci de votre aide et de vos éventuelles suggestions.
  • # une question

    Posté par  . Évalué à 2.

    sans chercher à critiquer la démarche penses-tu qu'elle sera efficace ?
    à 17 ans on peut avoir les connaissances (ou les trouver par le biais d'amis) pour outrepasser ces restrictions. Il suffit d'un liveCD (tel knoppix ou le CD demo de mandriva) pour :

    - lancer un linux sans laisser aucune trace sur le pc;
    - depuis ce linux démarré, monter la partition racine et récupérer c les identifiants et mot de passe;
    - lancer la connexion à internet avec les infos récupérées à la seconde étape.

    sinon, le script en lui même ne semble pas trop poser de probleme; ce qui me gène le plus c'est où le placer. Dans le dossier Autostart de kde de l'utilisateur ? avec un peu de bon sens il le trouvera aisément. Faire un wrapper qui se chargerait de la vérification puis si succès lancerait startkde ? je n'ai pas de mandriva sous la main pour verifier si c'est réalisable de cette façon.

    g.
  • # iptables

    Posté par  . Évalué à 2.

    pour interdire l'accès à internet mais pas aux applications, le verrouillage efficace pourrait se faire avec iptables et le module owner qui permet un filtrage conditionné à l'uid de l'utilisateur.
    Coupler celà au module "condition" qui permet d'activer un filtrage en fonction du contenu de /proc/net/ipt_condition
    Pour sécuriser pleinement la machine il convient de verrouiller le bios par mot de passe (verrouiller aussi le boitier pour éviter l'accès aux jumpers ou à la pile :) ) et interdire le boot sur autre chose que le disque dur. qui sera positionné par ton script.

    Après il faudra sécuriser la machine (boîtier, bios)
    • [^] # Re: iptables

      Posté par  . Évalué à 4.

      C'est clair que iptables est une solution bien plus clean qu'un redémarrage, je plussoie. (Même "ifconfig ethX down" est mieux qu'un redémarrage.)

      Cela dit la meilleure solution reste quand même de discuter avec lui et lui montrer que dans la vie, avoir son bac est plus important qu'être connu sur myspace... C'est un peu comme si on prend son enfant en train de faire pousser de la beu dans sa chambre : on discute avec lui, au lieu de lui confisquer la bouteille d'eau avec laquelle il arrose ses plantations.

      Remarquez, confisquer la beu peut être sympa :-)
      • [^] # Re: iptables

        Posté par  . Évalué à 1.

        hello,
        Merci pour vos commentaires constructifs
        Je suis bien de votre avis; mais là, c'est un problème de volonté plus qu'autre chose; internet représente ici une véritable addiction, il le reconnait lui même, mais n'arrive pas a se gérer...
        d'où le recours à cette astuce qu'il accepte fort bien, et dont il comprend la nécessité...
        Le fait de pouvoir désactiver l'internet, serait un progrès majeur par rapport a ma grossière astuce, ifconfig ethx down peut vous sembler rudimentaire, mais à moi cela me parait nettement plus à ma portée que la programmation d'iptable. Ce que je cherche aussi, c'est un moyen d'avertir 10 minutes avant que le délai va être écoulé par exemple par l'affichage d'un compteur à rebours à l'écran ou un simple message, mais comme je ne connais que très peu le shell, je m'en tire plus ou moins bien... d'où le redémarrage brutal pour lequel j'avais opté jusqu'ici....
        Quant a désamorcer le système, il n'a pas actuellement les connaissances qui le permettent, il voit mon Linux comme un "drôle de système" mais le fait que je puisse pondre de rudimentaires bouts de shell pour le rappeler à l'ordre commence à l'intéresser...
        autrement dit: il s'agit de faire d'une pierre, 2 coups ;-)
        • [^] # Re: iptables

          Posté par  . Évalué à 2.

          tu peux utiliser kdialog pour afficher ce genre d'avertissements à l'écran.
          c'est très puissant avec un simple script shell

          ⚓ À g'Auch TOUTE! http://afdgauch.online.fr

          • [^] # Re: iptables

            Posté par  . Évalué à 1.

            hello, merci, je ne connaissais pas!
            Cela fonctionne t'il comme xdialog ?
            • [^] # Re: iptables

              Posté par  . Évalué à 1.

              je crois, mais avec la puissance de dcop en plus, et puis il y a aussi zenith sous gnome pour la même chose

              ⚓ À g'Auch TOUTE! http://afdgauch.online.fr

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.