SHELL - CROND - Eviter emails + générer HTML [Résolu/Fermé]

Signaler
Messages postés
20
Date d'inscription
mardi 22 février 2005
Statut
Membre
Dernière intervention
17 décembre 2006
-
Messages postés
20
Date d'inscription
mardi 22 février 2005
Statut
Membre
Dernière intervention
17 décembre 2006
-
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

Messages postés
5460
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
20 janvier 2021
922
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
Messages postés
20
Date d'inscription
mardi 22 février 2005
Statut
Membre
Dernière intervention
17 décembre 2006
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
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 517
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
Messages postés
20
Date d'inscription
mardi 22 février 2005
Statut
Membre
Dernière intervention
17 décembre 2006
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. ??
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 517 >
Messages postés
20
Date d'inscription
mardi 22 février 2005
Statut
Membre
Dernière intervention
17 décembre 2006

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 ~]$
Messages postés
20
Date d'inscription
mardi 22 février 2005
Statut
Membre
Dernière intervention
17 décembre 2006
4 >
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019

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)
Messages postés
20
Date d'inscription
mardi 22 février 2005
Statut
Membre
Dernière intervention
17 décembre 2006
4
Concernant les permissions et liens symboliques, que faut-il rechercher/consulter (man xyz=??, etc...) ?
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 517
Pour les liens voir
man ln
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 517
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.
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 517
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
Messages postés
20
Date d'inscription
mardi 22 février 2005
Statut
Membre
Dernière intervention
17 décembre 2006
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
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 517 >
Messages postés
20
Date d'inscription
mardi 22 février 2005
Statut
Membre
Dernière intervention
17 décembre 2006

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]$
Messages postés
20
Date d'inscription
mardi 22 février 2005
Statut
Membre
Dernière intervention
17 décembre 2006
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
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 517
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]$
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 517
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:
Messages postés
20
Date d'inscription
mardi 22 février 2005
Statut
Membre
Dernière intervention
17 décembre 2006
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