[crontab] Ajouter un utilisateur (www-data) Le sujet est résolu

Demande d'aide : c'est ici.
Répondre
Avatar de l’utilisateur
dezix
Membre hyper actif
Membre hyper actif
Messages : 3548
Inscription : 04 juin 2016, 14:50
Status : Hors-ligne

Bonjour,

Faisant des tests de CMS,

lors de l'installation du Forum Aura (en cours de dev)

je reçois dans : /var/log/apache2/error.log

le message suivant :

Code : Tout sélectionner

no crontab for www-data
"-":0: bad minute
errors in crontab file, can't install.
qui précède d'autres errors dues au CMS.

Je ne sais pas encore avec certitude
si le cms nécessite d'écrire dans la crontab de www-data
[s](j'attends le retour du dev)[/s]
la réponse est oui,
mais cela va être supprimé pour des raisons de sécurité.

Malgré la lecture du FM de crontab,
je ne parviens pas à créer de crontab pour www-data (apache2)

j'ai créé un fichier : /etc/cron.allow

avec pour contenu 1 ligne :

Code : Tout sélectionner

www-data
et j'ai tenté la commande :

Code : Tout sélectionner

$ sudo su -c "crontab -u www-data -" www-data
qui renvoie :

Code : Tout sélectionner

This account is currently not available.

Question :

Comment créer la crontab de l'utilisateur www-data ?

Merci.
**Simple Utilisateur** -- Debian stable - XFCE
Avatar de l’utilisateur
Dunatotatos
Membre
Membre
Messages : 426
Inscription : 11 mai 2016, 20:56
Status : Hors-ligne

On dirait que l'erreur vient du `su`, et non de `crontab`. Peux-tu confirmer que

Code : Tout sélectionner

su - www-data
renvoie la même erreur ?
Avatar de l’utilisateur
dezix
Membre hyper actif
Membre hyper actif
Messages : 3548
Inscription : 04 juin 2016, 14:50
Status : Hors-ligne

Est-ce la manip que tu demandais ?

Code : Tout sélectionner

$ su - www-data
Mot de passe : 
su: Échec d'authentification

$ su -
Mot de passe : 
# su - www-data
This account is currently not available.
**Simple Utilisateur** -- Debian stable - XFCE
Avatar de l’utilisateur
Dunatotatos
Membre
Membre
Messages : 426
Inscription : 11 mai 2016, 20:56
Status : Hors-ligne

Oui, exactement. Dans ce cas, utilise sudo au lieu de su :

Code : Tout sélectionner

sudo -u www-data crontab -e
Avatar de l’utilisateur
dezix
Membre hyper actif
Membre hyper actif
Messages : 3548
Inscription : 04 juin 2016, 14:50
Status : Hors-ligne

Tu as donné dans le mille !

Code : Tout sélectionner

$ sudo -u www-data crontab -e
no crontab for www-data - using an empty one
touch: impossible de faire un touch '/var/www/.selected_editor': Permission non accordée
Impossible de créer le répertoire /var/www/.local/share/nano/ : Aucun fichier ou dossier de ce type
Il permet de conserver l'historique des recherches
et les positions du curseur

Appuyez sur « Entrée » pour continuer

crontab: installing new crontab
Ce qui m'a tout de même ouvert un nouveau fichier crontab avec nano

Code : Tout sélectionner


# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (/tmp/crontab.Nh4abn/crontab installed on Sat Aug 24 00:01:38 2019)
# (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $)
# Edit this file to introduce tasks to be run by cron.
# 
......

comme le fichier en cours d'édition était dans /tmp/crontab...
j'ai vérifié

Code : Tout sélectionner

$ sudo ls /var/spool/cron/crontabs
www-data
le fichier contient bien la ligne supplémentaire ajoutée avec nano

Merci pour ton aide :023:


Je reste encore avec des zones d'ombres au sujet des "utilisateurs/groupes processus/applications" comme c'est le cas présent d'apache.

Aurais-tu une lecture à m'indiquer pour y voir plus clair ?
**Simple Utilisateur** -- Debian stable - XFCE
Avatar de l’utilisateur
Dunatotatos
Membre
Membre
Messages : 426
Inscription : 11 mai 2016, 20:56
Status : Hors-ligne

Je ne sais pas trop quoi te conseiller. Le souci ici est d'ouvrir un shell en tant que www-data. Si tu regardes le contenu de /etc/passwd, tu verras cette ligne:

Code : Tout sélectionner

www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
Du coup, lors de l'ouverture d'une session en tant que www-data, /usr/sbin/nologin est exécuté. D'ailleurs, si tu le lances manuellement :

Code : Tout sélectionner

$ /usr/sbin/nologin
This account is currently not available.
L'idée est soit de ne pas ouvrir de session en tant que www-data, soit de forcer le "login shell" à être /bin/bash ou autre chose de fonctionnel.
Avatar de l’utilisateur
dezix
Membre hyper actif
Membre hyper actif
Messages : 3548
Inscription : 04 juin 2016, 14:50
Status : Hors-ligne

Oui, effectivement:

Code : Tout sélectionner

$ cat /etc/passwd | grep www-data
www-data:*:33:33:www-data:/var/www:/usr/sbin/nologin
Je posais la question ici,
car j'ai déjà eu (j'ai encore) un soucis avec l'utilisateur _apt

Code : Tout sélectionner

$ cat /etc/passwd | grep _apt
_apt:*:104:65534::/nonexistent:/bin/false
J'ai pris l'habitude (bonne ou mauvaise ?) de :

Remplacer /var/cache/apt/archives
par un lien vers un répertoire d'une autre partition dédiée au stockage,
pour me garantir contre un possible manque d'espace pour le système.

Ça fonctionne très bien sauf que je reçois régulièrement cet avertissement :
W: Le téléchargement est effectué en dehors du bac à sable en tant que « root »
car le fichier « /var/cache/apt/archives/partial/thunderbird_1%3a60.5.1-1_amd64.deb »
n'est pas accessible par l'utilisateur « _apt ». - pkgAcquire::Run (13: Permission non accordée)
J'ai eu beau bidouiller les permissions

Code : Tout sélectionner

/data/.apt-archive/debian/testing/archives$ vdir | grep partial
drwx------ 2 _apt root     4096 août  24 09:05 partial
j'ai fini par abandonner :((
**Simple Utilisateur** -- Debian stable - XFCE
Avatar de l’utilisateur
Dunatotatos
Membre
Membre
Messages : 426
Inscription : 11 mai 2016, 20:56
Status : Hors-ligne

Quand je vois "bac à sable", ça veut certainement dire "chroot". Ça va donc casser les liens symboliques vers des chemins absolus, puisque / n'est plus au même endroit.
En plus, pas sûr que chroot puisse accéder à d'autres systèmes de fichiers. Il me semble avoir résolu un problème similaire, lié à SELinux dans le passé.
(Tout ça est rempli de suppositions. Ce n'est peut-être pas le vrai problème, mais ce sont des pistes à explorer.)

Mon conseil : garde ce dossier dans le même système de fichier que /var. Si tu as vraiment peur de manquer de place, tu peux toujours avoir un cron task pour le nettoyer (avec apt, pas rm !).
Avatar de l’utilisateur
dezix
Membre hyper actif
Membre hyper actif
Messages : 3548
Inscription : 04 juin 2016, 14:50
Status : Hors-ligne

Merci pour ces conseils.

@+
**Simple Utilisateur** -- Debian stable - XFCE
Répondre