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

Administration système Discussion :

Comment rendre intuable un processus ?


Sujet :

Administration système

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2004
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 36
    Points : 24
    Points
    24
    Par défaut Comment rendre intuable un processus ?
    Bonjour,

    je développe une application pour gérer le temps de connexion des élèves à l'Internet qui les empêche de surfer tant qu'ils n'ont pas rentré leur login et de mot de passe dans mon application.

    J'aimerais savoir comment les empêcher de tuer mon application ou de la fermer pour les forcer à s'identifier et les déconnecter au bout d'une heure de surf ?

    Je sens que la solution viendrait de lancer mon programme parl 'utilisateur root, mais je ne suis pas bien sûr de moi. Je débute sous Linux en tant qu'administrateur.

    Merci.

  2. #2
    Expert éminent
    Avatar de Michaël
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2003
    Messages
    3 497
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Juillet 2003
    Messages : 3 497
    Points : 8 237
    Points
    8 237
    Par défaut
    la solution est de passer par root lors du boot de la machine.
    tu créés un script qui va se lancer au démarrage (il y a pleins de posts sur le forum à ce sujet) et voilà


    comme ça, ils n'auront pas le droit de le tuer

    pourquoi ne pas installer un serveur ldap distant et faire l'identification sur ce serveur grâce à nsswitch ? ça te permet de stocker leurs identifiants et mot de passe sur un serveur distant (comme ça ils peuvent changer de poste sans problème) et tant qu'ils n'ont pas mis leur mot de passe, ils peuvent pas se connecter sur le pc (et donc sur internet). en plus, tu auras un historique des connexions pour savoir qui s'est connecté à telle heure et qui a été sur des sites hors-charte

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2004
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 36
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par Michaël
    la solution est de passer par root lors du boot de la machine.
    tu créés un script qui va se lancer au démarrage (il y a pleins de posts sur le forum à ce sujet) et voilà
    comme ça, ils n'auront pas le droit de le tuer
    J'ai cherché et je cherche encore mais je ne trouve rien sur le forum pour lancer un script qui serait intuable par l'utilisateur lambda.


    Citation Envoyé par Michaël
    pourquoi ne pas installer un serveur ldap distant et faire l'identification sur ce serveur grâce à nsswitch ? ça te permet de stocker leurs identifiants et mot de passe sur un serveur distant (comme ça ils peuvent changer de poste sans problème) et tant qu'ils n'ont pas mis leur mot de passe, ils peuvent pas se connecter sur le pc (et donc sur internet). en plus, tu auras un historique des connexions pour savoir qui s'est connecté à telle heure et qui a été sur des sites hors-charte
    Ben parce que :
    1/ Je ne sais pas faire
    2/ On m'a demandé de reprendre le développement de ce logiciel là

  4. #4
    Membre à l'essai
    Inscrit en
    Décembre 2004
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 36
    Points : 24
    Points
    24
    Par défaut
    Bon j'ai fait un script shell qui lance mon programme quand je lance le script en ligne de commande.
    Je l'a rajouté avec son chemin dans mon rc.local, mais rien ne se passe au démarrage !

    Mon application Java ne veut pas se lancer sauf si je lance le script en ligne de commande.
    Je capte rien.

  5. #5
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 296
    Points : 1 803
    Points
    1 803
    Par défaut
    La ton probleme est un probleme de variable d'environnement , et plus surement environnement JAVA .

    avec le script au boot via le rc.local c'est l'utilisateur root qui lance, et celui-ci n'a pas forcement le même environnement que toi .

    Regarde les variables dans ton environnement (commande env ou plutot export) qui sont necessaire a JAVA et ajoute les en debut de ton script .....

    (probablement la variable :
    JAVA_HOME=/usr/lib/java)
    Marc
    Slackware for ever ......
    BASH - KSH ( http://marcg.developpez.com/ksh/ )

  6. #6
    Membre à l'essai
    Inscrit en
    Décembre 2004
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 36
    Points : 24
    Points
    24
    Par défaut
    C'est ce que j'ai fait mais ça ne change rien

  7. #7
    Membre à l'essai
    Inscrit en
    Décembre 2004
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 36
    Points : 24
    Points
    24
    Par défaut
    Mon programme utilise une fenêtre. Est-ce que rc.local se lance à la fin après la gestion du bureau ou avant ça et donc que ça fasse planter à cause d'un problème graphique ?

  8. #8
    Expert confirmé
    Avatar de Katyucha
    Femme Profil pro
    DevUxSecScrumOps Full Stack Bullshit
    Inscrit en
    Mars 2004
    Messages
    3 287
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Irlande

    Informations professionnelles :
    Activité : DevUxSecScrumOps Full Stack Bullshit

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 287
    Points : 5 075
    Points
    5 075
    Par défaut
    Il utilise une fenetre ? Je comprend pas.
    Ce genre de programme normalement, tourne en tache de fond...

    J'ai du mal a comprendre le fonctionnement de ton programme. Il fait quoi exactement? Que fait exactement l'éleve?
    Grave urgent !!!

  9. #9
    Membre à l'essai
    Inscrit en
    Décembre 2004
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 36
    Points : 24
    Points
    24
    Par défaut
    Bon alors voici des nouvelles de mes derniers errements, qui ne donnent pas grand chose d'ailleurs.

    j'ai créé un script S99monscript dans le répertoire /etc/rc.d/rc5.d
    sur ce script j'ai fait un chmod 755 pour le rendre executable

    ce script contient le bout de code que voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #!/bin/sh
     
    export PATH=$PATH:/usr/java/jdk1.5.0_08/bin/:/usr/java/jdk1.5.0_08/:.:/usr/local/progFSE/:/usr/local/progFSE/client/
    export JAVA_HOME=/usr/java/jdk1.5.0_08/
    export CLASSPATH=/usr/java/jdk1.5.0_08/jre/lib/rt.jar:/usr/local/progFSE/mysql-connector-java-3.0.14-production-bin.jar:/usr/local/progFSE/:.:/usr/local/progFSE/client/
     
    cd /usr/local/progFSE/client/
    java client

  10. #10
    Membre à l'essai
    Inscrit en
    Décembre 2004
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 36
    Points : 24
    Points
    24
    Par défaut
    Citation Envoyé par Katyucha
    Il utilise une fenetre ? Je comprend pas.
    Ce genre de programme normalement, tourne en tache de fond...

    J'ai du mal a comprendre le fonctionnement de ton programme. Il fait quoi exactement? Que fait exactement l'éleve?
    C'est un programme qui lance une fenêtre permettant à l'élève de saisir son login et son mot de passe pour se connecter. Une fois connecté, la fenêtre indique à l'élève le temps de connexion qui lui reste et lui permet aussi de se déconnecter en cliquant sur un bouton.

  11. #11
    Membre confirmé Avatar de yjuliet
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Août 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 362
    Points : 460
    Points
    460
    Par défaut
    Si ton programme fonctionne dans une fenêtre, tu as vraisemblablement besoin d'un serveur X et des variables d'environnement DISPLAY associée.

    Au démarrage de ta machine (init) tu ne peux lancer une application fenêtrée. Une solution consisterait à passer ton application en mode client/serveur, avec le serveur lancé au démarrage et le client en mode fenêtré ...

    Pour ce qui est de l'empêcher de se faire tuer, si c'est un programme lancé par l'utilisateur courant, tu ne pourras pas empêcher à l'utilisateur de le tuer par un SIG_KILL (aka kill -9)

  12. #12
    Membre habitué
    Inscrit en
    Février 2005
    Messages
    192
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 192
    Points : 198
    Points
    198
    Par défaut
    Salut,

    Si je comprends bien le but du programme, c'est de pouvoir déconnecter l'utilisateur après un certain temps et aussi de lui afficher le temps de connexion.

    À mon avis Squid pourrait faire ça, bien que ça fasse un moment que je n'ai pas touché ce soft, mais il est possible de forcer chaque utilisateur à rentrer un mot de passe pour se connecter (squid est un proxy, toutes les connexions http passent par lui, une fois le système configuré convenablement).

    Pour faire en sorte que l'utilisateur ne puisse pas tuer le programme il faut scinder ton programme en deux partie, une partie serveur lancée par l'utilisateur root car root n'a pas accès au bureau par défaut, et une partie cliente qui sera lancé par l'utiliateur et servira à afficher la fenêtre. la partie serveur servirait alors au calcul du temps de connexion et de ce dont tu as besoin.

    Cordialement,

    mathias

  13. #13
    Membre confirmé Avatar de yjuliet
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Août 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 362
    Points : 460
    Points
    460
    Par défaut
    Effectivement SQUID fait ceci très bien, mais il te faudra gérer la durée de connexion de manière séparée.

  14. #14
    Membre à l'essai
    Inscrit en
    Décembre 2004
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 36
    Points : 24
    Points
    24
    Par défaut
    Aie et y aurait pas moyen alors de le lancer au démarrage comme un prog utilisateur mais qu'un autre programme tourne en tache de fond et vérifie qu'il est bien lancé et si ce n'est pas le cas qu'il le relance ?

    Si oui comment ?

  15. #15
    Membre habitué
    Inscrit en
    Février 2005
    Messages
    192
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 192
    Points : 198
    Points
    198
    Par défaut
    Ce serait le rôle de l'applis serveur de vérifier que le client fonctionne.

    Pour lancer un processus en bash avec un utilisateur différent, il suffit d'utiliser "su" (conf "man su" pour de plus amples informations).

    Mais il faudrait voir du coté de java, vu que j'ai cru comprendre que tu programmais en java ton bidule...

  16. #16
    Membre à l'essai
    Inscrit en
    Décembre 2004
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 36
    Points : 24
    Points
    24
    Par défaut
    En fait sur le serveur il n'y a que la base de données. Le programme, qui m'a été confié, n'a pas été prévu pour fonctionner en vrai client/serveur.

  17. #17
    Membre confirmé Avatar de yjuliet
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Août 2006
    Messages
    362
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2006
    Messages : 362
    Points : 460
    Points
    460
    Par défaut
    quelquechose t'empêche-t-il de compartimenter le programme en une partie sans interface graphique qui gère la connexion au serveur (à la base de données, donc), lancée au démarrage, et une partie visible de l'utilisateur, avec l'interface graphique qui utilise la partie non graphique pour accéder au serveur, ...

  18. #18
    Membre à l'essai
    Inscrit en
    Décembre 2004
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 36
    Points : 24
    Points
    24
    Par défaut
    Euh ? Le temps ? :p

  19. #19
    Membre habitué
    Inscrit en
    Février 2005
    Messages
    192
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 192
    Points : 198
    Points
    198
    Par défaut
    De toute façon pour que ton programme soit intuable par l'utilisateur, il faut qu'une partie de ce programme tourne avec des droits différents, et sans fenêtre, car une fenêtre, même lancée par root, l'utilisateur a le droit de la fermer.

    Sachant cela, à toi de voir si tu prends le temps ou non de compartimenter ton programme, si tu ne le fais pas, tu n'araus pas le résultats escompté.

    Si tu veux tester tu peux regarder dans le ssh howto, si je me rappelle bien il explique qu'en recopiant le .Xauthority de ton utilisateur dans le répertoire /root l'utilisateur root peut lancer des programmes fenêtrés, seulement l'utilisateur ayant la souris en main peut intéragir avec ce programme, et donc le fermer.

    Ce n'est pas pour le sport que bon nombre de programmes sont conçu autour de l'architecture client/serveur, mais bien parce que cela présente une utilité.

    Cordialement,
    mathias

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/12/2010, 19h09
  2. Réponses: 10
    Dernier message: 19/05/2004, 16h44
  3. Comment rendre invisible un TTabbedNotebook.Pages ?
    Par Chonchon dans le forum Composants VCL
    Réponses: 2
    Dernier message: 14/04/2004, 21h14
  4. comment rendre invisible une FormStyle->fsMDIchild
    Par caluloa dans le forum C++Builder
    Réponses: 5
    Dernier message: 16/05/2003, 15h21
  5. Comment rendre transparent le tour d un icone
    Par NeoRonin dans le forum Composants VCL
    Réponses: 7
    Dernier message: 03/03/2003, 02h40

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