[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 >> updates.log
2>&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> <
/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 >> updates.log
2>&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 <commande><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 >> 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 >> 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 >> logfile 2>&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==>
$user:" && 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==>
$user:" ; crontab -u $user -l ; done > /root/crontab
2>&1<br>
<br> ##############################################################################################################################<br>
</p>
</body>
</html>
--- SoupGate-Win32 v1.05
* Origin: fsxNet Usenet Gateway (21:1/5)