Bonjour,

> Le 18 févr. 2024 à 18:46, Bernard Bass <bernard.b...@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
> 
> 

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.


> >> 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 :
> >> Cette méthode pour ne pas utiliser sudo n'est pas recommandée :
> # sudo chown root script.sh
> # sudo chmod 710 script.sh
> # sudo chmod u+s script.sh
> 

--
Pierre Malard

   «Il vaut mieux passer à La Poste qu’à la postérité»
                                                  Alphonse Allais

   |\      _,,,---,,_
   /,`.-'`'    -.  ;-;;,_
  |,4-  ) )-,_. ,\ (  `'-'
 '---''(_/--'  `-'\_)  πr

perl -e '$_=q#: 3|\ 5_,3-3,2_: 3/,`.'"'"'`'"'"' 5-.  ;-;;,_:  |,A-  ) )-,_. ,\ 
(  `'"'"'-'"'"': '"'"'-3'"'"'2(_/--'"'"'  `-'"'"'\_): 
24πr::#;y#:#\n#;s#(\D)(\d+)#$1x$2#ge;print'
- --> Ce message n’engage que son auteur <--

Attachment: signature.asc
Description: Message signed with OpenPGP

Répondre à