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

Linux Discussion :

shell executé depuis une page php (vérifier si une clé USB est montée)


Sujet :

Linux

  1. #1
    Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2018
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 85
    Points : 40
    Points
    40
    Par défaut shell executé depuis une page php (vérifier si une clé USB est montée)
    tout le forum,

    J'ai besoin de votre aide.

    Je souhaite vérifier si une clé USB est bien montée sur un serveur ubuntu depuis une page php.

    La clé se monte dans le répertoire /mnt/cle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #!/bin/bash
     
    if [ `grep -c "/mnt/cle" /etc/mtab` -eq 0 ]
    	then
    		echo "La clé n'est pas déjà montée."
    	else
    		echo "La clé est déjà montée."
    fi
    Le shell fonctionne parfaitement si je le test avec putty.

    Depuis la page php, j'obtiens toujours "La clé est déjà montée"

    J'ai fais des essais avec exit, je n'ai pas trouvé de solution.

    Merci pour votre aide.

  2. #2
    Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2018
    Messages
    85
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2018
    Messages : 85
    Points : 40
    Points
    40
    Par défaut
    J'ai trouvé comment vérifier si ma clé est montée, mais je n'arrive pas à la monter.

    /var/www/admin/test.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="utf-8"/>
    		<title>test</title>
    	</head>
    	<body>
    		<?php
    			$monterCle = exec('sudo /root/bash/monterCle.sh start');
    			echo $monterCle;
    		?>
    	</body>
    </html>
    /root/bash/monterCle.sh chmod 777
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #!/bin/bash
    mount /dev/sdb1 /mnt/cle
    echo "Clé montée"
    /etc/sudoers
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    root	ALL=(ALL:ALL) ALL
    www-data ALL=NOPASSWD: /root/bash/monterCle.sh start
    Résultat :

    Le texte "Clé monté" s'affiche, mais la clé n'est pas montée

    Info :

    Le fichier /root/bash/monterCle.sh s'execute bien si je le test avec putty






    Edit :

    Bonjour,

    J'ai fait de nouveaux essais.

    /var/www/admin/test.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="utf-8"/>
    		<title>test</title>
    	</head>
    	<body>
    		<?php
    			// Chemin du point de montage
    			$mountPoint = "/mnt/cle";
     
    			// Chemin du périphérique USB
    			$usbDevice = "/dev/sdb1";
     
    			// Commande pour monter la clé USB
    			$command = "sudo mount $usbDevice $mountPoint 2>&1";
     
    			// Exécution de la commande et capture de la sortie
    			$output = [];
    			$exitCode = 0;
    			exec($command, $output, $exitCode);
     
    			// Vérification du code de sortie de la commande
    			if ($exitCode === 0) {
    				echo "La clé USB a été montée avec succès.";
    			} else {
    				echo "Erreur lors du montage de la clé USB:";
    				foreach ($output as $line) {
    					echo "<br>$line";
    				}
    			}
    		?>
    	</body>
    </html>
    Résultat :

    Erreur lors du montage de la clé USB:
    mount: /mnt/cle: /dev/sdb1 already mounted on /mnt/cle

    Le répertoire /mnt/cle est vide.
    Le fichier /etc/mtab ne mentionne pas /dev/sdb1

    Si je lance :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if [[ $(findmnt /mnt/cle) ]]; then
        echo "La clé est montée"
    else
        echo "La clé n'est pas montée"
    fi
    Résultat :

    La clé n'est pas montée.

    Edit :
    j'ai modifié /etc/sudoers
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    root ALL=(ALL:ALL) ALL
    www-data ALL=NOPASSWD: /root/bash/monterCle.sh start
    www-data ALL=(ALL) NOPASSWD: /bin/mount
    www-data ALL=(ALL) NOPASSWD: /bin/umount
    Aucun changement

    Edit :

    avec putty

    www-data@serveuratelier:~$ sudo mount /dev/sdb1 /mnt/cle

    ça fonctionne, la clé est montée.

    Avec ma page php, que la clé soit déjà monté ou pas, j'obtiens toujours :

    Erreur lors du montage de la clé USB:
    mount: /mnt/cle: /dev/sdb1 already mounted on /mnt/cle.


    J'ai modifié /etc/sudoers
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    root	ALL=(ALL:ALL) ALL
    www-data ALL=NOPASSWD: /usr/bin/mount
    www-data ALL=NOPASSWD: /usr/bin/umount

  3. #3
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 453
    Points : 43 244
    Points
    43 244
    Par défaut
    Pas top au niveau sécurité.

    Si tu souhaites juste vérifier sa présence (ce qui est marqué dans ton 1er post), montes un dossier de ta clé USB en lecture seule via le fstab dans un sous dossiers qui contient ton site, et mets-y un fichier texte, tu vérifies la présence de celui-ci.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  4. #4
    Membre éclairé
    Homme Profil pro
    Urbaniste
    Inscrit en
    Août 2023
    Messages
    386
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Urbaniste

    Informations forums :
    Inscription : Août 2023
    Messages : 386
    Points : 788
    Points
    788
    Par défaut
    Bonjour,

    En plus de findmnt, vous pouvez aussi voir du côté de la commande df, sans sudo.

    A minima je note un souci de syntaxe dans

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    www-data ALL=NOPASSWD: /root/bash/monterCle.sh start
    www-data ALL=(ALL) NOPASSWD: /bin/mount
    www-data ALL=(ALL) NOPASSWD: /bin/umount
    C'est plutôt

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    www-data ALL=NOPASSWD: /root/bash/monterCle.sh start,/bin/mount,/bin/unmount
    cf https://doc.ubuntu-fr.org/sudoers#aj...d_utilisateurs

    Les commandes multiples sont séparées par une virgule, sans espace ;
    Pour l'aspect sécurité, je suis, moi aussi, très partagé.
    Cependant, sans une compréhension plus complète
    de votre projet, cela me semble difficile de juger pertinemment.

    Bonne journée

Discussions similaires

  1. Lancer un executable depuis une page web
    Par akari_ dans le forum Général Conception Web
    Réponses: 3
    Dernier message: 03/07/2008, 00h22
  2. lancer un executable depuis une page aspx
    Par tortuegenie dans le forum ASP.NET
    Réponses: 1
    Dernier message: 24/06/2008, 17h35
  3. Lancer un executable depuis une page web
    Par neuneu1 dans le forum ASP
    Réponses: 2
    Dernier message: 02/06/2008, 18h22
  4. [PB 7.0.3] Exécuter un shell (.bat) depuis une application
    Par SugarRc dans le forum Powerbuilder
    Réponses: 2
    Dernier message: 06/12/2007, 15h47
  5. lancer un executable depuis une page
    Par manshoon dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 16/08/2006, 11h33

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