Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 17/05/2008, à 02:39

Brunod

MAJ automatisées pour simples utilisateurs?

J'ai une dizaine de pc Ubuntu qui tournent sur deux sites distants. Les utilisateurs quotidiens sont de simples utilisateurs qui allument le pc, s'en servent et l'éteignent.
J'ai cherché un peu partout une solution pour automatiser les mises à jour du système sans que les utilisateurs interviennent, mais je n'ai trouvé aucune solution. Je ne veux pas qu'ils aient le droit d'administrer les pc, mais moi je ne peux pas passer régulièrement sur tous les pc des deux sites pour faire les maj.
Je suppose que je ne suis pas seul dans cette situation, donc je vous demande une piste, un lien vers un post que j'aurais manqué (il est tard...), une idée, ou la solution adoptée...
Merci,
BD

Dernière modification par Brunod (Le 17/05/2008, à 02:41)


Windows est un système d'exploitation de l'homme par l'ordinateur. Linux, c'est le contraire...
39 pc linux convertis

Hors ligne

#2 Le 17/05/2008, à 03:26

dudeuxc

Re : MAJ automatisées pour simples utilisateurs?

Hello

Pourquoi ne pas utililiser cron et un script?
Le script qui mets tout à jour, et cron qui le repete à échéance fixe...
Les commandes utiles

aptitude update && aptitude upgrade 
aptitude safe-upgrade -y

et

crontab -e
man cron

#3 Le 17/05/2008, à 04:43

dudeuxc

Re : MAJ automatisées pour simples utilisateurs?

#!/bin/sh
############################################
#SCRIPT_MAJ
##/home/mike/02-mes_scripts/01-system/
###Version 1.0.2 05-05-2008.MKL
############################################

# Déclarations des variables.
	heure=`date +"%c"`
	rep='/var/log'
	poste=`hostname`

# Début du script

# Création d'un fichier log
echo "\n\n"
echo "============= RAPPORT DE MISE À JOUR =============" >> $rep/maj.log
echo "Rapport de sauvegarde du: "$heure"\n">> $rep/maj.log
echo "Poste:"$poste"">> $rep/maj.log
# Commande de mises à jour silencieuses
sudo aptitude update && sudo aptitude safe-upgrade -y 2>> $rep/maj.log
# Trouver et purger les paquets defectueux et/ou cassés
sudo deborphan | xargs apt-get remove --purge -uyv >> $rep/maj.log && sudo aptitude purge $(dpkg --get-selections | grep deinstall | awk '{print $1}') >> $rep/maj.log
# Nettoyer le cache apt et effectuer les mises à jour des index matériels (périphériques)
sudo aptitude autoclean 2>> $rep/maj.log && sudo update-pciids 2>> $rep/maj.log && sudo update-usbids 2>> $rep/maj.log
echo 'Votre système est maintenant à jour !' &&
echo "Mise à jour terminée le: "$heure"\n">> $rep/maj.log
# Afficher les 50 dernières lignes du journal d'installation.
echo "Extrait du fichier APT:\n">> $rep/maj.log
sudo tail -50 /var/log/apt/term.log >> $rep/maj.log
echo 'Le système est maintenant à jour !\n' >> $rep/maj.log
echo "=============FIN DU RAPPORT DE MISE À JOUR=============" >> $rep/maj.log
exit

Du coup, je m'en suis fait un à l'arrache, faudra penser à peaufiner, notamment l'éventuelle rotation du fichier de sortie /var/log/maj.log

#4 Le 18/05/2008, à 06:15

Brunod

Re : MAJ automatisées pour simples utilisateurs?

CHÂÂPEAU !!!
Franchement bravo et merci ! Surtout que je suis nul en script (et qu'il y a encore tellement de choses que je dois apprendre... roll)
Je teste ça à mon boulot dès que possible !
D'ailleurs pour te montrer ma nullitude, j'ai une sous-question :
- comment ou à quelle étape se fait-il que le script exécute le "sudo aptitude update" sans demander le mot de passe admin ? J'ai toujours pas compris... sad
D'où ma seconde sous-sous-question (plus philosophique que pratique, mais c'est pour comprendre) :
- qu'est ce qui empêche un utilisateur lambda de recréer ce script sur un pc et d'exécuter une mise à jour alors qu'elle lui serait normalement interdite ?
Merci de m'éclairer ! smile
Brunod

Dernière modification par Brunod (Le 18/05/2008, à 06:20)


Windows est un système d'exploitation de l'homme par l'ordinateur. Linux, c'est le contraire...
39 pc linux convertis

Hors ligne

#5 Le 18/05/2008, à 12:08

↖↖↖↔↗↗↗

Re : MAJ automatisées pour simples utilisateurs?

Bonjour

Effectivement, le fait d'utiliser sudo va necessiter d'entrer le code admin, sauf si tu modifies les utilisateurs "admin" via 'sudoers' (la commande est "sudo visudo"). Cela ouvre un fichier contenant les utilisateurs autorisés à administrer (à utiliser sudo). Tu peux faire le choix de necessiter ou pas un mot de passe lors de la saisi de sudo, pour un utilisateur spécifique, ou tout un groupe.

