Partage
  • Partager sur Facebook
  • Partager sur Twitter

Executer un shell par php

    29 juin 2021 à 2:06:10

    Bonjour, 

    Voilà où j'en suis tout est dans le même répertoire /var/www/hebergeur/

    Tout fonctionne à part l'execution du shell, j'ai mis les logs erreurs & sortie ci-dessous.

    Merci d'avace pour votre aide.

    Code php : (dossier.php)

    <?php
    //affichage des erreurs php
    error_reporting(E_ALL);
    ini_set('display_errors', TRUE);
    ini_set('display_startup_errors', TRUE);
    require('config.php');
    
    $vhost="suprasupra";
    $username=$vhost;
    $password="test";
    $vhost_conf = $username.".conf";
    $path = "/var/www/".$vhost;
    $ftpuser = "ftpuser";
    $ftpgroup = "ftpgroup";
    if (!is_dir($path)) {
        mkdir($path, 0777, true);
     chown($path, $ftpuser);
     chgrp($path, $ftpgroup);
    }
    $query_mysql_user = "CREATE USER $username@'%' IDENTIFIED BY '$password'";
    $res_mysql_user = mysqli_query($conn, $query_mysql_user);
    $query_mysql_grant = "GRANT USAGE ON * . * TO $username@'%' IDENTIFIED BY '$password'";
    $res_mysql_grant = mysqli_query($conn, $query_mysql_grant);
    $query_mysql_create_db = "CREATE DATABASE IF NOT EXISTS $username DEFAULT CHARACTER SET = utf8 DEFAULT COLLATE = utf8_general_ci";
    $res_mysql_create_db = mysqli_query($conn, $query_mysql_create_db);
    $query_mysql_all_privilege = "GRANT ALL PRIVILEGES ON $username . * TO $username@'%'";
    $res_mysql_all_privilege = mysqli_query($conn, $query_mysql_all_privilege);
    $query_ftp = "INSERT INTO `ftpd` (`User`, `status`, `Password`, `Uid`, `Gid`, `Dir`, `ULBandwidth`, `DLBandwidth`, `comment`, `ipaccess`, `QuotaSize`, `QuotaFiles`) VALUES ('$username', '1', '".hash('MD5', $password)."', '2001', '2001', '$path', '0', '0', '', '*', '0', '0')";
    $res_ftp = mysqli_query($conn, $query_ftp);
      file_put_contents("/etc/apache2/sites-available/".$vhost_conf, "<VirtualHost *:80>\r\n ServerName $username.test.be\r\n\r\n\r\nServerAdmin admin@test.be\r\n DocumentRoot $path\r\n\r\n\r\n ErrorLog /var/logs/apache2/error.log\r\n CustomLog /var/logs/apache2/access.log combined\r\n\r\n\r\n</VirtualHost>");
      $output = exec("./heb.sh $vhost_conf");
    ?>
    Code shell : (heb.sh)

    #!/bin/bash
    LOG_FILE=Sortie.log
    ERR_FILE=Erreurs.log
    exec 1>$LOG_FILE
    exec 2>$ERR_FILE
    ls -hal  # Sortie 'normale' -> STDOUT
    apt-get update # Erreur de droits -> STDERR
    
    vhost=$(grep vhost dossier.php | sed -e 's/\$vhost\s*=\s*\"\(.*\)\"/\1/')
    sudo a2ensite $vhost
    sudo systemctl reload apache2

    Log erreurs : (Erreurs.log)

    E: Could not open lock file /var/lib/apt/lists/lock - open (13: Permission denied)
    E: Unable to lock directory /var/lib/apt/lists/
    W: Problem unlinking the file /var/cache/apt/pkgcache.bin - RemoveCaches (13: Permission denied)
    W: Problem unlinking the file /var/cache/apt/srcpkgcache.bin - RemoveCaches (13: Permission denied)
    sudo: no tty present and no askpass program specified
    sudo: no tty present and no askpass program specified

    Log sortie : (Sortie.log)

    total 20K
    drwsrwsrwt  2 www-data root     4.0K Jun 29 01:37 .
    drwsrwsrwt 34 www-data www-data 4.0K Jun 29 01:34 ..
    -rwxrwxrwt  1 www-data root        0 Jun 29 01:37 Erreurs.log
    -rwxrwxrwt  1 www-data root        0 Jun 29 01:37 Sortie.log
    -rwxrwxrwt  1 www-data root      443 Jun 21 00:26 config.php
    -rwxrwxrwt  1 root     root     1.8K Jun 25 02:26 dossier.php
    -rwxrwxrwt  1 root     root      296 Jun 29 01:33 heb.sh
    Reading package lists...

    -
    Edité par Tzmagnum 29 juin 2021 à 2:12:05

    • Partager sur Facebook
    • Partager sur Twitter
      29 juin 2021 à 6:53:18

      salut,

      il faut être root pour exécuter apt-get, à l'instar de a2ensite

      • Partager sur Facebook
      • Partager sur Twitter

      Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

        30 juin 2021 à 0:55:06

        Bonjour,

        Sachant que je suis l'administrateur de la machine il n'y a pas moyen de bypasser cela svp ?

        Est-ce normal qu'il ne reload pas apache2 non plus ?

        Merci d'avance.

        • Partager sur Facebook
        • Partager sur Twitter
          30 juin 2021 à 10:04:46

          tu es sûr de cette commande ?
          grep vhost dossier.php | sed -e 's/\$vhost\s*=\s*\"\(.*\)\"/\1/'

          parce qu'elle laisse un point virgule après le nom de l'hôte.

          NB: utiliser grep ET sed est maladroit, parce que sed sait faire ce que fait grep :

          sed -n 's/\$vhost\s*=\s*\"\(.*\)\";/\1/p' tonFichier.php
          • Partager sur Facebook
          • Partager sur Twitter

          Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

            1 juillet 2021 à 1:20:11

            Bonjour,

            Donc si je comprends bien j'essaye en remplaçant ?

            grep vhost dossier.php | sed -e 's/\$vhost\s*=\s*\"\(.*\)\"/\1/'

            Par : 

            sed -n 's/\$vhost\s*=\s*\"\(.*\)\";/\1/p' dossier.php

            Cela me donne exactement le même problème.


            Merci d'avance.

            -
            Edité par Tzmagnum 1 juillet 2021 à 1:31:37

            • Partager sur Facebook
            • Partager sur Twitter
              1 juillet 2021 à 10:16:16

              au moins, maintenant, c'est propre.

              sudo: no tty present and no askpass program specified

              ça signifie que sudo voudrait demander un mot de passe mais ne le peux pas pour les raisons évoquées dans le message.

              il faudrait, mais je ne suis pas sûr que cela ne crée pas une faille de sécurité, que l'utilisateur qui appelle le script (www-data ?) puisse exécuter sudo sans mot de passe.

              • Partager sur Facebook
              • Partager sur Twitter

              Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

                2 juillet 2021 à 0:45:35

                Bonjour,

                Merci de ta réponse.

                Tu voudrais dire faire un genre de :

                $output = exec("sudo -u www-data /var/www/hebergeur/heb.sh $vhost_conf"); exit;

                 C'est bien cela ?

                Merci d'avance

                • Partager sur Facebook
                • Partager sur Twitter
                  2 juillet 2021 à 9:42:48

                  je suggérais de configurer /etc/sudoers pour permettre à l'utilisateur qui exécute le script (via une interface web, en général www-data) de lancer sudo sans mot de passe.

                  mais, faille de sécurité...

                  je ne fais aucune tâche d'administration par web, je ne saurais pas te renseigner davantage.

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

                    3 juillet 2021 à 13:33:34

                    Cela dit de nos jours les systèmes de fichiers ne sont t'ils pas journalisés?

                    Désolé je viens du monde ext2 où on attendait avec impatience un système de fichier journalisé comme NTFS pour donner les accès appropriés à chaque programme ou fichier....J'ai l'impression que personne n'utilise cette fonctionnalité qui pourtant de nos jours est présente.

                    • Partager sur Facebook
                    • Partager sur Twitter
                      3 juillet 2021 à 14:43:48

                      quelque chose m'a échappé ? je ne vois pas le lien entre le sujet et la journalisation du système de fichiers. :'(
                      • Partager sur Facebook
                      • Partager sur Twitter

                      Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

                        3 juillet 2021 à 23:35:08

                        dantonq a écrit:

                        quelque chose m'a échappé ? je ne vois pas le lien entre le sujet et la journalisation du système de fichiers. :'(


                        Donner des droits administrateur à un simple user...A l'époque c'était attendu comme le Messie.

                        Donc pourquoi sudo est toujours si présent...Perso je ne comprends pas. (d'ailleurs sudo n'existait pas à l'époque, il y avait seulement su)

                        Après pour le sujet pourquoi utiliser du shell sur du PHP je ne comprends pas, le PHP peut faire office de shell tranquillement.

                        Bref au cas où ext4 permet les ACL, comme quelques systèmes de fichiers avant lui.

                        edit: Bref tout ce que je vois c'est des problèmes de permissions, permission denied...Et à l'époque c'était un peu gavant de toujours devoir passer par root pour lancer l'exécution de beaucoup de scripts....C'est pour ça que je parle de la journalisation et surtout des ACL.

                        -
                        Edité par maroufle34 3 juillet 2021 à 23:41:45

                        • Partager sur Facebook
                        • Partager sur Twitter
                          4 juillet 2021 à 1:13:33

                          Bonjour,

                          Heuu sorry je n'arrive plus a suivre ? 

                          Je pourrais faire la même chose uniquement en php sans passer par un script shell ?

                          Si oui, comment svp ?

                          Merci d'avance.

                          • Partager sur Facebook
                          • Partager sur Twitter
                            4 juillet 2021 à 1:53:09

                            Le php est un langage interprété, il peut lire est écrire (lire sur STDIN et écrire sur STDOUT ou STDERR)

                            <?php
                            $stderr 
                            fopen('php://stderr''w');
                            ?>

                            <?php
                            $stdout 
                            fopen('php://stdout''w');
                            ?>

                            Mais tu as des erreurs de permissions, du coup les ACL seraient un bon intermédiaire entre tes scripts et tes entrées/sorties.

                            Du coup les man acl pourraient t'être utiles.

                            https://linux.die.net/man/1/setfacl (il y a plusieurs pages de man)

                            • Partager sur Facebook
                            • Partager sur Twitter
                              4 juillet 2021 à 9:07:59

                              Les ACL pour a2ensite et systemctl ? Ce serait une très mauvaise idée que de toucher cela à ces binaires AMHA. Le genre de truc à soit vraiment induire une faille de sécurité, soit rendre instable le système.

                              La solution pourrait être de lancer le script avec sudo, et de donner à l'utilisateur (www-data) le droit de lancer uniquement ce script avec sudo. Il faudra alors bien faire attention à ce que le script ne soit pas modifiable (pas de droit en écriture), à utiliser le chemin absolu du script lorsque tu l'appelles, et enfin à s'assurer que toutes données fournies par l'utilisateur passées au script soient saines.

                              Pour la configuration du fichier /etc/sudoers: https://askubuntu.com/questions/159007/how-do-i-run-specific-sudo-commands-without-a-password#159009.

                              Mais, de toute manière, l'utilisation de exec est comme toujours déconseillée.

                              Peut-être que si tu nous expliquais clairement ce que tu souhaites faire et que tu nous donnes le «vrai» script shell (à quoi sert la variable passée au script?), alors on pourrait te fournir des solutions plus sécurisée (même optimisée) avec par exemple l'utilisation d'une tâche cron qui tourne assez fréquemment et qui va chercher les info nécessaires à son exécution dans une base de données (qui existe déjà d'ailleurs).

                              • Partager sur Facebook
                              • Partager sur Twitter
                                4 juillet 2021 à 11:50:46

                                Les ACL c'est surtout pour donner des droits d'accès à des fichiers, pas à des commandes. (comme sur Windows en fait)

                                Même si on peut le faire pour des commandes  c'est très déconseillé pour la sécurité je dirais.

                                Normalement si l'administration est bien faite on a que très peu de fichiers qui appartiennent à root, à part les fichiers de démarrage et les fichiers systèmes, rajouter un user sur un fichier donne l'accès à ce fichier, pas à la commande en elle même.(mais bon là on a pas le script en question donc difficile de répondre, encore plus pour moi qui n'ai pas du scripter depuis 20 ans)

                                Par contre utiliser php en ligne de commande je l'ai fait quelques fois.

                                Cette réponse trouvée sur stackoverflow me semble la plus complète et détaillée.

                                sudo by default will read the password from the attached terminal. Your problem is that there is no terminal attached when it is run from the netbeans console. So you have to use an alternative way to enter the password: that is called the askpass program.

                                The askpass program is not a particular program, but any program that can ask for a password. For example in my system x11-ssh-askpass works fine.

                                In order to do that you have to specify what program to use, either with the environment variable SUDO_ASKPASS or in the sudo.conf file (see man sudo for details).

                                You can force sudo to use the askpass program by using the option -A. By default it will use it only if there is not an attached terminal.

                                https://stackoverflow.com/questions/21659637/how-to-fix-sudo-no-tty-present-and-no-askpass-program-specified-error


                                edit: Bien sûr cette histoire de sudo ne résoudra pas le fait que la permission de lire les packages n'est pas permise par l'user qui se nomme ftpuser ou le groupe ftpgroup.

                                Même si par défaut souvent apache est exécuté en user www-data du groupe www-data. (ou autre à voir dans les processus suivant la distribution)

                                Pour sudo tu peux executer

                                sudo visudo

                                éditer le fichier puis mettre en dernière ligne.

                                www-data : ALL NOPASSWD: /path/to/heb.sh

                                Mais je trouve ça assez crade comme solution comparé à ajouter l'user ou le groupe sur l'ACL des fichiers que tu veux lire spécifiquement.


                                -
                                Edité par maroufle34 4 juillet 2021 à 13:01:16

                                • Partager sur Facebook
                                • Partager sur Twitter
                                  5 juillet 2021 à 0:17:44

                                  Bonjour,

                                  Bon j'ai adapté mon fichier sudoers sur ubuntu 18.04, mais il y'a une erreur autre part.

                                  Tout fonctionne bien sauf que dans donc le fichier suprasupra.conf se créer bien dans /etc/apache2/sites-available avec tout ce qu'il le faut dedans et tout.

                                  Mais le sauf que le sudo a2ensite $vhost et le sudo systemctl reload apache2, ne se font toujours pas.

                                  Quelqu'un a une idée svp ?

                                  Merci d'avance.

                                  Voici les adaptations :

                                  Je rappel que mon php et mon script shell se trouve dans le même dossier.

                                  Code php : (dossier.php)


                                  <?php
                                  //affichage des erreurs php
                                  error_reporting(E_ALL);
                                  ini_set('display_errors', TRUE);
                                  ini_set('display_startup_errors', TRUE);
                                  require('config.php');
                                  
                                  $vhost="suprasupra";
                                  $username=$vhost;
                                  $password="test";
                                  $vhost_conf = $username.".conf";
                                  $path = "/var/www/".$vhost;
                                  $ftpuser = "ftpuser";
                                  $ftpgroup = "ftpgroup";
                                  if (!is_dir($path)) {
                                      mkdir($path, 0777, true);
                                  	chown($path, $ftpuser);
                                  	chgrp($path, $ftpgroup);
                                  }
                                  $query_mysql_user = "CREATE USER $username@'%' IDENTIFIED BY '$password'";
                                  $res_mysql_user = mysqli_query($conn, $query_mysql_user);
                                  $query_mysql_grant = "GRANT USAGE ON * . * TO $username@'%' IDENTIFIED BY '$password'";
                                  $res_mysql_grant = mysqli_query($conn, $query_mysql_grant);
                                  $query_mysql_create_db = "CREATE DATABASE IF NOT EXISTS $username DEFAULT CHARACTER SET = utf8 DEFAULT COLLATE = utf8_general_ci";
                                  $res_mysql_create_db = mysqli_query($conn, $query_mysql_create_db);
                                  $query_mysql_all_privilege = "GRANT ALL PRIVILEGES ON $username . * TO $username@'%'";
                                  $res_mysql_all_privilege = mysqli_query($conn, $query_mysql_all_privilege);
                                  $query_ftp = "INSERT INTO `ftpd` (`User`, `status`, `Password`, `Uid`, `Gid`, `Dir`, `ULBandwidth`, `DLBandwidth`, `comment`, `ipaccess`, `QuotaSize`, `QuotaFiles`) VALUES ('$username', '1', '".hash('MD5', $password)."', '2001', '2001', '$path', '0', '0', '', '*', '0', '0')";
                                  $res_ftp = mysqli_query($conn, $query_ftp);
                                    file_put_contents("/etc/apache2/sites-available/".$vhost_conf, "<VirtualHost *:80>\r\n ServerName $username.test.be\r\n\r\n\r\nServerAdmin admin@test.be\r\n DocumentRoot $path\r\n\r\n\r\n ErrorLog /var/logs/apache2/error.log\r\n CustomLog /var/logs/apache2/access.log combined\r\n\r\n\r\n</VirtualHost>");
                                    $output = exec("sudo /var/www/hebergeur/heb.sh $vhost_conf"); exit;
                                  ?>

                                  Voici le script shell : (heb.sh)

                                  #!/bin/bash
                                  LOG_FILE=Sortie.log
                                  ERR_FILE=Erreurs.log
                                   
                                  exec 1>$LOG_FILE
                                  exec 2>$ERR_FILE
                                  ls -hal		# Sortie 'normale' -> STDOUT
                                  
                                  
                                  vhost=$(grep vhost dossier.php | sed -e 's/\$vhost\s*=\s*\"\(.*\)\"/\1/')
                                  sudo a2ensite $vhost
                                  sudo systemctl reload apache2

                                  Voici le fichier Erreurs.log : 

                                  ERROR: No site found matching *:80>\r\n!
                                  ERROR: Site suprasupra; does not exist!
                                  ERROR: Site $username=$vhost; does not exist!
                                  ERROR: Site $vhost does not exist!
                                  ERROR: Site = does not exist!
                                  ERROR: Site $username..conf; does not exist!
                                  ERROR: Site $path does not exist!
                                  ERROR: Site = does not exist!
                                  ERROR: Site /var/www/.$vhost; does not exist!
                                  ERROR: Site file_put_contents(/etc/apache2/sites-available/.$vhost_conf, does not exist!
                                  ERROR: Site "<VirtualHost does not exist!
                                  ERROR: Site ServerName does not exist!
                                  ERROR: Site $username.test.bernrnrnServerAdmin does not exist!
                                  ERROR: Site admin@test.bern does not exist!
                                  ERROR: Site DocumentRoot does not exist!
                                  ERROR: Site $pathrnrnrn does not exist!
                                  ERROR: Site ErrorLog does not exist!
                                  ERROR: Site /var/logs/apache2/error.logrn does not exist!
                                  ERROR: Site CustomLog does not exist!
                                  ERROR: Site /var/logs/apache2/access.log does not exist!
                                  ERROR: Site combinedrnrnrn</VirtualHost>"); does not exist!
                                  ERROR: Site $output does not exist!
                                  ERROR: Site = does not exist!
                                  ERROR: Site exec("sudo does not exist!
                                  ERROR: Site /var/www/hebergeur/heb.sh does not exist!
                                  ERROR: Site $vhost_conf"); does not exist!
                                  ERROR: Site exit; does not exist!

                                  Voici le fichier Sortie.log : 

                                  total 20K
                                  drwsrwsrwt  2 www-data root     4.0K Jun 29 01:37 .
                                  drwsrwsrwt 34 www-data www-data 4.0K Jul  4 23:58 ..
                                  -rwxrwxrwt  1 www-data root        0 Jul  5 00:06 Erreurs.log
                                  -rwxrwxrwt  1 www-data root        0 Jul  5 00:06 Sortie.log
                                  -rwxrwxrwt  1 www-data root      443 Jun 21 00:26 config.php
                                  -rwsrwsrwt  1 www-data root     1.8K Jul  5 00:05 dossier.php
                                  -rwxrwxrwt  1 www-data root      243 Jul  5 00:05 heb.sh
                                  





                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    5 juillet 2021 à 0:47:01

                                    Bonjour,

                                    Que veux tu faire avec:

                                    vhost=$(grep vhost dossier.php | sed -e 's/\$vhost\s*=\s*\"\(.*\)\"/\1/')

                                    ?

                                    Rajoute:

                                    echo -n "$vhost"
                                    

                                    À la ligne 11 de ton script et regarde Sortie.log.

                                    Tu te rends compte que tu appelles un script shell depuis un fichier qui lis ce propre fichier pour extraire la valeur d'une variable de ce fichier assignée en dur? Passe là directement au script...

                                    Tu passes toujours un argument à ton script ("$vhost_conf") par contre mais tu ne l'utilises pas.

                                    Encore une fois, ou veux-tu aller avec tout ça? Générer un vhost dynamiquement après chaque création d'utilisateur? Je pense qu'il y a bien plus simple et qu'on pourra bien mieux t'aider si tu nous expliquais ton but.

                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      6 juillet 2021 à 0:52:02

                                      Bonjour,

                                      Bien voilà mon but et qu'à la création d'un utilisateur cela crée son dossier personnel dans /var/www/ avec comme user ftpuser & ftpgroup et que sa ajoute son compte avec son accès dans mon pureftpd-mysql.

                                      Que sa créer l'user sql et sa table.

                                      Que cela créer le fichier vhost en ".conf" dans le dossier /etc/apache2/sites-available/ et que cela active le vhost dans le dossier  /etc/apache2/sites-enabled/ et que cela reload la configuration d'apache2.

                                      Genre me permettre de créer un hébergement complet via formulaire.

                                      J'ai ajouté celà à la ligne 11 de fichier heb.sh :

                                      echo -n "$vhost"

                                      Et dans mon Sortie.log cela donne ceci : 

                                      total 20K
                                      drwsrwsrwt  2 www-data root     4.0K Jun 29 01:37 .
                                      drwsrwsrwt 34 www-data www-data 4.0K Jul  6 00:50 ..
                                      -rwxrwxrwt  1 www-data root        0 Jul  6 00:50 Erreurs.log
                                      -rwxrwxrwt  1 www-data root        0 Jul  6 00:50 Sortie.log
                                      -rwxrwxrwt  1 www-data root      443 Jun 21 00:26 config.php
                                      -rwsrwsrwt  1 www-data root     1.8K Jul  5 00:05 dossier.php
                                      -rwxrwxrwt  1 www-data root      270 Jul  6 00:48 heb.sh
                                      suprasupra;
                                      $username=$vhost;
                                      $vhost_conf = $username.".conf";
                                      $path = "/var/www/".$vhost;
                                        file_put_contents("/etc/apache2/sites-available/".$vhost_conf, "<VirtualHost *:80>\r\n ServerName $username.test.be\r\n\r\n\r\nServerAdmin admin@test.be\r\n DocumentRoot $path\r\n\r\n\r\n ErrorLog /var/logs/apache2/error.log\r\n CustomLog /var/logs/apache2/access.log combined\r\n\r\n\r\n</VirtualHost>");
                                        $output = exec("sudo /var/www/hebergeur/heb.sh $vhost_conf"); exit;

                                      Cela me crée bien dans cette exemple le fichier suprasupra.conf correctement dans le dossier /etc/apache2/sites-available/ , mais parcontre cela ne l'active pas dans /etc/apache2/sites-enabled/ et cela ne reload pas apache2

                                      Est-ce que cela vous aide un peu à comprendre dans quel sens j'essaie d'aller svp ?

                                      Merci d'avance de votre aide.

                                      -
                                      Edité par Tzmagnum 6 juillet 2021 à 1:16:43

                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        6 juillet 2021 à 12:11:42

                                        Tu as des solutions intégrées à Apache2 pour faire ce genre de choses si j'ai bien tout compris.

                                        http://eost.u-strasbg.fr/manual/fr/vhosts/mass.html

                                        ça sera juste créé en www-data normalement...Pour qu'Apache y ait accès.

                                        Pour que les 2 logiciels y ait accès de façon mutualisée en lecture et écriture, je pense encore que les ACL pourraient te faciliter la vie, c'est un peu pour ce genre de chose qu'on attendait les ACL à l'époque.(pour qu'un fichier ou un dossier n'ai pas qu'un seul user ou group)

                                        Les ACL c'est pas compliqué...Par exemple pour ajouter un groupe ftpgroup à tout un répertoire de façon récursive (option -R), le -m est pour modifier.

                                        setfacl -Rm g:ftpgroup:rw Repertoire-relatif/


                                        edit: et pour les lire ACL d'un fichier c'est aussi facile.

                                        getfacl test
                                        
                                        # file: test
                                        # owner: op414
                                        # group: op414
                                        user::rwx
                                        user:bernard:rwx
                                        user:patrick:r--
                                        group::rwx
                                        mask::rwx
                                        other::--

                                        Le fichier de base appartient à op414 et au group op414, mais user, bernard et patrick peuvent y accéder, de façon plus ou moins permissive...Quel bonheur de voir cette fonctionnalité que je n'avais pas à l'époque :) 

                                        -
                                        Edité par maroufle34 6 juillet 2021 à 12:26:14

                                        • Partager sur Facebook
                                        • Partager sur Twitter

                                        Executer un shell par php

                                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                        • Editeur
                                        • Markdown