OVH Cloud OVH Cloud

crontab

10 réponses
Avatar
jip
bonjour,

je suis sous Mandrake 9.2

j'ai un script de sauvegardes à lancer chaque nuit.
il fonctionne ;-) s'il est lancé par root par un ./sauve.sh

si je veux le lancer via la crontab d'un utilisateur normal,
il ne peut pas correctement s'effectuer car il veut
accéder à des fichiers pour lesquels il n'a pas les
droits... (c'est normal...)

si je lance: crontab en su, j'ai le message:
You (root) are not allowed to use this program (crontab)
See crontab(1) for more information

mais dans crontab(1) je ne trouve pas la raison !
je n'ai ni fichier allow ni fichier deny mais
un utilisateur normal peut créer et gérer sa crontab.
seul root en est interdit !
y'a un truc qui m'échappe.

bon we
jip

10 réponses

Avatar
Guillaume
bonjour,


Bonjour,

j'ai un script de sauvegardes à lancer chaque nuit.
il fonctionne ;-) s'il est lancé par root par un ./sauve.sh

si je veux le lancer via la crontab d'un utilisateur normal,
il ne peut pas correctement s'effectuer car il veut
accéder à des fichiers pour lesquels il n'a pas les
droits... (c'est normal...)

si je lance: crontab en su, j'ai le message:
You (root) are not allowed to use this program (crontab)
See crontab(1) for more information

mais dans crontab(1) je ne trouve pas la raison !


Le plus propre est de mettre votre script setuid : il pourra
ainsi être lancé par un user, mais s'exécutera avec les droits
de root. Faites man chmod pour en savoir plus, ou consultez
le manuel de l'utilisateur Mandrake.

bon we


Pareillement.


--
Oups

Avatar
jip
Le plus propre est de mettre votre script setuid : il pourra
ainsi être lancé par un user, mais s'exécutera avec les droits
de root. Faites man chmod pour en savoir plus, ou consultez
le manuel de l'utilisateur Mandrake.


merci de cette réponse aussi rapide...
mais le problème reste entier: en effet ce script sauvegarde des
fichiers de divers utilisateurs (y compris root) vers un dossier
où (par précaution) seul root à accès; sauf erreur, mettre le script
en setuid ne suffit pas.
jip

Avatar
TiChou
Dans le message <news:40adc7db$0$22063$,
*Guillaume* tapota sur f.c.o.l.configuration :

j'ai un script de sauvegardes à lancer chaque nuit.
il fonctionne ;-) s'il est lancé par root par un ./sauve.sh

