SHELL - CROND - Eviter emails + générer HTML

Résolu
HP-Bidouille Messages postés 20 Statut Membre -  
HP-Bidouille Messages postés 20 Statut Membre -
Bonjour,

Je souhaite éviter de saturer ma boîte mail avec les "accusés" envoyés par Crond.

Est-ce qu'en précisant /dev/null au lieu de Root pour la variable appropriée (MAIL ???) ça suffira ?

Autre question :

Comment générer, à la place du mail ou en même temps (dans la foulée), du code HTML afin d'afficher un "log" des messages envoyés par mon système direcement sur une page Web du site hébergé par mon serveur ?

Je pense, si impossible via Crond, générer un tel fichier log au format Texte ASCII puis aller le chercher pour l'afficher mais, probème, avec le PHP, je suis restrient au chemins de fichiers internes à mon site sinon, j'aimerais bien savoir comment préciser un chemin tel que : /tmp/messages.log.txt ???

Merci d'avance pour vos aimables réponses.

Cordialement,

HP

P.S.
Pour ceux qui veulent connaître le début de l'histoire : http://www.commentcamarche.net/forum/affich-1911245?page=1#

9 réponses

  1. [Dal] Messages postés 6122 Date d'inscription   Statut Contributeur Dernière intervention   1 108
     
    Salut,

    Pour envoyer la sortie de crond vers /dev/null au lieu de la recevoir par e-mail, tu ajoutes " > /dev/null 2>&1" à la fin de ta ligne crontab.

    Pour ton accès au fichier "messages.log.txt" tu peux créer un lien symbolique, comme ceci :

    cd /mon/rep/php
    ln -s /tmp/messages.log.txt messages.log.txt


    Il faudra que ton fichier "/tmp/messages.log.txt" ait les bonnes permissions pour être lisible par le démon httpd.

    Cependant, si tu as la possibilité de le faire, plutôt que de procéder comme celà, déplace ton fichier messages.log.txt directement dans le répertoire php qui va bien, avec des permissions restrictives. Ou en tout cas fait bien attention aux permissions de ce fichier, surtout si ce fichier contient des informations sensibles.

    Le répertoire "tmp" est conçu pour être accédé par tous les utilisateurs en lecture / écriture.

    Dal
    0
  2. HP-Bidouille Messages postés 20 Statut Membre 4
     
    Bonsoir,

    Bien merci pour ses réponses qui vont droit au but ! :o)

    J'aimerais toutefois quelques précisions sur :

    " > /dev/null 2>&1" à la fin de la ligne crontab.

    2>&1 ça sert à quoi exactement ? (j'avoue manquer de courage face au manuel... ;o)

    Autre question :
    Que se passe-t-il dans le cas où ma ligne de commande est la suivante :
    */6 * * * * root /bin/bash /etc/monrep/script.sh

    et le contenu de script.sh comportant cette ligne :
    cat /tmp/message.txt > /dev/cua0 
    ???

    Je pense : seulement une redirection des éventuels messages retournés à tty1 mais, si la ligne avec cat était directement appelée depuis crontab ??
    exemple :
    */6 * * * * root /bin/cat /tmp/message.txt > /dev/cua0 > /dev/null 2>&1 
    La redirection serait comment au final ? la même ou bien je ne verrais rien sur le port série ??

    Concernant le lien symbolique (c'est bien ça?), existe-t-il un moyen de connaître tous ceux déjà définis (je pense que oui) ?

    Sinon, l'autre méthode consistant à placer le fichier log dans un sous-répertoire (de mon site Web) dédié à la gestion système, ça me convient également, voire davantage.

    A ce sujet, comment défini-t-on les droits d'accès pour un fichier et/ou un répertoire ? (là, c'est le pavé de base "permissions et cie" qui me manque)

    Bon, je pense n'avoir rien oublié de demander (ça fait déjà un bon morceau)

    Merci d'avance et bonne soirée.
    :o)

    HP
    0
  3. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Salut,

    2>&1 ça sert à quoi exactement ?


    Recopie la sortie standard sur la sortie d'erreur. Donc les 2 sorties (erreur et standard) sont regroupées.

    Descripteurs des entrées - sorties :

                        0: entrée standard (STDIN) <---------------- clavier
    
    Processus           1: sortie standard (STDOUT) ---------------> écran
    
                        2: sortie erreurs (STDERR) ----------------> écran
    0
    1. HP-Bidouille Messages postés 20 Statut Membre 4
       
      Ok, ok, ok !
      Merci :o)

      Donc, sauf erreur de ma part, 2>&1 signifie : STDERR redirigé vers STDOUT, c'est ça ?

      Si oui, je ne comprends pas pourquoi d'un côté c'est "2" et de l'autre "&1". ??? 8-#

      Quels sont les autres (s'il y en a d'autres (3, 4, etc...??)), que dois-je chercher/consulter pour mieux comprendre tout ça ??

      Est-ce que : tty0 = STDIN, tty1 = STDOUT, etc... ? que signifie T.T.Y. ??
      0
      1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571 > HP-Bidouille Messages postés 20 Statut Membre
         
        Pour les permissions voir
        man chmod

        Voilà un exemple sur un fichier qui s'appelle file
        [lamitest@localhost ~]$ ls -al file
        -rw-rw-r--  1 lamitest lamitest 0 nov 17 21:32 file
        [lamitest@localhost ~]$ chmod -v 0700 file
        Le mode d'accès de `file' a été modifié à 0700 (rwx------).
        [lamitest@localhost ~]$ ls -al file
        -rwx------  1 lamitest lamitest 0 nov 17 21:32 file
        [lamitest@localhost ~]$
        

        Voir ici un petit assistant pour les droits sur Unix.
        http://fr.selfhtml.org/petitsassistants/chmod.htm

        Je préfère la notation en octal

        4 pour lire (read)
        2 pour ecrire (write)
        1 pour éxécution (exe)

        Les droits sont sous affiché sous la forem

        -rwxrwxrwx

        ou

        - veut dire qu'il s'agit d'un fichier régulier ( d pour répertoire, etc..)
        le 1er groupe de 3 caractères concerne le propriètaire
        le 2eme groupe de 3 concerne les membres du groupe
        le 3eme groupe de 3 c'est pour les autres

        Par exemple si on veut attribué les droit de cette façon

        - proprietaire : lire, écrire, éxécution donc 4+2+1
        - membres group : lire, éxécution donc 4+1
        - les autres : éxécution donc 1

        on fait chmod -v 0751 sur le fichier

        -v c'est pour voir à l'écran ce que la commande a fait

        Si on travail sur un répertoire on peut utiliser l'option -R pour recursive
        [lamitest@localhost ~]$ chmod -vR 0751 reptest/
        Le mode d'accès de `reptest/' a été modifié à 0751 (rwxr-x--x).
        Le mode d'accès de `reptest/a' a été modifié à 0751 (rwxr-x--x).
        Le mode d'accès de `reptest/rep1' a été modifié à 0751 (rwxr-x--x).
        [lamitest@localhost ~]$
        
        0
      2. HP-Bidouille Messages postés 20 Statut Membre 4 > lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention  
         
        Wow !
        Ca c'est de la réponse ! :o)

        Donc, c'est le chmod comme avec PHP. (je n'ai jamais réussi à bien le faire marcher jusqu'alors)

        Il y a juste un détail qui me tracasse : on parle de groupe.

        J'ai effectivement, via un outil d'administration graphique (via pages Web) de mon serveur la possibilité de définir des groupes d'utilisateurs.

        Cela signifie-t-il, avec chmod, que les paramètres d'accès pour "groupe" sont implicitement ceux du groupe auquel appartien l'utilisateur concerné ?

        Comment peut-on changer un utilisateur de groupe, temporairement ou "définitivement" (jusqu'à nouveau changement de groupe) via le Shell ?

        Dernière question, un peu hors sujet, peut-on faire appartenir un mêem utilisateur à plusieurs groupes ? (c'est peut-être un peu idiot mais, j'ai déjà eu à me poser la question : groupe1 = Read-WriteAccess ; groupe2=ReadOnlyAccess)
        0
  4. HP-Bidouille Messages postés 20 Statut Membre 4
     
    Concernant les permissions et liens symboliques, que faut-il rechercher/consulter (man xyz=??, etc...) ?
    0
    1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
       
      Pour les liens voir
      man ln
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Donc, sauf erreur de ma part, 2>&1 signifie : STDERR redirigé vers STDOUT, c'est ça ? 


    > c'est pour rédirection

    2>&1 demande au shell d'appliquer au descripteur de fichier numéro 2 (STDERR) la même rédirection que pour le descripteur de fichier numéro 1 (STDOUT)

    (s'il y en a d'autres (3, 4, etc...??))

    Oui.
    Sont les rédirections avancées. ( n< , n> et n>> ).
    C'est rare leur utilisation.
    0
  7. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Cela signifie-t-il, avec chmod, que les paramètres d'accès pour "groupe" sont implicitement ceux du groupe auquel appartien l'utilisateur concerné ?

    Oui est non.

    Oui dans le cas où il s'agit du groupe dont l'utilisateur concerné et aussi propriètaire.
    Ex:
    l'utilisateur Zeus group Zeus
    on fait Apollo et Athena memebre du groupe Zeus
    En ce cas un chmod donnera les même droit pour Apollo et Athena

    Non s'il s'agit d'un groupe quelconque.
    Ex:
    groupe Olimp
    membres Zeus, Ares et Athena
    en ce cas un chmod donnera les mêmes droits pour les 3 mais au sein du group Olimp et pas au sein du groupe de chaque utilisateur.

    Pour gérer les droits il faut bien penser pour une strategie.

    Comment peut-on changer un utilisateur de groupe, temporairement ou "définitivement" (jusqu'à nouveau changement de groupe) via le Shell ?

    Voir
    man usermod
    man groupmod

    Dernière question, un peu hors sujet, peut-on faire appartenir un mêem utilisateur à plusieurs groupes ? (c'est peut-être un peu idiot mais, j'ai déjà eu à me poser la question : groupe1 = Read-WriteAccess ; groupe2=ReadOnlyAccess)

    Oui
    groups - affiche les groupes auquel l’utilisateur appartient
    

    Ex:
    [root@localhost ~]# groups root
    root : root bin daemon sys adm disk wheel
    [root@localhost ~]#
    

    Les groups dont root appartient
    0
    1. HP-Bidouille Messages postés 20 Statut Membre 4
       
      Très bien !
      J'aurais dit parfait avec les lignes de comandes qui correspondent à chaqe exemple, mais je pense avoir bien saisi l'idée. ;o)

      Un grand Merci pour ce dégrossissement ! :o)


      Cordialement,

      HP
      0
      1. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571 > HP-Bidouille Messages postés 20 Statut Membre
         
        Re,

        Je crée d'abord les utilisateurs Zeus, Athena et Appollo
        [root@localhost ~]# useradd Zeus
        [root@localhost ~]# useradd Athena
        [root@localhost ~]# useradd Apollo

        J'affiche le groupe de chacun
        [root@localhost ~]# groups Zeus
        Zeus : Zeus
        [root@localhost ~]# groups Athena
        Athena : Athena
        [root@localhost ~]# groups Apollo
        Apollo : Apollo

        Je crée un group Olimp dont aucun utilisateur fait partie
        [root@localhost ~]# groupadd Olimp

        Je fait les 3 memebres du groupe Olimp
        [root@localhost ~]# usermod -G Olimp Zeus
        [root@localhost ~]# usermod -G Olimp Athena
        [root@localhost ~]# usermod -G Olimp Apollo

        J'affiche le resultat
        [root@localhost ~]# groups Zeus
        Zeus : Zeus Olimp
        [root@localhost ~]# groups Athena
        Athena : Athena Olimp
        [root@localhost ~]# groups Apollo
        Apollo : Apollo Olimp
        [root@localhost ~]#


        Je crée un répertoire dont le propriétaire sera root et dedans je crée un fichier vide (la commande touch) file.txt .
        [root@localhost ~]# ls -al /home/divin/
        total 12
        drwxr-xr-x   2 root root 4096 nov 17 22:36 .
        drwxr-xr-x  11 root root 4096 nov 17 22:34 ..
        -rw-r--r--   1 root root    0 nov 17 22:36 file.txt
        [root@localhost ~]#
        

        Je modifie le group du repertoire en Olimp de façon recursive.
        [root@localhost ~]# chgrp -vR Olimp /home/divin/
        Changement de groupe de `/home/divin/' vers Olimp
        Changement de groupe de `/home/divin/file.txt' vers Olimp
        [root@localhost ~]# ls -al /home/divin/
        total 12
        drwxr-xr-x   2 root Olimp 4096 nov 17 22:36 .
        drwxr-xr-x  11 root root  4096 nov 17 22:34 ..
        -rw-r--r--   1 root Olimp    0 nov 17 22:36 file.txt
        [root@localho

        Je donne access aux 3 utilisateur à ce repertoire et son contenu en lecture écriture éxécution et pour les autres j'interdit tous les access
        [root@localhost ~]# chmod -vR 0770 /home/divin/
        Le mode d'accès de `/home/divin/' a été modifié à 0770 (rwxrwx---).
        Le mode d'accès de `/home/divin/file.txt' a été modifié à 0770 (rwxrwx---).
        [root@localhost ~]#
        

        Avec su je passe en Zeus et je vais dans /home/divin et je modifie le fichier.
        [root@localhost ~]# su - Zeus
        [Zeus@localhost ~]$ pwd
        /home/Zeus
        [Zeus@localhost ~]$ cd /home/divin/
        [Zeus@localhost divin]$ pwd
        /home/divin
        [Zeus@localhost divin]$ cat file.txt
        yyy
        [Zeus@localhost divin]$
        

        En revanche si Zeus fait chmod, il ne peux pas puisqu'il n'est pas propriètaire. En revanche il peut le supprimer puisqu'il a le droit en écriture. Pur empecher que quelqu'un supprime un fichier qui ne lui appartient on doit positionner le mod sticky bit sur le répertoire.
        [Zeus@localhost divin]$ chmod -v 0771 file.txt
        Échec du changement de mode de `file.txt' à 0771 (rwxrwx--x).
        chmod: modification des permissions de `file.txt': Opération non permise
        [Zeus@localhost divin]$ rm file.txt
        [Zeus@localhost divin]$ ls -al file.txt
        ls: file.txt: Aucun fichier ou répertoire de ce type
        [Zeus@localhost divin]$
        
        0
    2. HP-Bidouille Messages postés 20 Statut Membre 4
       
      P.S.
      Juste une petite précision :

      Chaque nouvel utilisateur fraîchement créé possède-t-il un groupe d'appartenance portant le même nom (comme je crois comprendre en lisant l'exemple "Zeus") ou bien il appartient au groupe "autres"/"tout le reste du monde" ?


      Autrement, existe-t-il de la lecture "digeste" pouvant donner réponse à toutes ces questions et d'autres portant sur le système Linux de base (=le noyau??) ?

      Quel(s) livres de référence en français et accessible à un débutant comme moi(et abordable(s)) peut-on me conseiller ?


      Je recherche surtout un ouvrage qui ne fait pas appel à des assistants graphiques ou une distribution trop spécifique de Linux. Peut-être qu'une Red Hat me conviendrait vu la distribution que "j'utilise" actuellement (SME ( http://contribs.org ) depuis 2 ans déjà)

      Merci encore de répondre à toutes ces questions probablement déjà posées des centaines de fois ou plus encore (...)
      :o)

      J'espère avoir le temps et l'énergie nécessaire pour mettre tout ça à disposition d'autres débutant au fur et à mesure sur mon petit serveur ;o)

      HP
      0
  8. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Je récrée le fichier file.txt et je repositionne les droits et cette fois avec sticky bit sur répertoire en mode recursive.

    [root@localhost ~]# touch /home/divin/file.txt
    [root@localhost ~]# ls -al /home/divin/file.txt
    -rw-r--r--  1 root root 0 nov 17 22:48 /home/divin/file.txt
    [root@localhost ~]# chgrp -vR Olimp /home/divin/
    Le groupe d'appartenance de `/home/divin/' qui a été retenu est Olimp.
    Changement de groupe de `/home/divin/file.txt' vers Olimp
    [root@localhost ~]# ls -al /home/divin/file.txt
    -rw-r--r--  1 root Olimp 0 nov 17 22:48 /home/divin/file.txt
    [root@localhost ~]# chmod -vR 1770 /home/divin/
    Le mode d'accès de `/home/divin/' a été modifié à 1770 (rwxrwx--T).
    Le mode d'accès de `/home/divin/file.txt' a été modifié à 1770 (rwxrwx--T).
    [root@localhost ~]#
    

    Zeus va essayé seulement supprimer le fichier (tout à l'heure a reussi)
    [root@localhost ~]# su - Zeus
    [Zeus@localhost ~]$ pwd
    /home/Zeus
    [Zeus@localhost ~]$ cd /home/divin
    [Zeus@localhost divin]$ ls -al
    total 12
    drwxrwx--T   2 root Olimp 4096 nov 17 22:48 .
    drwxr-xr-x  11 root root  4096 nov 17 22:34 ..
    -rwxrwx--T   1 root Olimp    0 nov 17 22:48 file.txt
    [Zeus@localhost divin]$ rm -v file.txt
    rm: ne peut enlever `file.txt': Opération non permise
    [Zeus@localhost divin]$
    
    0
  9. lami20j Messages postés 21506 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 571
     
    Chaque nouvel utilisateur fraîchement créé possède-t-il un groupe d'appartenance portant le même nom (comme je crois comprendre en lisant l'exemple "Zeus") ou bien il appartient au groupe "autres"/"tout le reste du monde" ?

    Avec la commande useradd, normalement l'utilisateur est crée avec les options par défaut (voir /etc/defaults/useradd)

    Voir man useradd c'est bien expliqué.

    Avec option -g tu peux créer un utilisateur avec un autre groupe initial mais en ce cas tu dois créer le groupe d'abord.
    [root@localhost ~]# useradd -g new Ares
    useradd: groupe new inconnu
    [root@localhost ~]# groupadd new
    [root@localhost ~]# useradd -g new Ares
    [root@localhost ~]# groups Ares
    Ares : new
    [root@localhost ~]#
    

    J'ai dans /etc/passwd

    Zeus:x:502:503::/home/Zeus:/bin/bash
    Athena:x:503:504::/home/Athena:/bin/bash
    Apollo:x:504:505::/home/Apollo:/bin/bash
    Ares:x:505:507::/home/Ares:/bin/bash

    et /etc/group

    Zeus:x:503:
    Athena:x:504:
    Apollo:x:505:
    Olimp:x:506:Zeus,Athena,Apollo
    new:x:507:
    0
  10. HP-Bidouille Messages postés 20 Statut Membre 4
     
    Bonsoir,

    Désolé de n'avoir pas donné signe de vie plus tôt. :-(

    Un grand Merci pour ces explications qui méritent d'être rassemblées dans un document à toujours garder "sous le coude" ;o)

    Bref, à moi de jouer ! ;o)

    Merci encore et bonne continuation.

    Cordialement,

    HP
    0