Voilà ma question : Comment remplacer l'utilisateur root pour utiliser
le service cron ?
echo "gestionnaire ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
Le 18 févr. 2024 à 00:09, Sébastien Dinot <sebastien.dinot@free.fr> a écrit :
Bernard Bass a écrit :
Voilà ma question : Comment remplacer l'utilisateur root pour utiliser
le service cron ?
Puis-je savoir à quoi sert de désactiver le compte root si c'est pour donner les pleins pouvoirs à un autre compte, en le dispensant de saisir
son mot de passe lorsqu'il utilise la commande sudo ?
echo "gestionnaire ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
La subtilité de la manœuvre m'échappe.
Sébastien
--
Sébastien Dinot, sebastien.dinot@free.fr
http://www.palabritudes.net/
Ne goutez pas au logiciel libre, vous ne pourriez plus vous en passer !
Bonjour,
Même question, tout ça sert-il à quoi que ce soit ?
Même si on interdit la connexion directe sous « root », ce qui peut se concevoir, il n’empêche que certaines commande doivent être lancées
avec ces droits. su coup, pour modifier le crontab root, rien
n’empêche d’utiliser un sudo pour prendre ponctuellement ces droits
pour modifier le crontab root.
Dans le même sujet si une tâche n’a pas besoin des droits root rien n’empêche d’utiliser un crontab « utilisateur » !
Enfin, si on souhaite mieux gérer tout ça on peut utiliser /etc/cron.d
où on indique l’utilisateur à utiliser pour lancer la commande souhaitée… mais il faut avoir les droits « root » pour créer cette entrée ;-)
mot de passe root en mémoire.Je pense avoir mal compris, je n'aurais pas du désactiver root, mais seulement supprimer le mot de passe **pour ne pas conserver le hash du
sudo passwd -d root*
gérer les tâches cron du système ( cron.daily ... ) :Il faudrait alors réactiver l'utilisateur root , pour qu'il puisse
de passe.*sudo passwd --unlock root*
Affiche :
passwd : déverrouiller le mot de passe créerait un compte sans mot
déverrouiller le mot de passe de ce compte.Vous devriez définir un mot de passe avec usermod -p pour
passwd -S root
root L 2024-01-03 0 99999 7 -1
Le compte reste verrouillé (L) après la commande passwd --unlock root*
de passe de ce compte (root)*Définir un mot de passe avec usermod -p pour déverrouiller* le mot
compte root pour ne pas laisser le hash en mémoire. :/Il est indiqué dans une documentation d'enlever le mot de passe du
*passwd root crérait / recrérait un compte root sans mot de passe ? <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Aucun hash de mot de passe ne serait alors conservé en mémoire et le compte root serait utilisable par le système pour utiliser cron.
Oui, j'ai désactivé la connexion à root depuis SSH.
Il me semble qu'il faille le faire pour le système aussi ? # Sans supprimer le compte root pour autant ? # C'est confus.*
Effectivement.
"Authentication failure" avec l'utilisateur root désactivé et le mot deOui il est possible de modifier la crontab root avec sudo crontab -e
Les tâches ne seront pas lancées et resteront en erreur
tâches systèmes ( cron.daily ... ne sont pas lancées si l'utilisateurOui, il faut autoriser les scripts depuis "/etc/sudoers.d" mais les
fichiers déclaratifs pour sudoers qui seront lus en complément dusudo nano /etc/sudoers
Préférer le dossier "/etc/sudoers.d" : il sert à stocker des
ne seront pas lus !Attention, tous les fichiers qui contiennent "~" ou "." dans le nom
le même fichier : le fichier sudoers sera toujours lu, dans tous les cas.Organiser les règles par fichier plutôt que de tout centraliser dans
ligne. J'ai testé sans, il me semble que cela ne fonctionne pas.Pour créer un nouveau fichier nommé "amis_sh", on utilisera :
sudo visudo /etc/sudoers.d/amis_sh
sudo chmod 440 /etc/sudoers.d/amis_sh
Ajouter deux ligne pour le script sudoer à autoriser :
amis_sh ALL=(ALL:ALL) ALL # Pas certain qu'il faille utiliser cette
droits utilisateur est créé.amis_sh ALL=(ALL) NOPASSWD:/home/amis_sh/test-crontab-sudo.sh*
nano test-crontab-sudo.sh
Ajouter les lignes suivantes :
!/bin/sh
touch "/home/amis_sh/test-crontab-sudo-ok1"; # Un fichier avec
droits root est créé.su - amis_sh -c "touch test-crontab-sudo-user-ok"; # Un fichier avec
droits utilisateur est créé.touch "/home/amis_sh/test-crontab-sudo-ok2"; # Un fichier avec
Utiliser la crontab de l'utilisateur : crontab -e
55 12 * * * user=$(whoami) sudo /home/amis_sh/test-crontab-sudo.sh
updates.log 2>&1
Oui, Je suppose que l'on peut utiliser ici un nouvel utilisateur gestionnaire avec les droits root.*
Le problème reste présent pour lancer les tâches cron.daily si l'utilisateur root est désactivé.
Je n'ai pas regardé cette possibilité.*
Je lis pour les droits setuid :
# sudo chown root script.sh* *Cette méthode pour ne pas utiliser sudo n'est pas recommandée* :
Le 18 févr. 2024 à 18:46, Bernard Bass <bernard.bass@visionduweb.com> a écrit :
Bonjour,
Puis-je savoir à quoi sert de désactiver le compte root si c'est pour donner les pleins pouvoirs à un autre compte, en le dispensant de saisir son mot de passe lorsqu'il utilise la commande sudo ?
echo "gestionnaire ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
Je pense avoir mal compris, je n'aurais pas du désactiver root, mais seulement supprimer le mot de passe pour ne pas conserver le hash du mot de passe root en mémoire.
sudo passwd -d root
################################
################################
Il faudrait alors réactiver l'utilisateur root , pour qu'il puisse gérer les tâches cron du système ( cron.daily ... ) :
sudo passwd --unlock root
Affiche :
passwd : déverrouiller le mot de passe créerait un compte sans mot de passe.
Vous devriez définir un mot de passe avec usermod -p pour déverrouiller le mot de passe de ce compte.
passwd -S root
root L 2024-01-03 0 99999 7 -1
Le compte reste verrouillé (L) après la commande passwd --unlock root
Définir un mot de passe avec usermod -p pour déverrouiller le mot de passe de ce compte (root)
Il est indiqué dans une documentation d'enlever le mot de passe du compte root pour ne pas laisser le hash en mémoire. :/
passwd root crérait / recrérait un compte root sans mot de passe ? <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Aucun hash de mot de passe ne serait alors conservé en mémoire et le compte root serait utilisable par le système pour utiliser cron.
################################
################################
Même si on interdit la connexion directe sous « root », ce qui peut se concevoir,
Oui, j'ai désactivé la connexion à root depuis SSH.
Il me semble qu'il faille le faire pour le système aussi ? # Sans supprimer le compte root pour autant ? # C'est confus.
il n’empêche que certaines commande doivent être lancées avec ces droits.
Effectivement.
du coup, pour modifier le crontab root, rien n’empêche d’utiliser un sudo pour prendre ponctuellement ces droits pour modifier le crontab root.
Oui il est possible de modifier la crontab root avec sudo crontab -e
Les tâches ne seront pas lancées et resteront en erreur "Authentication failure" avec l'utilisateur root désactivé et le mot de passe expiré.
Dans le même sujet si une tâche n’a pas besoin des droits root rien n’empêche d’utiliser un crontab « utilisateur » !
Oui, il faut autoriser les scripts depuis "/etc/sudoers.d" mais les tâches systèmes ( cron.daily ... ne sont pas lancées si l'utilisateur root est désactivé. )
sudo nano /etc/sudoers
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.
Attention, tous les fichiers qui contiennent "~" ou "." dans le nom ne seront pas lus !
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.
Pour créer un nouveau fichier nommé "amis_sh", on utilisera :
sudo visudo /etc/sudoers.d/amis_sh
sudo chmod 440 /etc/sudoers.d/amis_sh
Ajouter deux ligne pour le script sudoer à autoriser :
amis_sh ALL=(ALL:ALL) ALL # Pas certain qu'il faille utiliser cette ligne. J'ai testé sans, il me semble que cela ne fonctionne pas.
amis_sh ALL=(ALL) NOPASSWD:/home/amis_sh/test-crontab-sudo.sh
nano test-crontab-sudo.sh
Ajouter les lignes suivantes :
!/bin/sh
touch "/home/amis_sh/test-crontab-sudo-ok1"; # Un fichier avec droits utilisateur est créé.
su - amis_sh -c "touch test-crontab-sudo-user-ok"; # Un fichier avec droits root est créé.
touch "/home/amis_sh/test-crontab-sudo-ok2"; # Un fichier avec droits utilisateur est créé.
Utiliser la crontab de l'utilisateur : crontab -e
55 12 * * * user=$(whoami) sudo /home/amis_sh/test-crontab-sudo.sh >> updates.log 2>&1
Enfin, si on souhaite mieux gérer tout ça on peut utiliser /etc/cron.d où on indique l’utilisateur à utiliser pour lancer la commande souhaitée… mais il faut avoir les droits « root » pour créer cette entrée ;-)
Oui, Je suppose que l'on peut utiliser ici un nouvel utilisateur gestionnaire avec les droits root.
Le problème reste présent pour lancer les tâches cron.daily si l'utilisateur root est désactivé.
Mention du paquet Debian super. https://packages.debian.org/trixie/super <https://packages.debian.org/trixie/super> paramétrable finement par /etc/super.tab
Je n'ai pas regardé cette possibilité.
Je lis pour les droits setuid :
# Elever les droits setuid sur les scripts exécutés par cron pour ne pas avoir à utiliser sudo :
# sudo chown root script.shCette méthode pour ne pas utiliser sudo n'est pas recommandée :
# sudo chmod 710 script.sh
# sudo chmod u+s script.sh
Puis-je savoir à quoi sert de désactiver le compte root si c'est pour
donner les pleins pouvoirs à un autre compte, en le dispensant de
saisir son mot de passe lorsqu'il utilise la commande sudo ?
echo "gestionnaire ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
J’ai du louper des épisodes car je ne vois nulle part dans les
réponses faites une mention laissant entendre qu’il fallait « disposer [l’utilisateur] de saisir son mot de passe ». C’est, à mon sens, une très mauvaise pratique à moins de limiter drastiquement les commandes laissées à cet usage.
Le 18 févr. 2024 à 22:36, Bernard Bass <bernard.bass@visionduweb.com> a écrit :de limiter drastiquement les commandes laissées à cet usage.
Bonsoir,
Puis-je savoir à quoi sert de désactiver le compte root si c'est pour donner les pleins pouvoirs à un autre compte, en le dispensant de saisir son mot de passe lorsqu'il utilise la commande sudo ?
echo "gestionnaire ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
J’ai du louper des épisodes car je ne vois nulle part dans les réponses faites une mention laissant entendre qu’il fallait « disposer [l’utilisateur] de saisir son mot de passe ». C’est, à mon sens, une très mauvaise pratique à moins
Effectivement.
Je n'ai pas la méthode pour créer un utilisateur root.
J'ai des notes pour créer un sudoer dans le groupe sudo.
Je ne sais par contre pas s'il est possible de créer un utilisateur semblable à l'utilisateur root.
On m'avait surement déjà répondu, cela n'est probablement pas possible, ou, compliqué, puisque c'est root (0) qui administre le système.
J'ai passé root en /sbin/nologin dans /etc/passwd ce qui empêche l'utilisation de root, tout en permettant au système de fonctionner, sudo crontab -e fonctionne normalement.
Je ne sais toujours pas créer un utilisateur gestionnaire capable de prendre le rôle de root, pour faire fonctionner l'ensemble des services cron, sans passer par des manipulations complexes.
Merci d'avoir répondu.
<div class=""><br class=""></div><div class="">À partir de là le seul moyen d’accéder aux droits « root » est de passer par un utilisateur sudoer pour lancer un « sudo commande » sans bloquer le système pour autant.</div><div class=""><br class=""></div><div class="">Si vous vous méfiez des éventuels utilisateurs sudoer vous pouvez limiter les commandes possibles pour eux dans la configuration de sudoer. Allez faire un tour à la fin de <a href="https://www.
*La solution fonctionnelle pour désactiver root semble être la suivante :*
1)
sudo passwd root # Créer un mot de passe.
sudo passwd -d root # Supprimer le mot de passe.
2)
* Désactiver l'utilisateur root à partir du shell.
Le moyen le plus simple de désactiver la connexion de l'utilisateur
root est de changer son shell du répertoire /bin/bash à /sbin/nologin,
dans le fichier /etc/passwd.
sudo nano /etc/passwd
root:x:0:0:root:/root:/sbin/nologin
3)
sudo passwd -S root
root NP 02/18/2024 0 99999 7 -1 # L'utilisateur root utilise no password.
4)
su root
This account is currently not available.
5)
On ne peut donc pas accéder à root directement.
Le système cron avec la crontab -e root continue de fonctionner.
Le user root semble faire son travail sans erreur.
J'aurais préféré créer un utilisateur gestionnaire pour remplacer les actions de l'utilisateur root, capable de lancer toutes les tâches cron.
Si quelqu'un sait expliquer la méthode.
Merci.
La question initiale : Comment remplacer l'utilisateur root pour
utiliser le service cron ?
Devrait plutôt être : *Comment lancer le service cron/crontab avec l'utilisateur gestionnaire (root) ?*
J'ai créé l'utilisateur gestionnaire de la sorte :
Créer un utilisateur gestionnaire pour remplacer les actions de l'utilisateur root, pour lancer toutes les tâches cron.
Consulter les groupes de l'utilisateur root :
sudo bash
id
uid=0(root) gid=0(root) groupes=0(root)
groups
root
Créer l'utilisateur gestionnaire :
*sudo adduser gestionnaire*
Ajouter l'utilisateur gestionnaire au groupe des administrateurs
système (root) à l'aide de la commande usermod :
# usermod -aG sudo gestionnaire
*sudo usermod -aG root gestionnaire*
Ajouter les droits root à l'utilisateur gestionnaire avec visudo :
*sudo visudo
root ALL=(ALL:ALL) ALL
gestionnaire ALL=(ALL:ALL) ALL
*
sudo bash
cat /etc/passwd | grep -i gestionnaire gestionnaire:x:1001:1001:,,,:/home/gestionnaire:/bin/bash
sudo bash
Donner à l'utilisateur gestionnaire les privilèges root sans qu'il
n'ait a utiliser sudo :
Changer l'ID de l'utilisateur gestionnaire avec l'option d'ID
utilisateur non unique :
*usermod -o -u 0 gestionnaire*
Utiliser su pour s'identifier avec l'utilisateur gestionnaire et
devenir root :
$ *su gestionnaire*
Mot de passe :
*root*@system:/home/utilisateur-courant#
cat /etc/passwd | grep -i gestionnaire gestionnaire:x:0:1001:,,,:/home/gestionnaire:/bin/bash
La ligne peut être réécrite de la façon suivante :
sudo nano /etc/passwd gestionnaire:x:0:1001:Gestionnaire:/home/gestionnaire:/bin/bash
Je n'ai pas trouvé comment relancer le service cron avec cet autre utilisateur gestionnaire.
<!DOCTYPE html>*La solution fonctionnelle pour désactiver root semble être la
suivante :*
1)
sudo passwd root # Créer un mot de passe.
sudo passwd -d root # Supprimer le mot de passe.
2)
* Désactiver l'utilisateur root à partir du shell.
Le moyen le plus simple de désactiver la connexion de l'utilisateur
root est de changer son shell du répertoire /bin/bash à
/sbin/nologin, dans le fichier /etc/passwd.
sudo nano /etc/passwd
root:x:0:0:root:/root:/sbin/nologin
3)
sudo passwd -S root
root NP 02/18/2024 0 99999 7 -1 # L'utilisateur root utilise no password.
4)
su root
This account is currently not available.
5)
On ne peut donc pas accéder à root directement.
Le système cron avec la crontab -e root continue de fonctionner.
Le user root semble faire son travail sans erreur.
J'aurais préféré créer un utilisateur gestionnaire pour remplacer les
actions de l'utilisateur root, capable de lancer toutes les tâches cron.
Si quelqu'un sait expliquer la méthode.
Merci.
Sysop: | Keyop |
---|---|
Location: | Huddersfield, West Yorkshire, UK |
Users: | 546 |
Nodes: | 16 (2 / 14) |
Uptime: | 146:04:28 |
Calls: | 10,383 |
Calls today: | 8 |
Files: | 14,054 |
D/L today: |
2 files (1,861K bytes) |
Messages: | 6,417,699 |