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

    From Bernard Bass@21:1/5 to All on Sat Feb 17 23:50:01 2024
    [continued from previous message]

    ls<br>
    amis_sh  root<br>
    <br>
    Vérifier les droits du fichier /var/spool/cron/crontabs/amis_sh <br>
    cd /var/spool/cron/crontabs/<br>
    ls -la<br>
    -rw------- 1 amis_sh crontab 1714 11 févr. 22:35 amis_sh<br>
    -rw------- 1 root    crontab  922 11 févr. 16:38 root<br>
    <br> ##############################################################################################################################<br>
    <br>
    Pour executer un script avec sudo sans avoir à donner le mot de
    passe :<br>
    sudo nano /etc/sudoers<br>
    <br>
    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.<br>
    Attention, tous les fichiers qui contiennent "~" ou "." dans le
    nom ne seront pas lus !<br>
    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.<br>
    <br>
    Pour créer un nouveau fichier nommé "amis_sh", on utilisera :<br>
    sudo visudo /etc/sudoers.d/amis_sh<br>
    sudo chmod 440 /etc/sudoers.d/amis_sh<br>
    <br>
    Ajouter deux ligne pour le script sudoer à autoriser :<br>
    amis_sh ALL=(ALL:ALL) ALL<br>
    amis_sh ALL=(ALL) NOPASSWD:/home/amis_sh/test-crontab-sudo.sh<br>
    ### amis_sh ALL=(root) NOPASSWD:
    /home/amis_sh/test-crontab-sudo.sh<br>
    <br>
    Note: in sudoers, the last match wins.<br>
    <br>
    40 18 11 2 * sudo ./test-crontab-sudo.sh &gt;&gt; updates.log
    2&gt;&amp;1<br>
    <br>
    chmod +x /home/amis_sh/test-crontab-sudo.sh<br>
    <br> ##############################################################################################################################<br>
    <br>
    # Exemple de la crontab de l'utilisateur amis-sh :<br>
    <br>
    crontab -e<br>
    <br>
    ###################################################<br>
    # Sauvegarder les règles de l'utilisateur amis_sh par mail :<br>
    # sudo bash<br>
    # mailx -a /var/spool/cron/crontabs/amis_sh -s
    "/var/spool/cron/crontabs/amis_sh" <a class="moz-txt-link-abbreviated" href="mailto:mail@domain.ext">mail@domain.ext</a> &lt;
    /var/spool/cron/crontabs/amis_sh<br>
    <br>
    ###################################################<br>
    ###################################################<br>
    # Tester crontab<br>
    ###################################################<br>
    ###################################################<br>
    # Créer un fichier test-crontab.sh :<br>
    # nano test-crontab.sh<br>
    #!/bin/sh<br>
    #touch "/home/amis_sh/crontab-script-sh-ok";<br>
    ###################################################<br>
    <br>
    ###################################################<br>
    # nano test-crontab-sudo.sh<br>
    #!/bin/sh<br>
    #touch "/home/amis_sh/test-crontab-sudo-ok1";<br>
    #su - amis_sh -c "touch test-crontab-sudo-user-ok";<br>
    #touch "/home/amis_sh/test-crontab-sudo-ok2";<br>
    ###################################################<br>
    <br>
    ###################################################<br>
    # Les actions suivantes fonctionnent pour l'utilisateur amis_sh :<br>
    # Mois février jour 11 à 17h 58m.<br>
    <br>
    # Créer directement un fichier user :<br>
    # 03 19 11 2 * touch /home/amis_sh/crontab-ok<br>
    <br>
    # Créer un fichier user depuis un script :<br>
    # 03 19 11 2 * /home/amis_sh/test-crontab.sh<br>
    <br>
    # Créer deux fichier user et un fichier root et un fichier de log
    depuis un script :<br>
    # 22 21 11 2 * user=$(whoami) sudo
    /home/amis_sh/test-crontab-sudo.sh &gt;&gt; updates.log
    2&gt;&amp;1<br>
    ###################################################<br>
    ###################################################<br>
    <br> ##############################################################################################################################<br>
    <br>
    # Tester au démarrage de la session ssh :<br>
    # /home/amis_sh/test-crontab-sudo.sh<br>
    <br> ##############################################################################################################################<br>
    <br>
    # Cette méthode pour ne pas utiliser sudo n'est pas recommandée :<br>
    # Elever les droits setuid sur les scripts exécutés par cron pour
    ne pas avoir à utiliser sudo :<br>
    # sudo chown root script.sh<br>
    # sudo chmod 710 script.sh<br>
    # sudo chmod u+s script.sh<br>
    <br> ##############################################################################################################################<br>
    <br>
    Fichiers de configuration de dpkg et cron :<br>
    <br>
    cat /var/lib/dpkg/info/cron.conffiles<br>
    /etc/cron.d/.placeholder<br>
    /etc/cron.daily/.placeholder<br>
    /etc/cron.hourly/.placeholder<br>
    /etc/cron.monthly/.placeholder<br>
    /etc/cron.weekly/.placeholder<br>
    /etc/crontab<br>
    /etc/default/cron<br>
    /etc/init.d/cron<br>
    /etc/pam.d/cron<br>
    <br> ##############################################################################################################################<br>
    <br>
    # Exemples de tâches cron :<br>
    <br>
    01 * * * * root echo "cette commande est exécutée toutes les
    heures passées d'une minute"<br>
    17 8 * * * root echo "Cette commande est exécutée tous les jours à
    08h17"<br>
    17 20 * * * root echo "Cette commande est exécutée tous les jours
    à 20h17"<br>
    00 4 * * 0 root echo "Cette commande est exécutée tous les
    dimanches à 4h00"<br>
    42 4 1 * * root echo "Cette commande est exécutée tous les 1er du
    mois à 4h42"<br>
    01 * 19 07 * root echo "Cette commande est exécutée toutes les
    heures passées d'une minute tous les 19 Juillet"<br>
    <br>
    # Mise à jour de locate chaque premier du mois :<br>
    22 2 * * 1    /usr/bin/updatedb<br>
    <br>
    # Provoquer un reboot la machine chaque 1er et 15 du mois à 2h 30
    du matin :<br>
    30 2  1,15 * * /sbin/shutdown -r<br>
    <br>
    # Appeler un script de sauvegarde tous les lundis a 3 h 15 du
    matin :<br>
    15  3  *  * 1 /usr/bin/backup<br>
    <br>
    # Exécution tous les quarts d'heure de 15h à 19h du lundi au
    vendredi seulement en 1ère quinzaine du troisième trimestre :<br>
    0,15,30,45  15-19  1-15  7-9  1-5 &lt;commande&gt;<br>
    <br>
    # 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 :<br>
    0 2 1 * * find /tmp -atime 31 -exec rm -f {} \;<br>
    <br>
    # Faire apparaitre un message dans la GUI d'un utilisateur à une
    heure précice<br>
    50 18 * * * export DISPLAY=localhost:0.0; xhost + | zenity --info
    --text="Reboot de l'ordinateur dans 10min, penser à faire vos
    sauvegardes"<br>
    <br>
    # Exécution tous les jours à 22h00 d'une commande et rediriger les
    infos dans sauvegarde.log :<br>
    00 22 * * * /root/scripts/sauvegarde.sh &gt;&gt; sauvegarde.log<br>
    <br>
    <br>
    # 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 :<br>
    cmd &gt;&gt; log.file<br>
    <br>
    # Ceci redirige la sortie standard et non les erreurs, pour
    rediriger les erreurs, vous devez utiliser la syntaxe suivante :<br>
    cmd &gt;&gt; logfile 2&gt;&amp;1<br>
    <br>
    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.<br>
    <br>
    @yearly : une fois par an (le premier janvier à 0 h 00) ;<br>
    @monthly : une fois par mois (le premier du mois à 0 h 00) ;<br>
    @weekly : une fois par semaine (le dimanche à 0 h 00) ;<br>
    @daily : une fois par jour (à 0 h 00) ;<br>
    @hourly : une fois par heure (au début de chaque heure).<br>
    <br> ##############################################################################################################################<br>
    <br>
    # Pour lister les scripts dans /etc/cron.d utiliser :<br>
    cat /etc/cron.d/* | grep "certbot (Mot clé)"<br>
    <br>
    <br>
    # Lister les tâches cron par utilisateurs du fichier /etc/passwd.<br>
    for user in $(cut -f1 -d: /etc/passwd); do echo -e "\n\n==&gt;
    $user:" &amp;&amp; crontab -u $user -l; done<br>
    <br>
    <br>
    # 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 !<br>
    # Lister tous les scripts sans le contenu :<br>
    ls -al /etc/cron.*<br>
    <br>
    -rw-r--r-- 1 root root    8 11 févr. 18:13 /etc/cron.allow<br>
    <br>
    /etc/cron.d:<br>
    total 32<br>
    drwxr-xr-x  2 root root 4096  8 févr. 20:06 .<br>
    drwxr-xr-x 89 root root 4096 17 févr. 22:03 ..<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>
    /etc/cron.daily:<br>
    total 56<br>
    drwxr-xr-x  2 root root 4096 11 févr. 22:22 .<br>
    drwxr-xr-x 89 root root 4096 17 févr. 22:03 ..<br>
    -rwxr-xr-x  1 root root  268  4 oct.   2020 00logwatch<br>
    -rwxr-xr-x  1 root root  539  9 juin   2022 apache2<br>
    -rwxr-xr-x  1 root root 1478 25 mai    2023 apt-compat<br>
    -rwxr-xr-x  1 root root   80 30 août   2021 automysqlbackup<br>
    -rw-r--r--  1 root root  535 11 févr. 22:22 clamav<br>
    -rwxr-xr-x  1 root root  123 27 mars   2023 dpkg<br>
    -rwxr-xr-x  1 root root 4722 29 sept. 22:38 exim4-base<br>
    -rwxr-xr-x  1 root root 2211 10 févr.  2018 locate<br>
    -rwxr-xr-x  1 root root  377 14 déc.   2022 logrotate<br>
    -rwxr-xr-x  1 root root 1395 12 mars   2023 man-db<br>
    -rw-r--r--  1 root root  102  2 mars   2023 .placeholder<br>
    <br>
    /etc/cron.hourly:<br>
    total 12<br>
    drwxr-xr-x  2 root root 4096 12 juil.  2023 .<br>
    drwxr-xr-x 89 root root 4096 17 févr. 22:03 ..<br>
    -rw-r--r--  1 root root  102  2 mars   2023 .placeholder<br>
    <br>
    /etc/cron.monthly:<br>
    total 12<br>
    drwxr-xr-x  2 root root 4096 12 juil.  2023 .<br>
    drwxr-xr-x 89 root root 4096 17 févr. 22:03 ..<br>
    -rw-r--r--  1 root root  102  2 mars   2023 .placeholder<br>
    <br>
    /etc/cron.weekly:<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. 22:03 ..<br>
    -rwxr-xr-x  1 root root 1055 12 mars   2023 man-db<br>
    -rw-r--r--  1 root root  102  2 mars   2023 .placeholder<br>
    <br>
    /etc/cron.yearly:<br>
    total 12<br>
    drwxr-xr-x  2 root root 4096 12 juil.  2023 .<br>
    drwxr-xr-x 89 root root 4096 17 févr. 22:03 ..<br>
    -rw-r--r--  1 root root  102  2 mars   2023 .placeholder<br>
    <br> ##############################################################################################################################<br>
    <br>
    # Sauvegarder les fichiers crontab de tous les utilisateurs
    présents dans le fichier /etc/passwd vers un fichier /root/crontab
    :<br>
    for user in $(cut -f1 -d: /etc/passwd); do echo -e "\n\n==&gt;
    $user:" ; crontab -u $user -l ; done &gt; /root/crontab
    2&gt;&amp;1<br>
    <br> ##############################################################################################################################<br>
    </p>
    </body>
    </html>

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