Mon fichier sudoers, ici mike n'a pas besoin de saisir le mdp:

# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#

Defaults        env_reset

# Uncomment to allow members of group sudo to not need a password
%sudo ALL=NOPASSWD: ALL

# Host alias specification

# User alias specification

# Cmnd alias specification

# User privilege specification
root    ALL=(ALL) ALL
mike    ALL=(ALL) ALL
mkl     ALL=(ALL) ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
mike ALL=NOPASSWD: ALL

Donc tout ce que lancera mike avec sudo, sera fait sans entrer de mot de passe.
(il faut aussi que l'utilsateur fasse parti du groupe "admin" dans tes groupes/utilisateurs), donc l'utilisateur lamnda ne pourra jamais lancer un script contenant sudo et y parvenir)

Sinon, tu peux retirer tout les sudo et rendre le script executable et le placer dans le cron du root...

#6 Le 18/05/2008, à 12:16

↖↖↖↔↗↗↗

Re : MAJ automatisées pour simples utilisateurs?

Re,

Entre temps, j'ai ajouté un backup du Home/$User avant la mise à jour, parfois, elles se passent mal...
Juste pour te donner une idée, ce script est un peu crado, mais bon, il fait ce que l'on lui demande:
backup avec eventuellement trie sur certains repertoires ou certains types de fichiers
une fois que c'est fait, lancer l'installation des mises à jour disponibles.

#!/bin/sh
############################################
#SCRIPT_MAJ
##/home/mike/02-mes_scripts/01-system/
###Version 1.0.2 17-05-2008.MKL
############################################
# Déclarations des variables.
# [heure: heure de mise à jour, rep: repertoire initial du backup, dest: repertoire de
# destination du backup, poste: hostname du poste concerné] 

	heure=`date +"%c"`
	rep='/home/mike/02-mes_scripts/09-log'
	poste=`hostname`
	dest='/mnt/Stockage_A/01-rsync/01-backup/'$USER''

# Début du script
# Création d'un fichier log
echo "\\**" > $rep/maj.log
## Backup de prévention
echo "============= RAPPORT DE SAUVEGARDE =============" > $rep/maj.log
echo "Rapport de Backup du: "$heure"" >> $rep/maj.log
echo "Poste concerné:"$poste"" >> $rep/maj.log 
rsync -v --progress --stats  --recursive --times --perms --compress --delete --filter "- .thumbnails/" --filter "- .Trash/" --filter "- *.tmp" --filter "- *.iso" --filter "- lost+found/" --filter "- .cache/" --filter "- PARTAGE-SMB" --filter "- 10-Mes_images" --filter "- .icons/" --filter "- Bureau" --filter "- tmp" /home/$USER/ "$dest" 1>> $rep/maj.log
echo "Le repertoire personnel de '$USER' est sauvegardé dans '$dest'" >> $rep/maj.log
echo "==========FIN DU RAPPORT DE SAUVEGARDE ==========" >> $rep/maj.log
## Mise à jour du système
echo "\n" >> $rep/maj.log 
echo "============= RAPPORT DE MISE À JOUR ================" >> $rep/maj.log
echo "Rapport de mise à jour du: "$heure"">> $rep/maj.log
echo "Poste concerné:"$poste" \n">> $rep/maj.log
# Commande de mises à jour silencieuses
sudo aptitude update 1>>/dev/null && sudo aptitude safe-upgrade -y 1>> $rep/maj.log
# Trouver et purger les paquets defectueux et/ou cassés
sudo deborphan | xargs apt-get remove --purge -uyv 1>> $rep/maj.log && sudo aptitude purge -y $(dpkg --get-selections | grep deinstall | awk '{print $1}') 1>> $rep/maj.log
# Nettoyer le cache apt et effectuer les mises à jour des index matériels (périphériques)
sudo aptitude autoclean 1>> $rep/maj.log && sudo update-pciids 2>> $rep/maj.log && sudo update-usbids 2>> $rep/maj.log
echo "Mise à jour terminée le: "$heure"\n" >> $rep/maj.log
# Afficher les 50 dernières lignes du journal d'installation.
echo "Extrait du fichier APT:">> $rep/maj.log
sudo tail -50 /var/log/apt/term.log >> $rep/maj.log
echo '\nLe système est maintenant à jour !\n' >> $rep/maj.log
echo "=============FIN DU RAPPORT DE MISE À JOUR=============" >> $rep/maj.log
exit 0

Tu peux ou pas ajouter l'extinction de gdm avant de lancer les MAJ. Il est souvent recommandé de faire les maj, hors session graphique de lancée, pour évité des soucis.

#7 Le 19/05/2008, à 06:41

Brunod

Re : MAJ automatisées pour simples utilisateurs?

↖↖↖↔↗↗↗ a écrit :

...
Sinon, tu peux retirer tout les sudo et rendre le script executable et le placer dans le cron du root...

Je pense que je vais essayer d'adopter cette solution.
(Pour le reste, je dois éplucher à tête reposée roll)
A bientôt et merci !
BD


Windows est un système d'exploitation de l'homme par l'ordinateur. Linux, c'est le contraire...
39 pc linux convertis

Hors ligne