si je veux le lancer via la crontab d'un utilisateur normal,
il ne peut pas correctement s'effectuer car il veut
accéder à des fichiers pour lesquels il n'a pas les
droits... (c'est normal...)



Pourquoi doit-il être lancé par un utilisateur normal ?
Pourquoi ne pas placer le script de sauvegarde dans /etc/cron.daily ou dans
le crontab de root ?

si je lance: crontab en su, j'ai le message:
You (root) are not allowed to use this program (crontab)
See crontab(1) for more information

mais dans crontab(1) je ne trouve pas la raison !



Oui, la commande 'su' n'a jamais été conçue pour être utiliser
intéractivement. C'est une commande utilisateur à utiliser durant une
session login, dixit même le man.

Le plus propre est de mettre votre script setuid : il pourra
ainsi être lancé par un user, mais s'exécutera avec les droits
de root.


Un script ne peut pas être setuid. Le plus propre est d'utiliser sudo. Ou
encore donner les permissions suffisantes à l'utilisateur en question.

--
TiChou


Avatar
jip
si je veux le lancer via la crontab d'un utilisateur normal,
il ne peut pas correctement s'effectuer car il veut
accéder à des fichiers pour lesquels il n'a pas les
droits... (c'est normal...)



Pourquoi doit-il être lancé par un utilisateur normal ?
justement, il ne le doit pas; c'est sous root qu'il doit être lancé

pour pouvoir accéder à tous les fichiers à sauvegarder.
c'est en essayant de le lancer en simple utilisateur que j'ai vu
que ça ne pouvait pas marcher.

Pourquoi ne pas placer le script de sauvegarde dans /etc/cron.daily ou
dans le crontab de root ?

si je lance: crontab en su, j'ai le message:
You (root) are not allowed to use this program (crontab)
See crontab(1) for more information

mais dans crontab(1) je ne trouve pas la raison !



Oui, la commande 'su' n'a jamais été conçue pour être utiliser
intéractivement. C'est une commande utilisateur à utiliser durant une
session login, dixit même le man.
je me suis mal exprimé;

je voulais dire: si je passe en root via la commande su
et que je lance crontab -e, j'ai ce message:
You (root) are not allowed to use this program (crontab)
See crontab(1) for more information

root n'a pas la possibilté de lancer crontab -e

merci du coup de main,
jip



Avatar
TiChou
Dans le message <news:c8kk3o$pih$,
*jip* tapota sur f.c.o.l.configuration :


si je veux le lancer via la crontab d'un utilisateur normal,
il ne peut pas correctement s'effectuer car il veut
accéder à des fichiers pour lesquels il n'a pas les
droits... (c'est normal...)



Pourquoi doit-il être lancé par un utilisateur normal ?
justement, il ne le doit pas; c'est sous root qu'il doit être lancé

pour pouvoir accéder à tous les fichiers à sauvegarder.
c'est en essayant de le lancer en simple utilisateur que j'ai vu
que ça ne pouvait pas marcher.

Pourquoi ne pas placer le script de sauvegarde dans /etc/cron.daily ou
dans le crontab de root ?

si je lance: crontab en su, j'ai le message:
You (root) are not allowed to use this program (crontab)
See crontab(1) for more information

mais dans crontab(1) je ne trouve pas la raison !



Oui, la commande 'su' n'a jamais été conçue pour être utiliser
intéractivement. C'est une commande utilisateur à utiliser durant une
session login, dixit même le man.
je me suis mal exprimé;



Ou moi qui en fait avais mal compris.

je voulais dire: si je passe en root via la commande su
et que je lance crontab -e, j'ai ce message:
You (root) are not allowed to use this program (crontab)
See crontab(1) for more information

root n'a pas la possibilté de lancer crontab -e


Etes vous certain de ne pas avoir de fichiers /etc/cron.allow et
/etc/cron.deny sur cette machine ?

merci du coup de main,


De rien.

--
TiChou




Avatar
jip

Etes vous certain de ne pas avoir de fichiers /etc/cron.allow et
/etc/cron.deny sur cette machine ?


je confirme: pas de /etc/cron.allow et /etc/cron.deny


il faudrait les créer ?
qu'y mettre ?

jip

Avatar
Guillaume
root n'a pas la possibilté de lancer crontab -e


Dans ce cas, passez outre avec vi /etc/crontab .
Puis vous relancez cron ensuite.

--
Oups

Avatar
TiChou
Dans le message <news:c8kqqa$ik5$,
*jip* tapota sur f.c.o.l.configuration :


Etes vous certain de ne pas avoir de fichiers /etc/cron.allow et
/etc/cron.deny sur cette machine ?

je confirme: pas de /etc/cron.allow et /etc/cron.deny



Quelle distribution au fait ? Car en fait il peut s'agir des fichiers
/var/cron/allow et /var/cron/deny.

il faudrait les créer ?


S'ils n'existent pas, tous les utilisateurs y compris root sont autorisés à
utiliser crontab.

qu'y mettre ?


La liste des utilisateurs ayant le droit ou non d'utiliser crontab, comme
indiqué dans le man 1 de crontab.

--
TiChou


Avatar
jip
je confirme: pas de /etc/cron.allow et /etc/cron.deny


Quelle distribution au fait ? Car en fait il peut s'agir des fichiers
/var/cron/allow et /var/cron/deny.
je confirme toujours: pas non plus dans /var/cron


distribution: mandrake 9.2

il faudrait les créer ?


S'ils n'existent pas, tous les utilisateurs y compris root sont autorisés
à utiliser crontab.
oui, c'est ce que j'ai lu.... mais root n'a pas le droit (du moins

semble-t-il).


par contre, la solution (indiquée dans un des messages au-dessus):
mettre le script dans /etc/cron.daily fonctionne parfaitement.
(je viens de faire des tests en mettant le script dans /etc/cron.hourly
et tout fonctionne parfaitement: les sauvegardes se font bien toutes les
heures sur tout un lot de fichiers de divers utilisateurs).
c'est gagné !

merci beaucoup,
jip


Avatar
Bernard Déléchamp
root n'a pas la possibilté de lancer crontab -e



Dans ce cas, passez outre avec vi /etc/crontab .
Puis vous relancez cron ensuite.


Pas nécessaire de relancer cron (extrait du man) :

De plus, cron verifie chaque minute si la date de modification de son
repertoire de stockage (ainsi que la date de /etc/crontab) a change. Si
c'est le cas, cron examinera les dates de modifications de chaque
fichier crontab, et rechargera ceux qui ont ete changes. Ainsi, cron
n'a pas besoin d'etre redemarre apres la modification d'un fichier
crontab. Notez que la commande crontab(1) met a jour la date de modi-
fication du repertoire de stockage si un changement a lieu.

Bon courage.

--
Les jeunes sont destinés à devenir adultes.
Jean-Pierre Raffarin.