Réalisation de la partie serveur du système de gestion à distance basé sur Linux
Résumé
Ce sujet est basé sur le système d'exploitation Linux, et l'objectif principal est de rendre le travail de gestion à distance des administrateurs système plus pratique, simple et convivial. Les principales fonctions réalisées sont l'exploitation des fichiers, l'exploitation des commandes, l'exploitation du système, l'exploitation des processus et l'exploitation du réseau, qui couvrent essentiellement tous les aspects de la gestion du système. Dans la conception, la structure B/S est adoptée, de sorte que le système puisse être facilement mis à niveau et que les utilisateurs puissent accéder au serveur à partir de différentes plates-formes ; la technologie d'accès de sécurité est adoptée pour rendre l'accès et la gestion plus sécurisés ; le simple et beau Le avancé la technologie d'affichage de l'interface rend la navigation de l'utilisateur rapide et confortable.
Le système développé par cette rubrique doit être installé et exécuté sur le système Linux. L'administrateur système peut se connecter à distance à l'aide d'un navigateur. Après avoir passé la vérification, il est pratique d'afficher l'état de fonctionnement du système, de gérer le système et configurer le réseau. , pour analyser les données, il convient de noter que l'autorité racine et le mot de passe du serveur distant doivent être utilisés pour se connecter au système, et afin d'assurer la sécurité du système et d'éviter les accidents, l'administrateur ne peut effectuer que des tâches spécifiques. L'importance principale de ce sujet est que PHP peut être utilisé pour la gestion du système, et le système développé peut permettre aux administrateurs système de gérer facilement les systèmes distants.
Mots clés : télégestion ; structure B/S ; accès sécurisé ; Linux ; PHP
1.2 Statut de la recherche au pays et à l'étranger
1.3 Importance de cette recherche
1.4 Méthode de recherche de ce sujet
2.1.1 Objectifs de développement
2.1.3 Environnement de développement
2.1.5 Environnement d'exploitation
2.1.6 Restrictions conditionnelles
4.2 Module d'opération de fichier
4.3 Module d'opération de commande
4.4 Module de commande de processus
4.5 Module d'exploitation du système
4.6 Module d'exploitation réseau
5.2 Module d'opération sur les fichiers
5.3 Module d'opération de commande
5.4 Module de fonctionnement du processus
5.5 Module d'exploitation du système
1introduction
1.1 Contexte du sujet
La gestion à distance est une technologie dans laquelle un ordinateur (l'ordinateur distant/client principal) contrôle à distance un autre ordinateur (l'hôte/serveur contrôlé) sur le réseau. La télécommande ici n'est pas littéralement une longue distance. Elle fait référence au contrôle de l'ordinateur distant via le réseau, mais la plupart du temps, ce que nous appelons la télécommande fait souvent référence à la télécommande du réseau local. Lorsque l'opérateur utilise l'ordinateur hôte pour contrôler l'ordinateur contrôlé, c'est comme s'il était assis devant l'écran de l'ordinateur contrôlé et peut démarrer le programme d'application de l'ordinateur contrôlé, utiliser les fichiers et les matériaux de l'ordinateur contrôlé, et même Utilisez le périphérique d'impression externe (imprimante) et le périphérique de communication (modem ou ligne louée, etc.) de l'ordinateur contrôlé pour imprimer et accéder à Internet, tout comme vous utilisez la télécommande pour contrôler le volume du téléviseur, changer de chaîne ou allumez le téléviseur. Cependant, il existe un concept qui doit être clarifié, à savoir que l'ordinateur hôte ne transmet que les commandes du clavier et de la souris à l'ordinateur distant et renvoie en même temps l'image de l'écran de l'ordinateur contrôlé via la ligne de communication. C'est-à-dire qu'il semble que notre contrôle de l'ordinateur contrôlé s'effectue sur l'ordinateur devant nous, mais il est en réalité réalisé sur l'ordinateur distant. Que ce soit l'ouverture de fichiers, la navigation sur Internet, le téléchargement, etc. sont tous stockés. dans l'ordinateur télécommandé dans l'ordinateur terminal.
Pour les administrateurs système qui découvrent Linux, il est tout simplement impossible de terminer correctement et efficacement diverses configurations système clés. Même un administrateur Linux expérimenté a souvent du mal avec le format de certains fichiers de configuration complexes. Par conséquent, avoir un outil de gestion d'interface graphique sous Linux a toujours été un souhait de la majorité des amateurs d'Unix. Bien que Linux dispose de son propre outil de gestion à distance de l'interface de caractères SSH, il reste un peu maladroit et ennuyeux pour les difficultés entraînées par la mise à niveau continue de SSH, l'interface graphique conviviale et la facilité d'utilisation de la structure B/S. La méthode de gestion Web permet à ce logiciel d'avoir à la fois la capacité de gestion locale et à distance, le contrôle d'accès et la prise en charge SSL offrent une sécurité adéquate pour la gestion à distance. Nous écrivons donc ce logiciel pour gérer mieux et plus facilement les systèmes Linux distants, réduisant ainsi la charge des administrateurs système.
1.2 Statut de recherche au pays et à l'étranger
À en juger par la littérature et les ressources du réseau, il existe des logiciels similaires à l'étranger, tels que Webmin et PHPWebmin.
Ces logiciels sont tous en anglais, et il n'existe quasiment pas de version chinoise, beaucoup d'administrateurs système domestiques n'y sont pas habitués, et certains logiciels sont écrits en langage Perl, ce qui n'est pas satisfaisant en termes d'efficacité et d'étendue d'utilisation.
1.3 Importance de cette recherche
Pour les administrateurs système, la gestion de l'ensemble du système est un travail très compliqué et fastidieux, en particulier la gestion à distance des serveurs est très importante pour les administrateurs système. Le développement de ce logiciel est de faciliter à l'administrateur système la gestion des serveurs locaux et distants installés avec le système Linux , d'augmenter la commodité de la gestion et d'utiliser la structure B/S pour réduire la charge de travail de l'administrateur d'autre part. . Après s'être connectés à distance avec un navigateur, les administrateurs peuvent facilement vérifier l'état de fonctionnement du serveur, configurer les services réseau, analyser certaines données et réagir rapidement aux phénomènes anormaux.
L'un des défis du passage de la gestion d'un environnement Windows à la gestion d'un environnement Linux est que vous devez apprendre à tirer parti des nouveaux outils. En tant qu'administrateur, vous souhaitez comprendre les détails du système d'exploitation afin d'en tirer le meilleur parti. Cependant, lorsque vous êtes encore en phase d'apprentissage, vous devez effectuer un travail spécifique. Afin d'accélérer votre progression dans la maîtrise de Linux, nous installons un tel programme de gestion à distance, très pratique pour les administrateurs système.
1.4 Méthode de recherche de ce sujet
Le développement de ce système nécessite l'utilisation de la structure B/S, simulant Webmin pour la conception et le développement. Par conséquent, ce projet de fin d'études doit d'abord analyser les fonctions pertinentes de Webmin et rédiger une analyse de la demande en combinaison avec les exigences pertinentes de ce projet de fin d'études ; deuxièmement, utiliser de manière exhaustive les connaissances pertinentes acquises auparavant pour sélectionner des outils de développement familiers pour développer ce projet de fin d'études ; Dans la conception, sur la base de l'analyse des besoins, rédiger le plan de développement du système, le processus de mise en œuvre et les méthodes de mise en œuvre des problèmes connexes ; en même temps, dans la conception et la mise en œuvre du développement, il est nécessaire de sauvegarder les documents de conception pertinents pour préparer la rédaction de la thèse de fin d'études plus tard Matériaux; Enfin, une fois le développement du système terminé, déboguer et tester, enregistrer les enregistrements pertinents de débogage et de test, et préparer le matériel pour la rédaction de la thèse de fin d'études plus tard.
Les principales méthodes sont : d'abord, n'écrivez que la partie opération du fichier pour comprendre la méthode de travail et l'apparence générale du système, puis ajoutez progressivement d'autres fonctions et modules, et enfin modifiez l'ensemble du système pour compléter le système.
2 analyse des besoins
2.1 Aperçu des tâches
1. Pouvoir se connecter à l'hôte distant en toute sécurité et effectuer une interaction sécurisée pendant le processus de gestion.
2. Il peut gérer le système de fichiers de l'hôte distant et peut afficher des fichiers ou des dossiers,
Créer, supprimer, déplacer, télécharger, etc.
3. Capable d'envoyer des commandes à l'hôte distant pour interprétation et exécution et de renvoyer les résultats de l'exécution. 4. Être en mesure d'afficher et de gérer les processus en cours d'exécution de l'hôte distant.
5. Capable de gérer le système hôte distant, vous pouvez afficher les informations système, arrêter ou redémarrer, modifier
mots de passe, gérer les utilisateurs et les groupes, gérer les packages logiciels, etc.
6. Être capable de gérer les services réseau des hôtes distants, gérer les serveurs Apache, gérer
Gérer le serveur DNS, gérer le serveur MySQL, gérer le serveur SSH et gérer DHCP
Serveur, afficher les paramètres réseau, configurer les paramètres réseau et d'autres opérations.
7. Rendre la gestion à distance plus humaine, plus simple, plus pratique et plus conviviale.
8. Rendez le logiciel facile à mettre à niveau, à modifier, à développer et à utiliser.
outils de développement
Le langage de développement utilise principalement PHP et HTML, et SHELL ou C est utilisé là où PHP ne peut pas résoudre le problème.
environnement de développement
Système d'exploitation : Fedora Core 5
Référence PHP : PHP 5.1
Serveur Web : APACHE2
Navigateur : Mozilla firefox 2.0
Développeur
Sun Zexi est principalement responsable du développement côté serveur.
Xu Bin est principalement responsable du développement du client.
environnement d'exploitation
Le logiciel s'exécute sur un hôte distant avec le système d'exploitation Linux et le serveur Apache installés. Avant d'exécuter, vous devez démarrer le serveur Apache et effectuer certains réglages.
Conditions
La connexion au système doit être connectée avec l'autorité racine et le mot de passe du serveur distant, et afin d'assurer la sécurité du système et d'éviter les événements inattendus, l'administrateur ne peut exécuter que des tâches spécifiques. Si le système est installé dans d'autres systèmes d'exploitation, tels que le système d'exploitation Windows, certains modules peuvent ne pas fonctionner ou ne pas fonctionner correctement.
2.2 Analyse fonctionnelle
Selon les exigences et les objectifs de ce projet, on peut apprendre que le système a principalement les fonctions suivantes :
1. Accès sécurisé
L'accès sécurisé fait référence à l'utilisation du protocole HTTPS et du socket SSL pour se connecter à l'hôte distant lors de la connexion. Le nom d'utilisateur et le mot de passe ne peuvent pas être détectés par des pirates ou des attaquants malveillants, et la technologie d'accès sécurisé doit également être adoptée pendant le processus de gestion pour prévenir la perte, l'interception ou l'attaque de données importantes.
2. Opération de fichier
Les opérations sur les fichiers gèrent principalement le système de fichiers, notamment l'affichage des informations sur les fichiers ou les répertoires, la création de nouveaux fichiers ou répertoires, la suppression de fichiers ou de répertoires, la copie de fichiers ou de répertoires, l'exécution de fichiers, le téléchargement de fichiers, le téléchargement de fichiers, etc.
3. Opération de commande
L'opération de commande consiste à envoyer des commandes à l'hôte distant, le serveur interprète et exécute diverses commandes SHELL et envoie les résultats exécutés à l'hôte distant pour affichage.
4. Opération de processus
L'opération de processus consiste à gérer le processus en cours d'exécution de l'hôte distant, notamment l'affichage ou l'arrêt du processus en cours d'exécution, l' affichage de la liste des services ouverts (numéro de port), la gestion du service ouvert, l'affichage de tous les processus en cours d'exécution du système actuel et la possibilité d'effectuer des opérations sur le processus .
5. Fonctionnement du système
Le fonctionnement du système est la gestion système du système Linux de l'hôte distant, comprenant principalement l'arrêt ou le redémarrage, la modification des mots de passe, l'affichage des informations système, la gestion des utilisateurs et des groupes et la gestion des progiciels.
6. Fonctionnement du réseau
Le fonctionnement du réseau est la gestion des services réseau des hôtes distants, notamment la gestion du serveur Apache, la gestion du serveur DNS, la gestion du serveur MySQL, la gestion du serveur SSH, la gestion du serveur DHCP, l'affichage des paramètres réseau et la configuration des paramètres réseau.
2.3 Flux de travail
Selon les objectifs de conception et les exigences du système, on peut déterminer que le flux de travail du système est divisé en trois parties en général : processus d'authentification, processus de gestion et processus de déconnexion.
Le flux de travail de l'ensemble du système est illustré à la figure 1 :
Figure 1 flux de travail
1. Processus d'authentification
L'administrateur se connecte au système de gestion à distance via un navigateur et entre le nom d'utilisateur et le mot de passe du système. Si le nom d'utilisateur ou le mot de passe est incorrect, un message d'erreur s'affiche et une invite à le saisir à nouveau s'affiche. s'il est correct, il entrera dans le système de gestion, obtiendra certaines autorisations et gérera les services du système. . Le processus d'authentification doit être effectué dans une situation sécurisée et ne peut pas être transmis en clair.
2. Processus de gestion
Lorsque l'utilisateur entre correctement dans le système, il peut gérer le système, cliquer sur un module de gestion, configurer un certain service, le système envoie des commandes au serveur Web via le réseau et interagit avec le serveur. Le serveur obtient les commandes via l'analyse du moteur PHP, appelle le script correspondant et l'exécute. , récupère le résultat sur le navigateur de l'hôte distant.
3. Processus d'annulation
Une fois que l'administrateur a terminé la mise à jour ou la gestion de l'hôte distant, il peut cliquer sur déconnexion pour quitter le système de gestion à distance. Le système envoie une commande de déconnexion au serveur, et le serveur fait perdre à l'utilisateur connecté l'autorité de gestion, coupe la connexion entre l'utilisateur et le serveur, et revient à la page de connexion du système de gestion.
2.4 Analyse des performances
Selon les exigences et les objectifs de ce sujet, et la situation technique actuelle, il peut être déterminé que le système doit atteindre
à la cible suivante :
1. Le système peut gérer plusieurs utilisateurs se connectant au serveur en même temps sans aucun problème (disons 100).
2. Le système peut renvoyer le résultat de l'exécution à temps et peut demander lorsque la commande ne peut pas être exécutée correctement.
3. Le système doit être en mesure d'identifier correctement les fermetures anormales de la page et de se déconnecter automatiquement du client distant.
4. Le système doit empêcher l'accès aux fichiers individuels, quel que soit le type de fichiers auquel vous souhaitez accéder, vous devez passer par la page principale.
5. Pour l'anomalie qui se produit pendant l'exécution du système, le programme peut correctement identifier et afficher les informations pertinentes pour l'invite.
6. Le programme doit empêcher l'exécution de commandes incorrectes ou illégales et empêcher l'ensemble du système de planter ou de déconnecter la connexion ou de planter le serveur distant en raison de l'exécution d'une certaine commande pendant l'exécution du programme.
3 conception globale
3.1 Architecture du système
Étant donné que le système adopte le mode B/S et effectue une gestion à distance, l'ensemble du système peut être divisé en cinq modules, à savoir client, Internet, système d'exploitation Linux, serveur Apache et interpréteur PHP.
Le client est un navigateur et le client peut utiliser à distance le navigateur pour se connecter au serveur afin de gérer le système Linux distant.
L'Internet est le support reliant le serveur et le client, et est utilisé pour transmettre des commandes et des données.
Le système d'exploitation Linux s'exécute sur le serveur distant pour gérer l'ensemble du système, et les programmes développés s'exécutent également sur le système d'exploitation Linux.
Le serveur Apache est utilisé par le serveur Web pour transmettre des pages Web, et appelle le moteur PHP pour interpréter et exécuter le script PHP, et transmet le résultat au navigateur distant.
L'interpréteur PHP permet d'interpréter et d'exécuter des scripts PHP.L'interpréteur PHP interprète différents scripts selon différents paramètres d'appel d'Apache, et retourne le fichier html obtenu après exécution au serveur Apache.
Le cadre du système peut être représenté par la figure 2 :
Figure 2 Architecture du système
3.2 Division des modules
Selon l'analyse des exigences et l'architecture du système précédentes, le système peut être divisé en six modules, comme illustré à la figure 3.
Illustration 3 Modules système
- Module d'accès sécurisé
Il est principalement responsable de l'accès sécurisé du client au serveur, en utilisant principalement la technologie de contrôle d'accès et la technologie de cryptage. La technologie de contrôle d'accès est adoptée dans le système de fichiers côté serveur et la technologie de cryptage est utilisée dans le processus de transmission entre le côté serveur et le côté client.
- module d'opération de fichier
Il est principalement responsable de l'exploitation du système de fichiers du système d'exploitation Linux distant, qui est à la base de l'exploitation de l'hôte distant. Lors de l'exécution d'opérations sur les fichiers pour la première fois, l'interface affiche le répertoire où se trouve le fichier de script système et les attributs du fichier, puis affiche les boutons de commande qui peuvent être utilisés, et il y a des zones de texte et des commandes pour convertir les répertoires à le haut de l'interface. Utilisez principalement le cookie de PHP pour passer des commandes, et en termes d'opérations spécifiques, utilisez principalement la fonction d'E/S de fichier de PHP pour y parvenir. En termes d'affichage, une classe de format est écrite et la fonction correspondante de cette classe peut être appelée pour formater ou afficher des données .
- module d'opération de commande
Il est principalement responsable de l'interprétation et de l'exécution de la commande SHELL envoyée par le client et du retour du résultat à temps. Lorsque vous faites ce module, vous devez faire attention à la rapidité du retour du résultat et à l'invite correcte de la mauvaise commande. Utilisez principalement la méthode POST de HTML pour transmettre des commandes au serveur, puis utilisez les fonctions système de PHP system, exec et passthru pour exécuter les commandes correspondantes et transmettre les résultats d'exécution au navigateur.
- Module d'exploitation de processus
Il est principalement responsable de l'affichage des processus du système d'exploitation Linux distant et peut exploiter chaque processus, comme tuer un certain processus. Utilisez principalement la fonction système pour exécuter la commande SHELL ps et grep pour obtenir la liste des processus, et affichez-la dans un tableau côté navigateur, et utilisez la fonction posix_kill pour tuer un certain processus.
- Module d'exploitation du système
Il est principalement responsable du fonctionnement de la gestion système principale de Linux et peut utiliser ces opérations système pour effectuer une gestion système simple sur le système Linux distant. L'idée générale est d'utiliser le tableau _POST de PHP pour obtenir la commande transmise correspondante, puis d'utiliser la fonction système de PHP pour exécuter la commande SHELL correspondante et de transmettre le résultat au serveur.
- Module d'exploitation du réseau
Il gère et configure principalement le réseau du système Linux distant simplement. L'idée générale de l'implémentation est de modifier les droits d'accès de certains fichiers liés à la gestion du réseau côté serveur afin qu'Apache puisse accéder et modifier ces fichiers, utiliser le tableau _POST de PHP pour obtenir les commandes de fonctionnement du réseau transmises correspondantes, puis utiliser PHP La fonction système exécute la commande SHELL correspondante et transmet le résultat au serveur.
4 réalisation spécifique
4.1 Module d'accès sécurisé
L'accès sécurisé est principalement obtenu via des fichiers de contrôle d'accès natifs et une authentification par script PHP.
1. Fichier de contrôle d'accès à l'hôte
Dans l'hôte distant, le serveur apache doit être démarré et l'option de contrôle d'accès du répertoire auquel accéder doit être ajoutée dans le fichier de configuration apache. Créez ensuite les fichiers de contrôle d'accès .htaccess et .remoteadminpasswd dans le répertoire auquel accéder. Le fichier .htaccess définit le chemin d'accès aux fichiers de nom d'utilisateur et de mot de passe et à d'autres options de contrôle. Le fichier .remoteadminpasswd contient des noms d'utilisateur et des mots de passe cryptés.
Apache est configuré pour la protection des répertoires et l'authentification de base, mais une certaine configuration du serveur est requise pour élever les privilèges des utilisateurs.
- Vérifiez le fichier httpd.conf pour trouver le champ Utilisateur et vérifiez l'utilisateur de démarrage d'Apache (la valeur par défaut est apache) ;
- Modifiez le fichier /etc/passwd, recherchez la ligne utilisateur apache et modifiez son shell (par défaut, /bin/nologin ou /bin/false) en /bin/bash ;
- Modifiez le fichier /etc/sudoers et ajoutez apache ALL=NOPASSWORD:ALL à la ligne suivante du champ racine ALL=(ALL)ALL dans le fichier, afin que l'utilisateur apache puisse exécuter toutes les commandes via la commande sudo.
Après cette configuration, l'utilisateur apache ne peut obtenir les privilèges root qu'en utilisant la commande sudo.
Afin d'assurer la sécurité du système, le contrôle d'accès est effectué sur le répertoire du serveur Web Apache ici, en utilisant le fichier d'accès .htaccess et le programme htpasswd pour établir une ACL pour un répertoire afin d'authentifier les utilisateurs et de définir la connexion SSL dans le fichier .htaccess, parfaite sécurité.
Supposons que PHPWebmin se trouve dans le répertoire /var/www/phpwebmin.
1) Configurer httpd.Conf
Ouvrez le fichier de configuration Apache httpd.Conf (sous le répertoire /etc/httpd/conf/ par défaut) avec l'éditeur vi, recherchez le champ <Directory "/var/www"> et ajoutez-le ou modifiez-le dans les paramètres d'attribut suivants
AllowOverride ALL //Ce paramètre définit les répertoires protégés par .ltaccess ;
2) Créer une ACL pour le répertoire protégé
Entrez dans le répertoire phpwebmin, cd /var/www/phpwebmin, créez un fichier caché dans ce répertoire.htaccess (vous devez ajouter un point avant le fichier htaccess, si vous ne le faites pas, vous ne pouvez pas créer d'ACL, car le point signifie créer un fichier caché ) vi .htaccess, entrez le code suivant dans le fichier .htaccess :
SSLRequireSSL //Utiliser une connexion sécurisée SSL
AuthName "PHP Webmin" //Nom d'authentification
Type d'authentification de base
require valid-user //Autoriser tous les utilisateurs du fichier de mots de passe à accéder
AuthUserFile /var/www/phpwebmin/.phpwebminpasswd //fichier de données d'identité ;
3) Créer une base de données d'authentification des utilisateurs
Entrez le mot de passe suivant sur la ligne de commande pour créer le fichier de base de données d'authentification des utilisateurs, il vous sera demandé de créer un mot de passe pour l'utilisateur admin :
htpasswd -c /var/www/phpwebmin/.phpwebminpasswd administrateur
Nouveau mot de passe:
Re-taper le nouveau mot de passe:
Le contenu du fichier .phpweminpasswd créé est similaire à :
admin:Op96DPmXTKy5w //Nom d'utilisateur : mot de passe crypté MD5
Si le système n'a pas installé htpasswd, vous pouvez également générer un nom d'utilisateur et un mot de passe en ligne et les mettre dans le fichier .phpwebminpasswd.
De cette manière, une base de données de comptes d'utilisateurs a été établie pour le serveur Apache, une protection de répertoire a été implémentée pour le répertoire phpwebmin et une authentification utilisateur de base a été implémentée. Il est nécessaire d'utiliser une connexion sécurisée https://localhost/phpwebmin/ à accéder, et une fenêtre contextuelle apparaîtra pendant le processus d'accès. Boîte de dialogue de validation.
2. Authentification des scripts PHP
Utilisez le tableau _GET pour déterminer s'il faut se connecter ou se déconnecter. S'il est connecté, vérifiez si le mot de passe est correct. S'il est correct, entrez dans l'interface de gestion et définissez un cookie sur le client pour enregistrer les informations de connexion. Sinon , un message d'erreur correspondant s'affichera. Le processus de vérification est illustré à la figure 4 :
Figure 4 Processus de vérification d'identité
Le code principal d'authentification est le suivant :
si ($_GET['action'] == "déconnexion")
{
setcookie("adminpass", "");
echo"<meta http-equiv=\"refresh\" ontent=\"3;URL=".$self."\">" ;
echo "<span style=\"taille de la police : 12 px ; famille de polices : Verdana\">注
Épingler avec succès......<p><a href=\"".$self."\">Quitter automatiquement après trois secondes ou cliquer ici pour quitter l'interface du programme >>></a></span> " ;
ob_end_flush();
sortie;
}
si ($_POST['do'] == 'connexion')
{
$thepass=trim($_POST['adminpass']);
if($admin['pass'] == $thepass)
{
setcookie("adminpass", $thepass, time() + (1 * 24 * 3600));
echo "<meta http-equiv=
\"actualiser\" content=\"3;URL=".$url."\">" ;
echo "<span style=\"font-size : 12px ; font-family : Verdana\">Connexion réussie......<p><a href=\"".$url."\">Trois secondes Sautez automatiquement après cela ou cliquez ici pour accéder à l'interface du programme >>></a></span>" ;
sortie;
}
autre
{
echo "Erreur de mot de passe, veuillez le saisir à nouveau</br>" ;
}
}
if(isset($_COOKIE['adminpass']))
{
si ($_COOKIE['adminpass'] != $admin['pass'])
{
page de connexion();
}
autre
{
page de connexion();
}
}
4.2 Module d'opération de fichier
Il existe de nombreux types d'opérations sur les fichiers, notamment l'affichage des informations sur les fichiers ou les répertoires, la création d'un nouveau fichier ou répertoire, la suppression d'un fichier ou d'un répertoire, la copie d'un fichier ou d'un répertoire, l'exécution d'un fichier, le téléchargement d'un fichier et le téléchargement d'un fichier.
Le fonctionnement du fichier est le même que celui de l'exploitation du fichier en local, mais la forme est différente.Lorsque l'utilisateur sélectionne un ou une partie du fichier, il peut cliquer sur le bouton de commande correspondant pour générer l'action correspondante. Utilisez principalement le cookie de PHP pour passer des commandes, et en termes d'opérations spécifiques, utilisez principalement la fonction d'E/S de fichier de PHP pour y parvenir. En termes d'affichage, une classe de format est écrite et la fonction correspondante de cette classe peut être appelée pour formater ou afficher des données .
Le processus d'opération de fichier est illustré à la figure 5 :
Figure 5 processus d'opération de fichier
Le code principal pour éditer des fichiers et renommer des fichiers est le suivant :
// édite le fichier
si ($_POST['do'] == 'doeditfile')
{
si (!empty($_POST['editfilename']))
{
$filename="$editfilename" ;
@$fp=fopen("$nomfichier","w");
echo $msg=@fwrite($fp,$_POST['filecontent']) ?
"Écrire le fichier avec succès !" : "Échec de l'écriture !";
@fclose($fp);
}
autre
{
echo "Veuillez saisir le nom du fichier que vous souhaitez modifier !";
}
}
// Modifier les propriétés du fichier
elseif ($_POST['do'] == 'editfileperm')
{
si (!empty($_POST['fileperm']))
{
$fileperm=base_convert($_POST['fileperm'],8,10);
echo (@chmod($dir."/".$file,$fileperm)) ? "Attribut modifié avec succès !" : "Échec de la modification !";
echo "file".$file." La propriété modifiée est : ".substr(base_convert(@fileperms($dir."/".$file),10,8),
-4);
}
autre
{
echo "Veuillez saisir la propriété que vous souhaitez définir !" ;
}
}
4.3 Module d'opération de commande
L'opération de commande est l'interprétation et l'exécution de diverses commandes SHELL, qui sont principalement exécutées via des fonctions telles que le système et le relais de php. Les opérations de processus et les opérations système peuvent être effectuées dans ce module. Notez que le mode Web est utilisé et que les commandes shell interactives ne peuvent pas être exécutées. Dans la conception, utilisez un formulaire pour obtenir la variable commond, exécutez system("sudo $commond") après avoir soumis la fonction système et renvoyez le résultat.
Le flux d'opérations de commande est illustré à la figure 6
Figure 6 flux d'opérations de commande
Une partie du code est la suivante :
si (!empty($_POST['commande']))
{
si ($execfunc=="système")
{
system("sudo ".$_POST['commande']);
}
elseif ($execfunc=="passthru")
{
passthru("sudo ".$_POST['commande']);
}
elseif ($execfunc=="exec")
{
$result = exec("sudo ".$_POST['commande']);
echo $résultat ;
}
elseif ($execfunc=="shell_exec")
{
$result=shell_exec("sudo ".$_POST['commande']);
echo $résultat ;
}
elseif ($execfunc=="popen")
{
$pp = popen("sudo ".$_POST['commande'], 'r');
$lire = lire($pp, 2096);
echo $lire;
pclose($pp);
}
elseif ($execfunc=="wscript")
{
$wsh = new COM('W'.'Scr'.'ip'.'t.she'.'ll') ou
die("Échec de la création PHP COM WSHSHELL");
$exec = $wsh->exec
("cm"."de".."xe /c "."sudo ".$_POST['commande']."");
$stdout = $exec->StdOut();
$stroutput = $stdout->ReadAll();
echo $stroutput;
}
autre
{
system("sudo ".$_POST['commande']);
}
}
4.4 Module de commande de processus
Les opérations de processus incluent principalement l'affichage ou l'arrêt des processus en cours d'exécution, l'affichage de la liste des services activés, la gestion des services activés, l'affichage de tous les processus en cours d'exécution dans le système actuel et l'exécution d'opérations associées sur les processus. Ceci est principalement obtenu en exécutant ps - aux pour obtenir la liste des processus, puis en l'exprimant dans un tableau, et peut tuer chaque processus.
Le flux de fonctionnement du processus est illustré à la Figure 7 :
Figure 7 flux d'opérations de processus
Le code principal est le suivant :
si ($_GET['action'] == "processus")
{
if(!$win) {$handler = "ps -aux".($grep?"
| grep '".addslashes($grep)."'":"");}
sinon {$handler = "liste de tâches";}
$ret = myshellexec($handler);
if(!$ret) {echo "Impossible d'exécuter \"".$handler."\"!";}
autre
{
si(vide($processes_sort))
{$processes_sort = $sort_default;}
$parsesort = parsesort($processes_sort);
si (!is_numeric($parsesort[0])) {$parsesort[0] = 0;}
$k = $parsesort[0] ;
if($parsesort[1] != "a")
{
$y="<a href=\"".$surl."action=".$dspact."&d=".
urlencode($d)."&processes_sort=".$k."a\">
<img src=\"".$surl."action=img&img=
sort_desc\"height=\"9\"width=\"14\" order=\"0\"></a>" ;
}
autre
{
$y="<a href=\"".$surl."action=".$dspact."&d=".
urlencode($d)."&processes_sort=".$k."d\">
<img src=\"".$surl."action=img&img=
sort_asc\"height=\"9\" width=\"14\" border=\"0\"></a>" ;
}
$right = htmlspecialchars($right);
si (!$gagne)
{
si ($pid)
{
si (is_null($sig)) {$sig = 9;}
echo "Envoi du signal ".$sig." à #".$pid."... ";
if (posix_kill($pid,$sig)) {echo "OK.";}
sinon {echo "ERREUR.";}
}
}
}
}
4.5 Module d'exploitation du système
Les opérations du système comprennent principalement l'arrêt ou le redémarrage, la modification des mots de passe, l'affichage des informations système, la gestion des utilisateurs et
groupe, gérer les packages. C'est principalement en changeant les permissions d'Apache et du shell qui exécute la commande, et en mettant
Apache est ajouté au fichier sudoers pour devenir un membre pouvant exécuter la commande sudo.
Pour l'arrêt et le redémarrage, l'administrateur peut cliquer sur les boutons Arrêter et Redémarrer pour appeler la fonction système afin d'exécuter les commandes d'arrêt et de redémarrage intégrées, ou entrer d'autres commandes d'arrêt ou de redémarrage dans le formulaire et les exécuter.
Affichez les informations système, évaluez la commande soumise via switch et appelez la fonction système pour exécuter des commandes intégrées telles que uname –a, fdisk –l, etc., y compris l'affichage des informations sur le processeur, l'affichage des informations sur la partition et l'affichage du noyau.
Gérez les utilisateurs et les groupes, vous pouvez afficher les utilisateurs et les groupes appartenant au système et les soumettre via un simple formulaire pour ajouter ou supprimer des utilisateurs ou des groupes.
Le processus de fonctionnement du système est illustré à la Figure 8 :
Figure 8 Flux de fonctionnement du système
Le code principal pour afficher les informations système et gérer les utilisateurs et les groupes est le suivant :
// Afficher les informations système
bascule($_POST['info'])
{
cas "Info CPU":
$exec="sudo cat /proc/cpuinfo";break;
case "Informations sur le disque":
$exec="sudo fdisk -l";break;
case "Version du noyau":
$exec="sudo uname -a" ;
}
if($exec) { système($exec);}
//Gérer les utilisateurs et les groupes
$commond="sudo groupdel ".$_POST['group'] ;
echo $commun;
if($commond) { système($commond); }
$commond="sudo groupadd ".$_POST['group'] ;
echo $commun;
if($commond) { système($commond); }
switch($_POST['passmode'])
{
cas 0 :
$passwd="";break;
cas 1:
$passwd=" -p ".$_POST['encpass'] ;
}
si(!$_POST['home'])
{
$home=" -d ".$_POST['home'] ;
}
$user=$_POST['user'] ;
$uid=" -u ".$_POST['uid'] ;
$shell=" -s ".$_POST['shell'] ;
$commond="sudo useradd ".$_POST['user']." -d ".$_POST['home']." -s ".$_POST['shell']." -u ".$_POST[ 'uid']." -p ".$_POST['encpass'] ;
echo $commun;
if($commond) { système($commond); }
$commond="sudo userdel ".$_POST['user'] ;
echo $commun;
if($commond) { système($commond); }
4.6 Module d'exploitation réseau
Les opérations réseau incluent principalement la gestion du serveur Apache, la gestion du serveur PHP, la gestion du serveur MySQL, la gestion du serveur SSH, la gestion du serveur DHCP, l'affichage des paramètres réseau et la configuration des paramètres réseau.
L'affichage des paramètres réseau comprend principalement l'affichage de l'état de la connexion réseau, de la table de routage, des informations sur l'interface de la carte réseau, des statistiques réseau, des informations de stockage temporaire arp et des paramètres de configuration réseau de base.
La configuration des paramètres réseau comprend principalement la configuration des paramètres réseau de base, l'ajout et la suppression de routes.
La gestion des serveurs PHP comprend principalement l'affichage des variables d'environnement PHP, des informations PHP et la configuration de PHP.
La gestion du serveur Apache comprend principalement l'arrêt du serveur et la configuration du serveur.
Gérer le serveur MySQL comprend principalement la requête et la sauvegarde de la base de données, le démarrage, l'arrêt et le redémarrage du serveur.
La gestion d'un serveur SSH comprend principalement le démarrage, l'arrêt et le redémarrage du serveur.
La gestion du serveur DHCP comprend principalement le démarrage, l'arrêt et le redémarrage du serveur.
Le flux de fonctionnement du processus est illustré à la Figure 9 :
Figure 9 Processus de fonctionnement du réseau
Le code principal de configuration des paramètres réseau est le suivant :
commutateur($_POST['config'])
{
cas ConfigIP :
$exec="ifconfig eth0 ".$ip." netmask ".$mask." up" ;
$exec1="route add default gw ".$gw;
$flag=1;pause;
cas ConfigDNS :
$dns=1;pause;
cas AddHostRoute :
$exec="route add -host ".$host." gw ".$rgw;break;
cas AddNetRoute :
$exec="route add -net ".$netroute." netmask ".
$nmasque." gw ".$nrgw; casser;
cas DelHostRoute :
$exec="route del -host ".$dhost." gw ".$drgw;break;
cas DelNetRoute :
$exec="route del -net ".$dnetroute." netmask ".$dnmask."
gw ".$dnrgw; pause;
}
si($exec)
{
system("sudo $exec",&$ret);
si(!$ret)
echo "Modification réussie\n" ;
autre
echo "Modification échouée\n" ;
}
si($flag)
{
system("sudo $exec1",&$ret1);
$flag=0 ;
si(!$ret1)
echo "Getway modifié avec succès\n" ;
autre
echo "Getway modifié sans succès\n" ;
}
si($dns)
{
$fd=fopen("/etc/resolv.conf", "w+");
si ($fd)
{
si($dns1)
fwrite($fd, "serveur de noms $dns1\n");
si($dns2)
fwrite($fd, "serveur de noms $dns2\n");
si($dns3)
fwrite($fd, "serveur de noms $dns3\n");
}
autre
echo "Erreur d'ouverture de fichier !\n" ;
$dns=0 ;
si(!$dns1 && !$dns2 && !$dns3)
echo "Le DNS n'a pas changé!";
autre
echo "Le DNS a changé!";
fferme($fd);
5 essai du système
5.1 Module d'accès sécurisé
Lorsque l'utilisateur se connecte à l'hôte distant, la figure suivante apparaît pour que l'utilisateur entre le nom d'utilisateur et le mot de passe. Après cela, la page de vérification PHP apparaîtra et un autre mot de passe devra être saisi à nouveau. Lorsque l'utilisateur clique sur le bouton de déconnexion, l'utilisateur perd la page de gestion et revient à la page d'authentification PHP. Lorsque l'utilisateur doit se reconnecter au serveur distant pour la gestion, il peut saisir le mot de passe pour se connecter à la gestion. Le module d'accès sécurisé fonctionne bien.
L'interface de connexion est illustrée à la Figure 10 :
Illustration 10 Connexion
5.2 Module d'opération sur les fichiers
Une fois que l'utilisateur s'est connecté au serveur distant et est entré dans le module d'exploitation de fichiers, il peut faire fonctionner le système de fichiers du serveur. Après le test, vous pouvez télécharger des fichiers, afficher des fichiers et des répertoires normalement, mais vous devez définir certaines autorisations côté serveur lors de la modification et du téléchargement de fichiers.
L'interface d'opération de fichier est illustrée à la Figure 11 :
Figure 11 Opération de fichier
5.3 Module d'opération de commande
Une fois que l'utilisateur s'est connecté au serveur distant et est entré dans le module d'opération de commande, il peut entrer des commandes pour effectuer diverses opérations. Après les tests, le système peut bien fonctionner pour les commandes non interactives, mais pour les commandes interactives, le système ne peut parfois pas fonctionner, parfois il ne peut pas fonctionner correctement et parfois cela prend beaucoup de temps.
5.4 Module de fonctionnement du processus
Une fois que l'utilisateur s'est connecté au serveur distant et est entré dans le module d'opération de processus, il peut faire fonctionner le processus en cours d'exécution sur le serveur. Après le test, le processus en cours peut être correctement affiché sous la forme d'un tableau, et il y a un bouton KILL à l'extrême droite de chaque élément du tableau. Lorsque vous devez tuer un certain processus, vous pouvez cliquer sur ce bouton. Le module peut fonctionner normalement.
5.5 Module d'exploitation du système
Lorsque l'utilisateur se connecte au serveur distant et entre dans le module d'exploitation du système, il peut effectuer diverses opérations sur le serveur.
Opérations de gestion du système. Après le test, il peut s'arrêter ou redémarrer normalement, modifier les mots de passe, afficher les informations système, gérer les utilisateurs et les groupes et gérer les packages logiciels. Mais ce n'est qu'une simple gestion de système, et cela n'implique pas grand-chose dans la gestion de système complexe, ou ce n'est qu'une petite partie de la mise en œuvre.
5.6 Module d'exploitation réseau
Une fois que l'utilisateur s'est connecté au serveur distant et est entré dans le module d'exploitation du réseau, il peut afficher et configurer les paramètres réseau du serveur. Après le test, vous pouvez afficher l'état de la connexion réseau, la table de routage, les informations sur l'interface de la carte réseau, les statistiques du réseau, les informations de stockage temporaire arp et les paramètres de configuration réseau de base. Vous pouvez configurer les paramètres réseau de base, ajouter et supprimer des itinéraires. Vous pouvez afficher les variables d'environnement PHP, les informations PHP et configurer PHP. Vous pouvez arrêter le serveur Apache et configurer le serveur Apache. Peut gérer le serveur MySQL, y compris la requête et la sauvegarde de la base de données, le démarrage, l'arrêt et le redémarrage du serveur. Vous pouvez gérer le serveur SSH, y compris le démarrage, l'arrêt et le redémarrage du serveur. Vous pouvez gérer le serveur DHCP, y compris le démarrage, l'arrêt et le redémarrage du serveur. Mais ce n'est qu'une petite partie de la mise en œuvre simple des opérations de réseau, et certaines opérations complexes n'ont pas été mises en œuvre.
Vérifiez l'interface des paramètres réseau comme illustré à la Figure 12 :
Figure 12 Afficher les paramètres réseau
en conclusion
Grâce à la recherche sur ce sujet, je comprends le mécanisme de fonctionnement et la technologie des logiciels de structure B/S, et j'apprends de nombreux principes et processus de conception du génie logiciel. Bien que le système de gestion à distance réalise des opérations sur les fichiers, des opérations sur les processus, des opérations sur les commandes, des opérations sur le système et des opérations sur le réseau, il ne s'agit que d'implémentations préliminaires, et il existe encore de nombreuses lacunes, telles que la définition des autorisations, le caractère incomplet de certaines opérations réseau et certaines l'opération n'a pas encore été mise en œuvre. D'autres peuvent l'implémenter selon nos idées de conception.
Le système de gestion à distance basé sur le système de gestion Web Linux est un problème relativement compliqué, mais c'est aussi un sujet très difficile, et c'est aussi un sujet très pratique. Un tel système de gestion à distance peut faire gagner beaucoup de temps et de travail aux administrateurs système, ce qui rend la gestion du système plus pratique, plus simple et plus conviviale.
La recherche de ce sujet fait référence au modèle de conception et au processus de développement du développement logiciel réussi d'autres personnes. Au cours de l'étude de ce sujet, j'ai appris que chaque étape du développement logiciel, telle que l'analyse des exigences, la conception des grandes lignes, la conception détaillée, le codage du système et les tests du système, est très importante, en particulier l'analyse des exigences et la conception des grandes lignes. est lié à la qualité de l'ensemble du système, affecte directement le développement futur et a également corrigé bon nombre de mes malentendus sur le développement de logiciels.Par exemple, je pensais que le développement de logiciels était du codage.
ginsengBibliographie _
[1] Evi Nermeth. UNIX System Management Technical Manual [M]. Pékin : People's Posts and Telecommunications Press, 2002.
[2] Rasmus Lerdorf, Kevin Tatroe. Programmation PH [M]. Pékin : China Electric Power Press, 2003.
[3] Guo Jinfeng, Lin Yu. PHP&MySql Web Network Programming [M]. Pékin : People's Posts and Telecommunications Press, 2001.
[4] Ning Lei, Zhou Wei. Linux Network and Security Management [M]. Pékin : People's Posts and Telecommunications Press, 2001.
[5] Zhao Qizhi. PHP 4+MySQL complete self-study program [M]. Beijing China Railway Press, 2001.
[6] Cox. Red Hat Linux System Administrator's Manual [M]. Pékin : Mechanical Industry Press, 2001.
[7] Leon Atkinson, PHP 4 Core Programming [M], Pékin, China Water Conservancy and Hydropower Press, 2001.
[8] Tobias Ratschiller, PHP 4.0 Web Development Technical Guide [M], Pékin, Mechanical Industry Press, 2001.
merci
Cet article a été rédigé sous les soins et les conseils enthousiastes de M. Fang Rui. Ses connaissances approfondies et son style académique rigoureux m'ont beaucoup aidé et ont joué un grand rôle dans la réussite de ce projet. Je tiens ici à lui exprimer mes sincères remerciements !
Merci à Internet pour son aide dans les premières phases de recherche du projet.Avec l'aide d'Internet, le projet peut très bien se mener, et il démarre très bien ! Au cours du processus de rédaction de la thèse, j'ai également reçu l'aide enthousiaste d'autres enseignants et de nombreux camarades de classe, et je tiens à leur exprimer ma profonde gratitude !
Enfin, je voudrais exprimer mes sincères remerciements à tous les experts et enseignants qui ont révisé cet article au milieu de leurs horaires chargés !
Faites attention au blogueur, le prochain article est plus excitant
Un clic trois en un ! ! !
Un clic trois en un ! ! !
Un clic trois en un ! ! !
Merci pour le triple en un clic ! ! !