• Comment remplacer l'utilisateur root pour utiliser le service cron ? (1

    From Bernard Bass@21:1/5 to All on Sat Feb 17 23:50:01 2024
    This is a multi-part message in MIME format.
    Bonjour,

    Voilà ma question : Comment remplacer l'utilisateur root pour utiliser
    le service cron ?

    ##############################################################################################################################
    ##############################################################################################################################

    Utiliser cron et crontab sur Debian 12.
    Un utilisateur sudoer est créé pour utiliser sudo et administrer le système. *L'utilisateur root a été désactivé sur le système Debian et le mot de passe est forcé pour expirer.*

    Des erreurs s'affichent dans journalctl, les tâches cron de
    l'utilisateur root ne sont pas lancées :

    *SERVEUR cron : Authentication failure
    Password root of that user should be expried.*

    Le compte utilisateur root est verrouillé et le mot de passe est forcé
    pour expirer, il ne peut être utilisé pour lancer des tâches cron.

    *COMMENT CREER UN UTILISATEUR POUR REMPLACER ROOT ET UTILISER SA CRONTAB ?*

    Créer un utilisateur pour remplacer root :
    sudo adduser gestionnaire
    sudo bash
    echo "gestionnaire ALL=(ALL) ALL" >> /etc/sudoers
    echo "gestionnaire ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers

    Ajouter gestionnaire au groupe cron :
    gpasswd -a gestionnaire cron

    Lorsque un utilisateur est ajouté au groupe cron, se déconnecter et se reconnecter pour rendre l'ajout au groupe effectif.

    *Comment faire comprendre au système qu'il faut utiliser le nouvel
    utilisateur pour lancer les tâches cron du système ?*

    *( la crontab de l'utilisateur sudoer, la crontab de l'utilisateur gestionnaire, les tâches cron.daily ..... , les tâches des services dans
    le dossier cron.d )
    *

    ##############################################################################################################################
    ##############################################################################################################################






    La recherche actuelle :

    *( Les tâches cron.daily ..... , les tâches des services dans le dossier cron.d ne fonctionnent pas **" cron **: **Authentication failure " **)
    *

    ##############################################################################################################################

    Utiliser cron et crontab sur Debian 12.
    Un utilisateur sudoer est créé pour utiliser sudo et administrer le système.

    L'utilisateur root a été désactivé sur le système Debian et le mot de passe est forcé pour expirer.

    Des erreurs s'affichent dans journalctl, les tâches cron de
    l'utilisateur root ne sont pas lancées.

    ##############################################################################################################################

    sudo journalctl -p err
    févr. 11 16:25:01 SERVEUR CRON[874565]: pam_unix(cron:account): account
    root has expired (account expired)
    *févr. 11 16:25:01 SERVEUR cron[874565]: Authentication failure <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*
    sudo[874537]: pam_unix(sudo:session): session closed for user root

    Le compte utilisateur root est verrouillé et ne peut être utilisé pour lancer des tâches cron.
    *Password root of that user should be expried. <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*

    ##############################################################################################################################

    *COMMENT CREER UN UTILISATEUR ROOT POUR REMPLACER ROOT ET UTILISER SA
    CRONTAB ? <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*
    Comment exécuter une commande exigeant un plus haut niveau de permission
    (root ou racine) ?


    Créer un utilisateur pour remplacer root :
    sudo adduser gestionnaire
    sudo bash
    echo "gestionnaire ALL=(ALL) ALL" >> /etc/sudoers
    echo "gestionnaire ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers

    Ajouter gestionnaire au groupe cron :
    gpasswd -a gestionnaire cron
    Lorsque un utilisateur est ajouté au groupe cron, se déconnecter et se reconnecter pour rendre l'ajout au groupe effectif.

    *Comment faire comprendre au système qu'il faut utiliser gestionnaire
    pour lancer les tâches cron ?*
    ...
    ...


    ##############################################################################################################################

    sudo systemctl stop cron
    sudo systemctl start cron
    sudo systemctl restart cron

    # Identifier les processus cron :
    sudo systemctl status cron
    # Arrêter un processus cron :
    sudo kill PID

    ##############################################################################################################################

    # Afficher le crontab de l'utilisateur courant :
    crontab -l

    # Editer le crontab de l'utilisateur courant :
    crontab -e

    # Editer le crontab de l'utilisateur root :
    sudo crontab -e

    # Modifier la crontab d'un autre utilisateur :
    sudo crontab -e -u nom_utilisateur

    ##############################################################################################################################

    # Définir un éditeur de commandes pour éditer les crontabs :
    sudo update-alternatives --config editor
    # Ou :
    select-editor
    # Ou :
    export EDITOR=/usr/bin/nano

    ##############################################################################################################################

    Une tâche cron est exécutée dans un shell non connecté (non-login) et
    non interactif. Les variables d'environnement habituelles et en
    particulier PATH ne sont pas connues.
    Il faut donc soit mettre les emplacements complets des exécutables dans
    les commandes et les scripts appelés par cron, soit définir PATH dans le fichier crontab :
    Exemple :
    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

    Exemple :
    SHELL=/bin/bash
    PATH=/home/USER/bin:/usr/local/bin:/usr/bin
    MAILTO=mail@domain.ext

    ##############################################################################################################################

    Afficher les règles cron de l'utilisateur root avec sudo :
    sudo crontab -e
    L'utilisateur root peut utiliser le fichier /etc/crontab ou le
    répertoire /etc/cron.d/ pour ajouter des tâches, en précisant le nom d'utilisateur root.

    ##############################################################################################################################

    # Lister les tâches cron planifiées sur le système depuis les dossiers suivants :

    /etc/cron.hourly/

    cd cron.daily/
    /etc/cron.daily# ls
    00logwatch  apache2  apt-compat  automysqlbackup  clamav  dpkg exim4-base  locate  logrotate  man-db <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

    /etc/cron.weekly# ls -la
    ls -la
    total 16
    drwxr-xr-x  2 root root 4096 12 juil.  2023 .
    drwxr-xr-x 89 root root 4096 17 févr. 18:35 ..
    -rwxr-xr-x  1 root root 1055 12 mars   2023 man-db <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    -rw-r--r--  1 root root  102  2 mars   2023 .placeholder

    /etc/cron.monthly

    /etc/cron.yearly

    ##############################################################################################################################

    # Contrairement aux lignes d'un fichier crontab, les fichiers suivants
    doivent préciser quel utilisateur exécute le script :
    # * * * * * nom_utilisateur /bin/touch /path/fichier
    cd /etc/cron.d <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    ls -la
    -rw-r--r--  1 root root  802 16 avril  2023 certbot
    -rw-r--r--  1 root root  695  2 janv.  2021 clamav-unofficial-sigs -rw-r--r--  1 root root  201  5 mars   2023 e2scrub_all
    -rw-r--r--  1 root root  712 13 juil.  2022 php
    -rw-r--r--  1 root root  102  2 mars   2023 .placeholder
    -rw-r--r--  1 root root  163  4 sept. 15:18 sync

    ##############################################################################################################################

    # SHELL est le shell dans lequel sera executé cron.
    # Si ce dernier n'est pas spécifié, l'entrée de l'utilisateur sera prise
    par défaut dans le fichier /etc/passwd :
    cat /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    ...

    HOME est le répertoire home de cron. (???) <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    Si aucun n'est spécifiée, ce sera l'entrée de /etc/passwd qui sera utilisée. (???)

    ##############################################################################################################################

    # Editer avec root le fichier /etc/group :
    sudo nano /etc/group

    # Ajouter un utilisateur autorisé à utiliser cron dans le group crontab : crontab:x:101:amis_sh

    ( Je n'ai pas encore ajouté l'utilisateur gestionnaire. )

    ##############################################################################################################################

    Tout utilisateur que vous souhaitez pouvoir exécuter des tâches cron
    doit être répertorié dans /etc/cron.allow (un utilisateur par ligne).
    Si le fichier cron.allow n’existe pas, mais que le fichier
    /etc/cron.deny existe, alors l'utilisateur ne doit pas y être répertorié. nano /etc/cron.allow
    Ajouter amis_sh

    Dans le cas où les deux fichiers n'existent pas, seul l'utilisateur root
    est éligible pour exécuter des tâches cron.

    Lister les utilisateurs et leur crontabs :
    cd /var/spool/cron/crontabs
    ls
    amis_sh  root

    Vérifier les droits du fichier /var/spool/cron/crontabs/amis_sh
    cd /var/spool/cron/crontabs/
    ls -la
    -rw------- 1 amis_sh crontab 1714 11 févr. 22:35 amis_sh
    -rw------- 1 root    crontab  922 11 févr. 16:38 root

    ##############################################################################################################################

    Pour executer un script avec sudo sans avoir à donner le mot de passe :
    sudo nano /etc/sudoers

    Préférer le dossier "/etc/sudoers.d" : il sert à stocker des fichiers déclaratifs pour sudoers qui seront lus en complément du fichier sudoers. Attention, tous les fichiers qui contiennent "~" ou "." dans le nom ne
    seront pas lus !
    Organiser les règles par fichier plutôt que de tout centraliser dans le
    même fichier : le fichier sudoers sera toujours lu, dans tous les cas.

    Pour créer un nouveau fichier nommé "amis_sh", on utilisera :
    sudo visudo /etc/sudoers.d/amis_sh
    sudo chmod 440 /etc/sudoers.d/amis_sh

    Ajouter deux ligne pour le script sudoer à autoriser :
    amis_sh ALL=(ALL:ALL) ALL
    amis_sh ALL=(ALL) NOPASSWD:/home/amis_sh/test-crontab-sudo.sh
    ### amis_sh ALL=(root) NOPASSWD: /home/amis_sh/test-crontab-sudo.sh

    Note: in sudoers, the last match wins.

    40 18 11 2 * sudo ./test-crontab-sudo.sh >> updates.log 2>&1

    chmod +x /home/amis_sh/test-crontab-sudo.sh

    ##############################################################################################################################

    # Exemple de la crontab de l'utilisateur amis-sh :

    crontab -e

    ###################################################
    # Sauvegarder les règles de l'utilisateur amis_sh par mail :
    # sudo bash
    # mailx -a /var/spool/cron/crontabs/amis_sh -s "/var/spool/cron/crontabs/amis_sh" mail@domain.ext < /var/spool/cron/crontabs/amis_sh

    ################################################### ###################################################
    # Tester crontab
    ################################################### ###################################################
    # Créer un fichier test-crontab.sh :
    # nano test-crontab.sh
    #!/bin/sh
    #touch "/home/amis_sh/crontab-script-sh-ok"; ###################################################

    ###################################################
    # nano test-crontab-sudo.sh
    #!/bin/sh
    #touch "/home/amis_sh/test-crontab-sudo-ok1";
    #su - amis_sh -c "touch test-crontab-sudo-user-ok";
    #touch "/home/amis_sh/test-crontab-sudo-ok2"; ###################################################

    ###################################################
    # Les actions suivantes fonctionnent pour l'utilisateur amis_sh :
    # Mois février jour 11 à 17h 58m.

    # Créer directement un fichier user :
    # 03 19 11 2 * touch /home/amis_sh/crontab-ok

    # Créer un fichier user depuis un script :
    # 03 19 11 2 * /home/amis_sh/test-crontab.sh

    # Créer deux fichier user et un fichier root et un fichier de log depuis
    un script :
    # 22 21 11 2 * user=$(whoami) sudo /home/amis_sh/test-crontab-sudo.sh >> updates.log 2>&1
    ################################################### ###################################################

    ##############################################################################################################################

    # Tester au démarrage de la session ssh :
    # /home/amis_sh/test-crontab-sudo.sh

    ##############################################################################################################################

    # Cette méthode pour ne pas utiliser sudo n'est pas recommandée :
    # Elever les droits setuid sur les scripts exécutés par cron pour ne pas avoir à utiliser sudo :
    # sudo chown root script.sh
    # sudo chmod 710 script.sh
    # sudo chmod u+s script.sh

    ##############################################################################################################################

    Fichiers de configuration de dpkg et cron :

    cat /var/lib/dpkg/info/cron.conffiles
    /etc/cron.d/.placeholder
    /etc/cron.daily/.placeholder
    /etc/cron.hourly/.placeholder
    /etc/cron.monthly/.placeholder
    /etc/cron.weekly/.placeholder
    /etc/crontab
    /etc/default/cron
    /etc/init.d/cron
    /etc/pam.d/cron

    ##############################################################################################################################

    # Exemples de tâches cron :

    01 * * * * root echo "cette commande est exécutée toutes les heures
    passées d'une minute"
    17 8 * * * root echo "Cette commande est exécutée tous les jours à 08h17"
    17 20 * * * root echo "Cette commande est exécutée tous les jours à 20h17" 00 4 * * 0 root echo "Cette commande est exécutée tous les dimanches à 4h00" 42 4 1 * * root echo "Cette commande est exécutée tous les 1er du mois à 4h42"
    01 * 19 07 * root echo "Cette commande est exécutée toutes les heures passées d'une minute tous les 19 Juillet"

    # Mise à jour de locate chaque premier du mois :
    22 2 * * 1    /usr/bin/updatedb

    # Provoquer un reboot la machine chaque 1er et 15 du mois à 2h 30 du matin : 30 2  1,15 * * /sbin/shutdown -r

    # Appeler un script de sauvegarde tous les lundis a 3 h 15 du matin :
    15  3  *  * 1 /usr/bin/backup

    # Exécution tous les quarts d'heure de 15h à 19h du lundi au vendredi seulement en 1ère quinzaine du troisième trimestre :
    0,15,30,45  15-19  1-15  7-9  1-5 <commande>

    # Trouver puis nettoyer le répertoire /tmp des vieux fichiers (non
    modifiés depuis 31 jours) tous les 1er jour de chaque mois, à 2 heures
    du matin :
    0 2 1 * * find /tmp -atime 31 -exec rm -f {} \;

    # Faire apparaitre un message dans la GUI d'un utilisateur à une heure précice
    50 18 * * * export DISPLAY=localhost:0.0; xhost + | zenity --info --text="Reboot de l'ordinateur dans 10min, penser à faire vos sauvegardes"

    # Exécution tous les jours à 22h00 d'une commande et rediriger les infos
    dans sauvegarde.log :
    00 22 * * * /root/scripts/sauvegarde.sh >> sauvegarde.log


    # Vous pouvez rediriger la sortie (par exemple vers /dev/null si vous
    n’en voulez vraiment pas ) ou dans un fichier de log en utilisant la
    syntaxe suivante :
    cmd >> log.file

    # Ceci redirige la sortie standard et non les erreurs, pour rediriger
    les erreurs, vous devez utiliser la syntaxe suivante :
    cmd >> logfile 2>&1

    Exécuter une commande au démarrage. Pour exécuter une commande une seule fois, juste après le démarrage de l'ordinateur, on peut recourir à la
    macro @reboot (un simple redémarrage de cron ne déclenche pas une
    commande planifiée avec @reboot). Cette macro remplace elle aussi les
    cinq premiers champs d'une entrée dans la crontab.

    @yearly : une fois par an (le premier janvier à 0 h 00) ;
    @monthly : une fois par mois (le premier du mois à 0 h 00) ;
    @weekly : une fois par semaine (le dimanche à 0 h 00) ;
    @daily : une fois par jour (à 0 h 00) ;
    @hourly : une fois par heure (au début de chaque heure).

    ##############################################################################################################################

    # Pour lister les scripts dans /etc/cron.d utiliser :
    cat /etc/cron.d/* | grep "certbot (Mot clé)"


    # Lister les tâches cron par utilisateurs du fichier /etc/passwd.
    for user in $(cut -f1 -d: /etc/passwd); do echo -e "\n\n==> $user:" &&
    crontab -u $user -l; done


    # Ce script ne fonctionne pas sur les crons périodiques (cron.daily, cron.weekly, etc.) qui sont dans des répertoires distincts et non liés à
    un utilisateur mais au système !
    # Lister tous les scripts sans le contenu :
    ls -al /etc/cron.*

    -rw-r--r-- 1 root root    8 11 févr. 18:13 /etc/cron.allow

    /etc/cron.d:
    total 32
    drwxr-xr-x  2 root root 4096  8 févr. 20:06 .
    drwxr-xr-x 89 root root 4096 17 févr. 22:03 ..
    -rw-r--r--  1 root root  802 16 avril  2023 certbot
    -rw-r--r--  1 root root  695  2 janv.  2021 clamav-unofficial-sigs -rw-r--r--  1 root root  201  5 mars   2023 e2scrub_all
    -rw-r--r--  1 root root  712 13 juil.  2022 php
    -rw-r--r--  1 root root  102  2 mars   2023 .placeholder
    -rw-r--r--  1 root root  163  4 sept. 15:18 sync

    /etc/cron.daily:
    total 56
    drwxr-xr-x  2 root root 4096 11 févr. 22:22 .
    drwxr-xr-x 89 root root 4096 17 févr. 22:03 ..
    -rwxr-xr-x  1 root root  268  4 oct.   2020 00logwatch
    -rwxr-xr-x  1 root root  539  9 juin   2022 apache2
    -rwxr-xr-x  1 root root 1478 25 mai    2023 apt-compat
    -rwxr-xr-x  1 root root   80 30 août   2021 automysqlbackup
    -rw-r--r--  1 root root  535 11 févr. 22:22 clamav
    -rwxr-xr-x  1 root root  123 27 mars   2023 dpkg
    -rwxr-xr-x  1 root root 4722 29 sept. 22:38 exim4-base
    -rwxr-xr-x  1 root root 2211 10 févr.  2018 locate
    -rwxr-xr-x  1 root root  377 14 déc.   2022 logrotate
    -rwxr-xr-x  1 root root 1395 12 mars   2023 man-db
    -rw-r--r--  1 root root  102  2 mars   2023 .placeholder

    /etc/cron.hourly:
    total 12
    drwxr-xr-x  2 root root 4096 12 juil.  2023 .
    drwxr-xr-x 89 root root 4096 17 févr. 22:03 ..
    -rw-r--r--  1 root root  102  2 mars   2023 .placeholder

    /etc/cron.monthly:
    total 12
    drwxr-xr-x  2 root root 4096 12 juil.  2023 .
    drwxr-xr-x 89 root root 4096 17 févr. 22:03 ..
    -rw-r--r--  1 root root  102  2 mars   2023 .placeholder

    /etc/cron.weekly:
    total 16
    drwxr-xr-x  2 root root 4096 12 juil.  2023 .
    drwxr-xr-x 89 root root 4096 17 févr. 22:03 ..
    -rwxr-xr-x  1 root root 1055 12 mars   2023 man-db
    -rw-r--r--  1 root root  102  2 mars   2023 .placeholder

    /etc/cron.yearly:
    total 12
    drwxr-xr-x  2 root root 4096 12 juil.  2023 .
    drwxr-xr-x 89 root root 4096 17 févr. 22:03 ..
    -rw-r--r--  1 root root  102  2 mars   2023 .placeholder

    ##############################################################################################################################

    # Sauvegarder les fichiers crontab de tous les utilisateurs présents
    dans le fichier /etc/passwd vers un fichier /root/crontab :
    for user in $(cut -f1 -d: /etc/passwd); do echo -e "\n\n==> $user:" ;
    crontab -u $user -l ; done > /root/crontab 2>&1

    ##############################################################################################################################

    <!DOCTYPE html>
    <html>
    <head>

    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    </head>
    <body text="#000000" bgcolor="#929292">
    <p>Bonjour,<br>
    <br>
    Voilà ma question : Comment remplacer l'utilisateur root pour
    utiliser le service cron ?<br>
    <br> ##############################################################################################################################<br>
    ##############################################################################################################################</p>
    <p>Utiliser cron et crontab sur Debian 12.<br>
    Un utilisateur sudoer est créé pour utiliser sudo et administrer
    le système.<br>
    <b>
    L'utilisateur root a été désactivé sur le système Debian et le
    mot de passe est forcé pour expirer.</b></p>
    <p>
    Des erreurs s'affichent dans journalctl, les tâches cron de
    l'utilisateur root ne sont pas lancées :<br>
    </p>
    <p><b>SERVEUR cron : Authentication failure<br>
    Password root of that user should be expried.</b></p>
    <p>Le compte utilisateur root est verrouillé et le mot de passe est
    forcé pour expirer, il ne peut être utilisé pour lancer des tâches
    cron.</p>
    <p><b>COMMENT CREER UN UTILISATEUR POUR REMPLACER ROOT ET UTILISER
    SA CRONTAB ?</b></p>
    <p>Créer un utilisateur pour remplacer root :<br>
    sudo adduser gestionnaire<br>
    sudo bash<br>
    echo "gestionnaire ALL=(ALL) ALL" &gt;&gt; /etc/sudoers<br>
    echo "gestionnaire ALL=(ALL) NOPASSWD:ALL" &gt;&gt; /etc/sudoers<br>
    <br>
    Ajouter gestionnaire au groupe cron :<br>
    gpasswd -a gestionnaire cron</p>
    <p>
    Lorsque un utilisateur est ajouté au groupe cron, se déconnecter
    et se reconnecter pour rendre l'ajout au groupe effectif.</p>
    <p><b>Comment faire comprendre au système qu'il faut utiliser le
    nouvel utilisateur pour lancer les tâches cron du système ?</b></p>
    <p><b>( la crontab de l'utilisateur sudoer, la crontab de
    l'utilisateur gestionnaire, les tâches cron.daily ..... , les
    tâches des services dans le dossier cron.d )<br>
    </b></p>
    <p>##############################################################################################################################<br>
    ##############################################################################################################################</p>
    <p><br>
    <br>
    <br>
    <br>
    <br>
    La recherche actuelle :<br>
    </p>
    <p><b>( Les tâches cron.daily ..... , les tâches des services dans
    le dossier cron.d ne fonctionnent pas </b><b>" cron </b><b>: </b><b>Authentication
    failure " </b><b>)<br>
    </b></p>
    <p>##############################################################################################################################<br>
    <br>
    Utiliser cron et crontab sur Debian 12.<br>
    Un utilisateur sudoer est créé pour utiliser sudo et administrer
    le système.<br>
    <br>
    L'utilisateur root a été désactivé sur le système Debian et le mot
    de passe est forcé pour expirer.<br>
    <br>
    Des erreurs s'affichent dans journalctl, les tâches cron de
    l'utilisateur root ne sont pas lancées.<br>
    <br> ##############################################################################################################################<br>
    <br>
    sudo journalctl -p err<br>
    févr. 11 16:25:01 SERVEUR CRON[874565]: pam_unix(cron:account):
    account root has expired (account expired)<br>
    <b>févr. 11 16:25:01 SERVEUR cron[874565]: Authentication failure &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;</b><br>
    sudo[874537]: pam_unix(sudo:session): session closed for user root<br>
    <br>
    Le compte utilisateur root est verrouillé et ne peut être utilisé
    pour lancer des tâches cron.<br>
    <b>Password root of that user should be expried. &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;</b><br>
    <br> ##############################################################################################################################<br>
    <br>
    <b>COMMENT CREER UN UTILISATEUR ROOT POUR REMPLACER ROOT ET
    UTILISER SA CRONTAB ? &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;</b><br>
    Comment exécuter une commande exigeant un plus haut niveau de
    permission (root ou racine) ?<br>
    <br>
    <br>
    Créer un utilisateur pour remplacer root :<br>
    sudo adduser gestionnaire<br>
    sudo bash<br>
    echo "gestionnaire ALL=(ALL) ALL" &gt;&gt; /etc/sudoers<br>
    echo "gestionnaire ALL=(ALL) NOPASSWD:ALL" &gt;&gt; /etc/sudoers<br>
    <br>
    Ajouter gestionnaire au groupe cron :<br>
    gpasswd -a gestionnaire cron<br>
    Lorsque un utilisateur est ajouté au groupe cron, se déconnecter
    et se reconnecter pour rendre l'ajout au groupe effectif.<br>
    <br>
    <b>Comment faire comprendre au système qu'il faut utiliser
    gestionnaire pour lancer les tâches cron ?</b><br>
    ...<br>
    ...<br>
    <br>
    <br> ##############################################################################################################################<br>
    <br>
    sudo systemctl stop cron<br>
    sudo systemctl start cron<br>
    sudo systemctl restart cron<br>
    <br>
    # Identifier les processus cron :<br>
    sudo systemctl status cron<br>
    # Arrêter un processus cron :<br>
    sudo kill PID<br>
    <br> ##############################################################################################################################<br>
    <br>
    # Afficher le crontab de l'utilisateur courant :<br>
    crontab -l<br>
    <br>
    # Editer le crontab de l'utilisateur courant :<br>
    crontab -e<br>
    <br>
    # Editer le crontab de l'utilisateur root :<br>
    sudo crontab -e<br>
    <br>
    # Modifier la crontab d'un autre utilisateur :<br>
    sudo crontab -e -u nom_utilisateur<br>
    <br> ##############################################################################################################################<br>
    <br>
    # Définir un éditeur de commandes pour éditer les crontabs :<br>
    sudo update-alternatives --config editor<br>
    # Ou :<br>
    select-editor<br>
    # Ou :<br>
    export EDITOR=/usr/bin/nano<br>
    <br> ##############################################################################################################################<br>
    <br>
    Une tâche cron est exécutée dans un shell non connecté (non-login)
    et non interactif. Les variables d'environnement habituelles et en
    particulier PATH ne sont pas connues.<br>
    Il faut donc soit mettre les emplacements complets des exécutables
    dans les commandes et les scripts appelés par cron, soit définir
    PATH dans le fichier crontab :<br>
    Exemple :<br>
    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin<br>
    <br>
    Exemple :<br>
    SHELL=/bin/bash<br>
    PATH=/home/USER/bin:/usr/local/bin:/usr/bin<br>
    <a class="moz-txt-link-abbreviated" href="mailto:MAILTO=mail@domain.ext">MAILTO=mail@domain.ext</a><br>
    <br> ##############################################################################################################################<br>
    <br>
    Afficher les règles cron de l'utilisateur root avec sudo :<br>
    sudo crontab -e<br>
    L'utilisateur root peut utiliser le fichier /etc/crontab ou le
    répertoire /etc/cron.d/ pour ajouter des tâches, en précisant le
    nom d'utilisateur root.<br>
    <br> ##############################################################################################################################<br>
    <br>
    # Lister les tâches cron planifiées sur le système depuis les
    dossiers suivants :<br>
    <br>
    /etc/cron.hourly/<br>
    <br>
    cd cron.daily/<br>
    /etc/cron.daily# ls<br>
    00logwatch  apache2  apt-compat  automysqlbackup  clamav  dpkg   
    exim4-base  locate  logrotate  man-db &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;<br>
    <br>
    /etc/cron.weekly# ls -la<br>
    ls -la<br>
    total 16<br>
    drwxr-xr-x  2 root root 4096 12 juil.  2023 .<br>
    drwxr-xr-x 89 root root 4096 17 févr. 18:35 ..<br>
    -rwxr-xr-x  1 root root 1055 12 mars   2023 man-db &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;<br>
    -rw-r--r--  1 root root  102  2 mars   2023 .placeholder<br>
    <br>
    /etc/cron.monthly<br>
    <br>
    /etc/cron.yearly<br>
    <br> ##############################################################################################################################<br>
    <br>
    # Contrairement aux lignes d'un fichier crontab, les fichiers
    suivants doivent préciser quel utilisateur exécute le script :<br>
    # * * * * * nom_utilisateur /bin/touch /path/fichier<br>
    cd /etc/cron.d &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;<br>
    ls -la<br>
    -rw-r--r--  1 root root  802 16 avril  2023 certbot<br>
    -rw-r--r--  1 root root  695  2 janv.  2021 clamav-unofficial-sigs<br>
    -rw-r--r--  1 root root  201  5 mars   2023 e2scrub_all<br>
    -rw-r--r--  1 root root  712 13 juil.  2022 php<br>
    -rw-r--r--  1 root root  102  2 mars   2023 .placeholder<br>
    -rw-r--r--  1 root root  163  4 sept. 15:18 sync<br>
    <br> ##############################################################################################################################<br>
    <br>
    # SHELL est le shell dans lequel sera executé cron.<br>
    # Si ce dernier n'est pas spécifié, l'entrée de l'utilisateur sera
    prise par défaut dans le fichier /etc/passwd :<br>
    cat /etc/passwd<br>
    root:x:0:0:root:/root:/bin/bash<br>
    ...<br>
    <br>
    HOME est le répertoire home de cron. (???) &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;<br>
    Si aucun n'est spécifiée, ce sera l'entrée de /etc/passwd qui sera
    utilisée. (???)<br>
    <br> ##############################################################################################################################<br>
    <br>
    # Editer avec root le fichier /etc/group :<br>
    sudo nano /etc/group<br>
    <br>
    # Ajouter un utilisateur autorisé à utiliser cron dans le group
    crontab :<br>
    crontab:x:101:amis_sh </p>
    <p>( Je n'ai pas encore ajouté l'utilisateur gestionnaire. )<br>
    <br> ##############################################################################################################################<br>
    <br>
    Tout utilisateur que vous souhaitez pouvoir exécuter des tâches
    cron doit être répertorié dans /etc/cron.allow (un utilisateur par
    ligne).<br>
    Si le fichier cron.allow n’existe pas, mais que le fichier
    /etc/cron.deny existe, alors l'utilisateur ne doit pas y être
    répertorié.<br>
    nano /etc/cron.allow<br>
    Ajouter amis_sh<br>
    <br>
    Dans le cas où les deux fichiers n'existent pas, seul
    l'utilisateur root est éligible pour exécuter des tâches cron.<br>
    <br>
    Lister les utilisateurs et leur crontabs :<br>
    cd /var/spool/cron/crontabs<br>

    [continued in next message]

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From k6dedijon@free.fr@21:1/5 to All on Tue Feb 20 06:00:01 2024
    Bonjour,
    Je découvre ce fil de discussion.
    Je ne comprends pas que l'on puisse encore travailler avec CRON.
    Alors que ANACRON est indépendant de la période de fonctionnement du PC.

    Peut-etre que vous pourriez trouver une piste de solution dans l'article de Léa Linux espliquant les fonctionalités de at, cron et anacron.
    https://lea-linux.org/documentations/Programmation_de_travaux_avec_at_cron_anacron

    Bon courage
    Cassis


    ----- Mail d'origine -----
    De: Bernard Bass <bernard.bass@visionduweb.com>
    À: Liste Debian <debian-user-french@lists.debian.org>
    Envoyé: Sun, 18 Feb 2024 00:32:25 +0100 (CET)
    Objet: Comment remplacer l'utilisateur root pour utiliser le service cron ?

    Bonjour,

    Voilà ma question : Comment remplacer l'utilisateur root pour utiliser
    le service cron ?

    ##############################################################################################################################
    ##############################################################################################################################

    Utiliser cron et crontab sur Debian 12.
    Un utilisateur sudoer est créé pour utiliser sudo et administrer le système. *L'utilisateur root a été désactivé sur le système Debian et le mot de passe est forcé pour expirer.*

    Des erreurs s'affichent dans journalctl, les tâches cron de
    l'utilisateur root ne sont pas lancées :

    *SERVEUR cron : Authentication failure
    Password root of that user should be expried.*

    Le compte utilisateur root est verrouillé et le mot de passe est forcé
    pour expirer, il ne peut être utilisé pour lancer des tâches cron.

    *COMMENT CREER UN UTILISATEUR POUR REMPLACER ROOT ET UTILISER SA CRONTAB ?*

    Créer un utilisateur pour remplacer root :
    sudo adduser gestionnaire
    sudo bash
    echo "gestionnaire ALL=(ALL) ALL" >> /etc/sudoers
    echo "gestionnaire ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers

    Ajouter gestionnaire au groupe cron :
    gpasswd -a gestionnaire cron

    Lorsque un utilisateur est ajouté au groupe cron, se déconnecter et se reconnecter pour rendre l'ajout au groupe effectif.

    *Comment faire comprendre au système qu'il faut utiliser le nouvel utilisateur pour lancer les tâches cron du système ?*

    *( la crontab de l'utilisateur sudoer, la crontab de l'utilisateur gestionnaire, les tâches cron.daily ..... , les tâches des services dans
    le dossier cron.d )
    *

    ##############################################################################################################################
    ##############################################################################################################################






    La recherche actuelle :

    *( Les tâches cron.daily ..... , les tâches des services dans le dossier cron.d ne fonctionnent pas **" cron **: **Authentication failure " **)
    *

    ##############################################################################################################################

    Utiliser cron et crontab sur Debian 12.
    Un utilisateur sudoer est créé pour utiliser sudo et administrer le système.

    L'utilisateur root a été désactivé sur le système Debian et le mot de passe est forcé pour expirer.

    Des erreurs s'affichent dans journalctl, les tâches cron de
    l'utilisateur root ne sont pas lancées.

    ##############################################################################################################################

    sudo journalctl -p err
    févr. 11 16:25:01 SERVEUR CRON[874565]: pam_unix(cron:account): account
    root has expired (account expired)
    *févr. 11 16:25:01 SERVEUR cron[874565]: Authentication failure <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*
    sudo[874537]: pam_unix(sudo:session): session closed for user root

    Le compte utilisateur root est verrouillé et ne peut être utilisé pour lancer des tâches cron.
    *Password root of that user should be expried. <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*

    ##############################################################################################################################

    *COMMENT CREER UN UTILISATEUR ROOT POUR REMPLACER ROOT ET UTILISER SA
    CRONTAB ? <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<*
    Comment exécuter une commande exigeant un plus haut niveau de permission (root ou racine) ?


    Créer un utilisateur pour remplacer root :
    sudo adduser gestionnaire
    sudo bash
    echo "gestionnaire ALL=(ALL) ALL" >> /etc/sudoers
    echo "gestionnaire ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers

    Ajouter gestionnaire au groupe cron :
    gpasswd -a gestionnaire cron
    Lorsque un utilisateur est ajouté au groupe cron, se déconnecter et se reconnecter pour rendre l'ajout au groupe effectif.

    *Comment faire comprendre au système qu'il faut utiliser gestionnaire
    pour lancer les tâches cron ?*
    ...
    ...


    ##############################################################################################################################

    sudo systemctl stop cron
    sudo systemctl start cron
    sudo systemctl restart cron

    # Identifier les processus cron :
    sudo systemctl status cron
    # Arrêter un processus cron :
    sudo kill PID

    ##############################################################################################################################

    # Afficher le crontab de l'utilisateur courant :
    crontab -l

    # Editer le crontab de l'utilisateur courant :
    crontab -e

    # Editer le crontab de l'utilisateur root :
    sudo crontab -e

    # Modifier la crontab d'un autre utilisateur :
    sudo crontab -e -u nom_utilisateur

    ##############################################################################################################################

    # Définir un éditeur de commandes pour éditer les crontabs :
    sudo update-alternatives --config editor
    # Ou :
    select-editor
    # Ou :
    export EDITOR=/usr/bin/nano

    ##############################################################################################################################

    Une tâche cron est exécutée dans un shell non connecté (non-login) et
    non interactif. Les variables d'environnement habituelles et en
    particulier PATH ne sont pas connues.
    Il faut donc soit mettre les emplacements complets des exécutables dans
    les commandes et les scripts appelés par cron, soit définir PATH dans le fichier crontab :
    Exemple :
    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

    Exemple :
    SHELL=/bin/bash
    PATH=/home/USER/bin:/usr/local/bin:/usr/bin
    MAILTO=mail@domain.ext

    ##############################################################################################################################

    Afficher les règles cron de l'utilisateur root avec sudo :
    sudo crontab -e
    L'utilisateur root peut utiliser le fichier /etc/crontab ou le
    répertoire /etc/cron.d/ pour ajouter des tâches, en précisant le nom d'utilisateur root.

    ##############################################################################################################################

    # Lister les tâches cron planifiées sur le système depuis les dossiers suivants :

    /etc/cron.hourly/

    cd cron.daily/
    /etc/cron.daily# ls
    00logwatch  apache2  apt-compat  automysqlbackup  clamav  dpkg exim4-base  locate  logrotate  man-db <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

    /etc/cron.weekly# ls -la
    ls -la
    total 16
    drwxr-xr-x  2 root root 4096 12 juil.  2023 .
    drwxr-xr-x 89 root root 4096 17 févr. 18:35 ..
    -rwxr-xr-x  1 root root 1055 12 mars   2023 man-db <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    -rw-r--r--  1 root root  102  2 mars   2023 .placeholder

    /etc/cron.monthly

    /etc/cron.yearly

    ##############################################################################################################################

    # Contrairement aux lignes d'un fichier crontab, les fichiers suivants
    doivent préciser quel utilisateur exécute le script :
    # * * * * * nom_utilisateur /bin/touch /path/fichier
    cd /etc/cron.d <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    ls -la
    -rw-r--r--  1 root root  802 16 avril  2023 certbot
    -rw-r--r--  1 root root  695  2 janv.  2021 clamav-unofficial-sigs -rw-r--r--  1 root root  201  5 mars   2023 e2scrub_all
    -rw-r--r--  1 root root  712 13 juil.  2022 php
    -rw-r--r--  1 root root  102  2 mars   2023 .placeholder
    -rw-r--r--  1 root root  163  4 sept. 15:18 sync

    ##############################################################################################################################

    # SHELL est le shell dans lequel sera executé cron.
    # Si ce dernier n'est pas spécifié, l'entrée de l'utilisateur sera prise par défaut dans le fichier /etc/passwd :
    cat /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    ...

    HOME est le répertoire home de cron. (???) <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    Si aucun n'est spécifiée, ce sera l'entrée de /etc/passwd qui sera utilisée. (???)

    ##############################################################################################################################

    # Editer avec root le fichier /etc/group :
    sudo nano /etc/group

    # Ajouter un utilisateur autorisé à utiliser cron dans le group crontab : crontab:x:101:amis_sh

    ( Je n'ai pas encore ajouté l'utilisateur gestionnaire. )

    ##############################################################################################################################

    Tout utilisateur que vous souhaitez pouvoir exécuter des tâches cron
    doit être répertorié dans /etc/cron.allow (un utilisateur par ligne).
    Si le fichier cron.allow n’existe pas, mais que le fichier
    /etc/cron.deny existe, alors l'utilisateur ne doit pas y être répertorié. nano /etc/cron.allow
    Ajouter amis_sh

    Dans le cas où les deux fichiers n'existent pas, seul l'utilisateur root
    est éligible pour exécuter des tâches cron.

    Lister les utilisateurs et leur crontabs :
    cd /var/spool/cron/crontabs
    ls
    amis_sh  root

    Vérifier les droits du fichier /var/spool/cron/crontabs/amis_sh
    cd /var/spool/cron/crontabs/
    ls -la
    -rw------- 1 amis_sh crontab 1714 11 févr. 22:35 amis_sh
    -rw------- 1 root    crontab  922 11 févr. 16:38 root

    ##############################################################################################################################

    Pour executer un script avec sudo sans avoir à donner le mot de passe :
    sudo nano /etc/sudoers

    Préférer le dossier "/etc/sudoers.d" : il sert à stocker des fichiers déclaratifs pour sudoers qui seront lus en complément du fichier sudoers. Attention, tous les fichiers qui contiennent "~" ou "." dans le nom ne
    seront pas lus !
    Organiser les règles par fichier plutôt que de tout centraliser dans le même fichier : le fichier sudoers sera toujours lu, dans tous les cas.

    Pour créer un nouveau fichier nommé "amis_sh", on utilisera :
    sudo visudo /etc/sudoers.d/amis_sh
    sudo chmod 440 /etc/sudoers.d/amis_sh

    Ajouter deux ligne pour le script sudoer à autoriser :
    amis_sh ALL=(ALL:ALL) ALL
    amis_sh ALL=(ALL) NOPASSWD:/home/amis_sh/test-crontab-sudo.sh
    ### amis_sh ALL=(root) NOPASSWD: /home/amis_sh/test-crontab-sudo.sh

    Note: in sudoers, the last match wins.

    40 18 11 2 * sudo ./test-crontab-sudo.sh >> updates.log 2>&1

    chmod +x /home/amis_sh/test-crontab-sudo.sh

    ##############################################################################################################################

    # Exemple de la crontab de l'utilisateur amis-sh :

    crontab -e

    ###################################################
    # Sauvegarder les règles de l'utilisateur amis_sh par mail :
    # sudo bash
    # mailx -a /var/spool/cron/crontabs/amis_sh -s "/var/spool/cron/crontabs/amis_sh" mail@domain.ext < /var/spool/cron/crontabs/amis_sh

    ################################################### ###################################################
    # Tester crontab
    ################################################### ###################################################
    # Créer un fichier test-crontab.sh :
    # nano test-crontab.sh
    #!/bin/sh
    #touch "/home/amis_sh/crontab-script-sh-ok"; ###################################################

    ###################################################
    # nano test-crontab-sudo.sh
    #!/bin/sh
    #touch "/home/amis_sh/test-crontab-sudo-ok1";
    #su - amis_sh -c "touch test-crontab-sudo-user-ok";
    #touch "/home/amis_sh/test-crontab-sudo-ok2"; ###################################################

    ###################################################
    # Les actions suivantes fonctionnent pour l'utilisateur amis_sh :
    # Mois février jour 11 à 17h 58m.

    # Créer directement un fichier user :
    # 03 19 11 2 * touch /home/amis_sh/crontab-ok

    # Créer un fichier user depuis un script :
    # 03 19 11 2 * /home/amis_sh/test-crontab.sh

    # Créer deux fichier user et un fichier root et un fichier de log depuis
    un script :
    # 22 21 11 2 * user=$(whoami) sudo /home/amis_sh/test-crontab-sudo.sh >> updates.log 2>&1
    ################################################### ###################################################

    ##############################################################################################################################

    # Tester au démarrage de la session ssh :
    # /home/amis_sh/test-crontab-sudo.sh

    ##############################################################################################################################

    # Cette méthode pour ne pas utiliser sudo n'est pas recommandée :
    # Elever les droits setuid sur les scripts exécutés par cron pour ne pas avoir à utiliser sudo :
    # sudo chown root script.sh
    # sudo chmod 710 script.sh
    # sudo chmod u+s script.sh

    ##############################################################################################################################

    Fichiers de configuration de dpkg et cron :

    cat /var/lib/dpkg/info/cron.conffiles
    /etc/cron.d/.placeholder
    /etc/cron.daily/.placeholder
    /etc/cron.hourly/.placeholder
    /etc/cron.monthly/.placeholder
    /etc/cron.weekly/.placeholder
    /etc/crontab
    /etc/default/cron
    /etc/init.d/cron
    /etc/pam.d/cron

    ##############################################################################################################################

    # Exemples de tâches cron :

    01 * * * * root echo "cette commande est exécutée toutes les heures
    passées d'une minute"
    17 8 * * * root echo "Cette commande est exécutée tous les jours à 08h17"
    17 20 * * * root echo "Cette commande est exécutée tous les jours à 20h17" 00 4 * * 0 root echo "Cette commande est exécutée tous les dimanches à 4h00" 42 4 1 * * root echo "Cette commande est exécutée tous les 1er du mois à 4h42"
    01 * 19 07 * root echo "Cette commande est exécutée toutes les heures passées d'une minute tous les 19 Juillet"

    # Mise à jour de locate chaque premier du mois :
    22 2 * * 1    /usr/bin/updatedb

    # Provoquer un reboot la machine chaque 1er et 15 du mois à 2h 30 du matin : 30 2  1,15 * * /sbin/shutdown -r

    # Appeler un script de sauvegarde tous les lundis a 3 h 15 du matin :
    15  3  *  * 1 /usr/bin/backup

    # Exécution tous les quarts d'heure de 15h à 19h du lundi au vendredi seulement en 1ère quinzaine du troisième trimestre :
    0,15,30,45  15-19  1-15  7-9  1-5 <commande>

    # Trouver puis nettoyer le répertoire /tmp des vieux fichiers (non
    modifiés depuis 31 jours) tous les 1er jour de chaque mois, à 2 heures
    du matin :
    0 2 1 * * find /tmp -atime 31 -exec rm -f {} \;

    # Faire apparaitre un message dans la GUI d'un utilisateur à une heure précice
    50 18 * * * export DISPLAY=localhost:0.0; xhost + | zenity --info --text="Reboot de l'ordinateur dans 10min, penser à faire vos sauvegardes"

    # Exécution tous les jours à 22h00 d'une commande et rediriger les infos dans sauvegarde.log :
    00 22 * * * /root/scripts/sauvegarde.sh >> sauvegarde.log


    # Vous pouvez rediriger la sortie (par exemple vers /dev/null si vous
    n’en voulez vraiment pas ) ou dans un fichier de log en utilisant la
    syntaxe suivante :
    cmd >> log.file

    # Ceci redirige la sortie standard et non les erreurs, pour rediriger
    les erreurs, vous devez utiliser la syntaxe suivante :
    cmd >> logfile 2>&1

    Exécuter une commande au démarrage. Pour exécuter une commande une seule fois, juste après le démarrage de l'ordinateur, on peut recourir à la
    macro @reboot (un simple redémarrage de cron ne déclenche pas une
    commande planifiée avec @reboot). Cette macro remplace elle aussi les
    cinq premiers champs d'une entrée dans la crontab.

    @yearly : une fois par an (le premier janvier à 0 h 00) ;
    @monthly : une fois par mois (le premier du mois à 0 h 00) ;
    @weekly : une fois par semaine (le dimanche à 0 h 00) ;
    @daily : une fois par jour (à 0 h 00) ;
    @hourly : une fois par heure (au début de chaque heure).

    ##############################################################################################################################

    # Pour lister les scripts dans /etc/cron.d utiliser :
    cat /etc/cron.d/* | grep "certbot (Mot clé)"


    # Lister les tâches cron par utilisateurs du fichier /etc/passwd.
    for user in $(cut -f1 -d: /etc/passwd); do echo -e "\n\n==> $user:" &&
    crontab -u $user -l; done


    # Ce script ne fonctionne pas sur les crons périodiques (cron.daily, cron.weekly, etc.) qui sont dans des répertoires distincts et non liés à
    un utilisateur mais au système !
    # Lister tous les scripts sans le contenu :
    ls -al /etc/cron.*

    -rw-r--r-- 1 root root    8 11 févr. 18:13 /etc/cron.allow

    /etc/cron.d:
    total 32
    drwxr-xr-x  2 root root 4096  8 févr. 20:06 .
    drwxr-xr-x 89 root root 4096 17 févr. 22:03 ..
    -rw-r--r--  1 root root  802 16 avril  2023 certbot
    -rw-r--r--  1 root root  695  2 janv.  2021 clamav-unofficial-sigs -rw-r--r--  1 root root  201  5 mars   2023 e2scrub_all
    -rw-r--r--  1 root root  712 13 juil.  2022 php
    -rw-r--r--  1 root root  102  2 mars   2023 .placeholder
    -rw-r--r--  1 root root  163  4 sept. 15:18 sync

    /etc/cron.daily:
    total 56
    drwxr-xr-x  2 root root 4096 11 févr. 22:22 .
    drwxr-xr-x 89 root root 4096 17 févr. 22:03 ..
    -rwxr-xr-x  1 root root  268  4 oct.   2020 00logwatch
    -rwxr-xr-x  1 root root  539  9 juin   2022 apache2
    -rwxr-xr-x  1 root root 1478 25 mai    2023 apt-compat
    -rwxr-xr-x  1 root root   80 30 août   2021 automysqlbackup
    -rw-r--r--  1 root root  535 11 févr. 22:22 clamav
    -rwxr-xr-x  1 root root  123 27 mars   2023 dpkg
    -rwxr-xr-x  1 root root 4722 29 sept. 22:38 exim4-base
    -rwxr-xr-x  1 root root 2211 10 févr.  2018 locate
    -rwxr-xr-x  1 root root  377 14 déc.   2022 logrotate
    -rwxr-xr-x  1 root root 1395 12 mars   2023 man-db
    -rw-r--r--  1 root root  102  2 mars   2023 .placeholder

    /etc/cron.hourly:
    total 12
    drwxr-xr-x  2 root root 4096 12 juil.  2023 .
    drwxr-xr-x 89 root root 4096 17 févr. 22:03 ..
    -rw-r--r--  1 root root  102  2 mars   2023 .placeholder

    /etc/cron.monthly:
    total 12
    drwxr-xr-x  2 root root 4096 12 juil.  2023 .
    drwxr-xr-x 89 root root 4096 17 févr. 22:03 ..
    -rw-r--r--  1 root root  102  2 mars   2023 .placeholder

    /etc/cron.weekly:
    total 16
    drwxr-xr-x  2 root root 4096 12 juil.  2023 .
    drwxr-xr-x 89 root root 4096 17 févr. 22:03 ..
    -rwxr-xr-x  1 root root 1055 12 mars   2023 man-db
    -rw-r--r--  1 root root  102  2 mars   2023 .placeholder

    /etc/cron.yearly:
    total 12
    drwxr-xr-x  2 root root 4096 12 juil.  2023 .
    drwxr-xr-x 89 root root 4096 17 févr. 22:03 ..
    -rw-r--r--  1 root root  102  2 mars   2023 .placeholder

    ##############################################################################################################################

    # Sauvegarder les fichiers crontab de tous les utilisateurs présents
    dans le fichier /etc/passwd vers un fichier /root/crontab :
    for user in $(cut -f1 -d: /etc/passwd); do echo -e "\n\n==> $user:" ;
    crontab -u $user -l ; done > /root/crontab 2>&1

    ##############################################################################################################################

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From NoSpam@21:1/5 to All on Tue Feb 20 10:10:01 2024
    Bonjour

    Le 20/02/2024 à 05:54, k6dedijon@free.fr a écrit :
    Bonjour,
    Je découvre ce fil de discussion.
    Je ne comprends pas que l'on puisse encore travailler avec CRON.
    Alors que ANACRON est indépendant de la période de fonctionnement du PC.
    Si on se place d'un point de vue poste de travail. Pour les serveurs,
    aucun intérêt !

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Christophe Maquaire@21:1/5 to All on Tue Feb 20 11:50:01 2024
    Le mardi 20 février 2024 à 10:00 +0100, NoSpam a écrit :
    Bonjour

    Le 20/02/2024 à 05:54, k6dedijon@free.fr a écrit :
    Bonjour,
    Je découvre ce fil de discussion.
    Je ne comprends pas que l'on puisse encore travailler avec CRON.
    Alors que ANACRON est indépendant de la période de fonctionnement
    du PC.
    Si on se place d'un point de vue poste de travail. Pour les serveurs,
    aucun intérêt !

    Y'a même mieux ou pire, c'est selon:

    https://www.freedesktop.org/software/systemd/man/latest/systemd.timer.html

    Comme debian est passé à systemd, autant en profiter ou boire le calice jusqu'à la lie, c'est encore selon.

    Christophe

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)
  • From Christophe Maquaire@21:1/5 to All on Tue Feb 20 14:00:01 2024
    Le mardi 20 février 2024 à 11:19 +0100, Christophe Maquaire a écrit :


    Y'a même mieux ou pire, c'est selon:

    https://www.freedesktop.org/software/systemd/man/latest/systemd.timer.html

    Je continue le prosélytisme:
    In French et illustré par l'exemple:https://wiki.archlinux.org/title/Systemd_(Fran%C3%A7ais)/Timers_(Fran%C3%A7ais)

    Christophe

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)