Précédent   Forum des professionnels en informatique > Systèmes > Linux > Système
Système Vos questions autour de l'administration système
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/09/2006, 16h25   #1
Candidat au titre de Membre du Club
 
Inscription : décembre 2004
Messages : 36
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 36
Points : 10
Points : 10
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.
touff5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/09/2006, 16h55   #2
Rédacteur/Modérateur
 
Avatar de Michaël
 
Michaël Todorovic
Ingénieur systèmes et réseaux
Inscription : juillet 2003
Messages : 3 493
Détails du profil
Informations personnelles :
Nom : Michaël Todorovic
Âge : 25
Localisation : France, Paris (Île de France)

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

Informations forums :
Inscription : juillet 2003
Messages : 3 493
Points : 5 899
Points : 5 899
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
Michaël est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2006, 13h46   #3
Candidat au titre de Membre du Club
 
Inscription : décembre 2004
Messages : 36
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 36
Points : 10
Points : 10
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à
touff5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2006, 14h48   #4
Candidat au titre de Membre du Club
 
Inscription : décembre 2004
Messages : 36
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 36
Points : 10
Points : 10
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.
touff5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2006, 15h19   #5
Rédacteur
 
Inscription : mars 2004
Messages : 1 298
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 1 298
Points : 1 450
Points : 1 450
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/ )
MarcG est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2006, 15h42   #6
Candidat au titre de Membre du Club
 
Inscription : décembre 2004
Messages : 36
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 36
Points : 10
Points : 10
C'est ce que j'ai fait mais ça ne change rien
touff5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2006, 15h53   #7
Candidat au titre de Membre du Club
 
Inscription : décembre 2004
Messages : 36
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 36
Points : 10
Points : 10
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 ?
touff5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2006, 16h52   #8
Expert Confirmé
 
Avatar de Katyucha
 
Inscription : mars 2004
Messages : 3 109
Détails du profil
Informations personnelles :
Âge : 31
Localisation : Allemagne

Informations forums :
Inscription : mars 2004
Messages : 3 109
Points : 3 313
Points : 3 313
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?
__________________
Ancien Rédacteur Linux && Unix / Nouveau retraité de DVP
The UNIX way of sex:
gunzip;strip;touch;finger;mount;fsck;more;yes;umount;sleep

Je ne réponds ni aux messages privées, ni aux messages plein de fautes...
Katyucha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2006, 16h55   #9
Candidat au titre de Membre du Club
 
Inscription : décembre 2004
Messages : 36
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 36
Points : 10
Points : 10
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 :
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
touff5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2006, 16h56   #10
Candidat au titre de Membre du Club
 
Inscription : décembre 2004
Messages : 36
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 36
Points : 10
Points : 10
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.
touff5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2006, 17h24   #11
Membre éprouvé
 
Avatar de yjuliet
 
Homme Yvan
Consultant informatique
Inscription : août 2006
Messages : 360
Détails du profil
Informations personnelles :
Nom : Homme Yvan
Âge : 32
Localisation : France

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

Informations forums :
Inscription : août 2006
Messages : 360
Points : 402
Points : 402
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)
yjuliet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2006, 17h31   #12
Membre habitué
 
Inscription : février 2005
Messages : 186
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 186
Points : 149
Points : 149
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
novices est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2006, 17h40   #13
Membre éprouvé
 
Avatar de yjuliet
 
Homme Yvan
Consultant informatique
Inscription : août 2006
Messages : 360
Détails du profil
Informations personnelles :
Nom : Homme Yvan
Âge : 32
Localisation : France

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

Informations forums :
Inscription : août 2006
Messages : 360
Points : 402
Points : 402
Effectivement SQUID fait ceci très bien, mais il te faudra gérer la durée de connexion de manière séparée.
yjuliet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2006, 17h51   #14
Candidat au titre de Membre du Club
 
Inscription : décembre 2004
Messages : 36
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 36
Points : 10
Points : 10
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 ?
touff5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2006, 19h51   #15
Membre habitué
 
Inscription : février 2005
Messages : 186
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 186
Points : 149
Points : 149
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...
novices est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/09/2006, 20h06   #16
Candidat au titre de Membre du Club
 
Inscription : décembre 2004
Messages : 36
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 36
Points : 10
Points : 10
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.
touff5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2006, 12h12   #17
Membre éprouvé
 
Avatar de yjuliet
 
Homme Yvan
Consultant informatique
Inscription : août 2006
Messages : 360
Détails du profil
Informations personnelles :
Nom : Homme Yvan
Âge : 32
Localisation : France

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

Informations forums :
Inscription : août 2006
Messages : 360
Points : 402
Points : 402
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, ...
yjuliet est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2006, 14h57   #18
Candidat au titre de Membre du Club
 
Inscription : décembre 2004
Messages : 36
Détails du profil
Informations forums :
Inscription : décembre 2004
Messages : 36
Points : 10
Points : 10
Euh ? Le temps ? :p
touff5 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/09/2006, 17h58   #19
Membre habitué
 
Inscription : février 2005
Messages : 186
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 186
Points : 149
Points : 149
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
novices est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h09.


 
 
 
 
Partenaires

Hébergement Web