|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Inscription : décembre 2004 Messages : 36 ![]() |
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. |
|
|
00
|
|
|
#2 |
![]() ![]() Michaël TodorovicIngénieur systèmes et réseaux Inscription : juillet 2003 Messages : 3 493 ![]() |
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
__________________
- Installation et configuration de Exchange 2010 new! - Installation d'Office Communications Server (OCS) 2007 R2 Standard - Présentation de Microsoft Online Services - Installation d'Active Directory sous Windows Server 2008 R2 - Mon blog sur Windows Server, Exchange, OCS et AD | Mes articles |
|
00
|
|
|
#3 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : décembre 2004 Messages : 36 ![]() |
Citation:
Citation:
1/ Je ne sais pas faire 2/ On m'a demandé de reprendre le développement de ce logiciel là |
||
|
|
00
|
|
|
#4 |
|
Candidat au titre de Membre du Club
![]() Inscription : décembre 2004 Messages : 36 ![]() |
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. |
|
|
00
|
|
|
#5 |
![]() Inscription : mars 2004 Messages : 1 298 ![]() |
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) |
|
|
00
|
|
|
#6 |
|
Candidat au titre de Membre du Club
![]() Inscription : décembre 2004 Messages : 36 ![]() |
C'est ce que j'ai fait mais ça ne change rien
|
|
|
00
|
|
|
#7 |
|
Candidat au titre de Membre du Club
![]() Inscription : décembre 2004 Messages : 36 ![]() |
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 ?
|
|
|
00
|
|
|
#8 |
|
Expert Confirmé
![]() Inscription : mars 2004 Messages : 3 109 ![]() |
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... |
|
|
00
|
|
|
#9 | ||
|
Candidat au titre de Membre du Club
![]() Inscription : décembre 2004 Messages : 36 ![]() |
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 :
|
||
|
|
00
|
|
|
#10 | |
|
Candidat au titre de Membre du Club
![]() Inscription : décembre 2004 Messages : 36 ![]() |
Citation:
|
|
|
|
00
|
|
|
#11 |
|
Membre éprouvé
![]() Yvan Consultant informatique Inscription : août 2006 Messages : 360 ![]() |
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) |
|
|
00
|
|
|
#12 |
|
Membre habitué
![]() Inscription : février 2005 Messages : 186 ![]() |
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 |
|
|
00
|
|
|
#13 |
|
Membre éprouvé
![]() Yvan Consultant informatique Inscription : août 2006 Messages : 360 ![]() |
Effectivement SQUID fait ceci très bien, mais il te faudra gérer la durée de connexion de manière séparée.
|
|
|
00
|
|
|
#14 |
|
Candidat au titre de Membre du Club
![]() Inscription : décembre 2004 Messages : 36 ![]() |
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 ? |
|
|
00
|
|
|
#15 |
|
Membre habitué
![]() Inscription : février 2005 Messages : 186 ![]() |
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... |
|
|
00
|
|
|
#16 |
|
Candidat au titre de Membre du Club
![]() Inscription : décembre 2004 Messages : 36 ![]() |
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.
|
|
|
00
|
|
|
#17 |
|
Membre éprouvé
![]() Yvan Consultant informatique Inscription : août 2006 Messages : 360 ![]() |
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, ...
|
|
|
00
|
|
|
#18 |
|
Candidat au titre de Membre du Club
![]() Inscription : décembre 2004 Messages : 36 ![]() |
Euh ? Le temps ? :p
|
|
|
00
|
|
|
#19 |
|
Membre habitué
![]() Inscription : février 2005 Messages : 186 ![]() |
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 |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com