Page 1 sur 1

[Résolu] Cron – souci de droits root.

Posté : mar. 8 nov. 2022 20:29
par Sima
Bonjour,

Souci avec les tâches cron, ça fonctionne sur un autre serveur, donc?...

Message d’erreur /bin/sh: 1: root: not found

Code : Tout sélectionner

# cat /var/log/backup-rdiff 
/bin/sh: 1: root: not found
Pourtant j’ai bien une contrab en root

Code : Tout sélectionner

# ls -l /var/spool/cron/crontabs/
total 4
-rw------- 1 root crontab 1267 nov.   6 18:14 root
la crontab

Code : Tout sélectionner

# cat /var/spool/cron/crontabs/root
Résultat :

Code : Tout sélectionner

# m h  dom mon dow   command
PATH=/usr/sbin:/usr/bin:/sbin:/bin
SHELL=/bin/sh
MAILTO=""
# m h  dom mon dow   command
0 02	* * *	root	sh	/etc/cron.daily/scripts/save.sh > /var/log/backup-rdiff 2>&1 # Backup
Ce qu'il y a dans save.sh

Code : Tout sélectionner

# cat /etc/cron.daily/save.sh 

#!/bin/bash
# rdiff-backup --include-globbing-filelist /root/scripts/include-dir.txt --exclude '**' / /media/pi/SSD/save-genea/
rdiff-backup / /media/pi/SSD/save-genea/
La première ligne commenté était celle que j'avais testé préalablement et j'avais le même message d'erreur.

Une idée?

Re: Cron – souci de droits root.

Posté : mar. 8 nov. 2022 20:48
par sinoaka
il manquerait pas l’exécution ? je vois que le read write

Re: Cron – souci de droits root.

Posté : mar. 8 nov. 2022 20:53
par sinoaka
sur certaines distrib le root n'as pas de shell, je préfère utiliser cron avec un compte ayant les droits admin configurer dans le sudoers.

Re: Cron – souci de droits root.

Posté : mar. 8 nov. 2022 20:57
par Sima
Le fichier est bien exécutable.

Bonne idée, je vais refaire le script en incluant sudo...

Et je reviens dire ce qu'il en est.

Merci.

Re: Cron – souci de droits root.

Posté : mar. 15 nov. 2022 10:43
par Sima
Reprenons dans l’ordre.

Root n’a pas de Shell mais l’user a accès à sudo sans confirmer le mot de passe (cas dans certaines distributions) d’où la nécessité d’avoir un mot de passe fort pour cet user.

Le script de sauvegarde :

Code : Tout sélectionner

$ sudo cat /etc/cron.daily/backup-rdiff.sh 

Code : Tout sélectionner

#!/bin/bash
sudo rdiff-backup --include-globbing-filelist /root/scripts/dir-source.txt --exclude '**' / /media/pi/SSD/save-genea/
On sauvegarde les répertoires qui sont dans le fichier "dir-source.txt".
--exclude '**' → '**' signifie qu’on exclut tout le reste.

Ce que contient le fichier "dir-source.txt"

Code : Tout sélectionner

$ sudo cat /root/scripts/dir-source.txt

Code : Tout sélectionner

/home/
/etc/
/root/
/var/
/usr/
C’est donc ces répertoires et sous répertoires qui seront sauvegardés.

La crontab

Code : Tout sélectionner

$ sudo crontab -e

Code : Tout sélectionner

PATH=/usr/sbin:/usr/bin:/sbin:/bin
SHELL=/bin/sh
MAILTO=""
# m h  dom mon dow   command
0 2 * * * /etc/cron.daily/backup-rdiff.sh > /var/log/backup-rdiff 2>&1
Là on constate que je n’ai pas mis le user "root" ni même la commande "sh".

Dans le script " backup-rdiff.sh" plus haut on voit qu’il y a l’interpréteur "#!/bin/bash" (Shebang https://fr.wikipedia.org/wiki/Shebang) et l’utilisation de "sudo".
Donc au plus simple.
Résolu.