Existe t'il se genre de chose pour la comptabilite publique ?
Je m'explique, j'ai un ami qui s'occupe d'une reprographie dans une université, son service fonctione "quasiment" comme dans le privé : devis et facture mais avec les règles du public. Cependant, ca a l'air très compliqué, TVA variable...
D'abord, un utilisateur avancé peux vouloir utiliser un terminal. Sans terminal, adieu ces utilisateurs...
Ensuite, j'apprend aux débutant à se servir de leur deux mains, et pas seulement d'une ou seul le clique est important. Si on ne veut pas finir manchot comme sous windows, vive le terminal.
Une application graphique est fermé. Elles sont de plus en plus ouvertes avec un système de greffons mais c'est encore très loin de l'ouverture du shell.
La "roadmap" annonce l'ajout et la suppression d'un noeud à chaud pour le mois d'avril (version 1.2)
http://www.kerrighed.org/roadmap.html
Ce qui un peu surprenant dans cette "roadmap", c'est la soudaine accélération du projet. 5 ans pour avoir une version 1.0 et ils annoncent la 1.2 pour avril, la 1.3 pour mai et la 1.4 pour juillet !
J'ai pas été regarder les sources et je ne suis pas sur d'être capable d'y comprendre grand chose mais à mon avis, soit cette "roadmap" est irréaliste, soit tout est déjà quasiment fait et il s'agit plus de mise au point.
Connaissant un peu le milieu universitaire, je pencherais plutôt pour la seconde solution.
Je crois qu'il ne faut pas penser à Kerrighed avec l'idée de la virtualisation. C'est plutôt à comparer avec OpenMosix ou OpenSSI.
L'objectif est de faire un cluster (grappe), c'est à dire de prendre les ressources de n machines et de les mettre en commun. Le cluster se débrouille avec la mémoire et gère le déplacement des processus d'un noeud du cluster à un autre.
Je remet le lien ci-dessus où il y a un comparatif entre Kerrighed, OpenMosix et OpenSSI.
http://kerrighed.org/forum/viewtopic.php?t=40
Personnellement, je ne connaissais pas Kerrighed et je vais le tester rapidement histoire de voir. OpenMosix m'a un peu laisser sur ma faim.
Je n'appelle pas ca du partage de calendrier. La lecture et l'écriture se font par fichier et non par évênement.
Notre problématique est la suivante : j'ai un portable et je suis dans un train. Je travaille sur un agenda. De retour sur mon site, je publie mon agenda dans sunbird. Si une autre personne a fait une modification avant moi, je l'écrase. Il n'y a aucune fusion des agendas.
Bilan : une seule personne doit pouvoir écrire un agenda, les autres doivent l'avoir en lecture seule. C'est faisable avec apache/mod_dav.
A cela s'ajoute le problème des évênement privés, qui ne sont plus privés si les autres personnes peuvent lire le fichier. D'où l'obligation d'avoir deux versions du fichier, une en lecture écriture pour le mainteneur de l'agenda et une autre en lecture expurgés des données sensibles pour les autres.
PS : quelqu'un sais pourquoi Mozilla a choisis le format ical et non le format xml identique (vcal ?). Pour faire des filtres ou faire de la fusion, le xml aurait été plus facile vu le nombre de bibliothèque xml dans les différents langages.
Ca m'interesse drolement ce truc. Comment on pose des verrous avec un serveur apache/mod_dav depuis l'interface de sunbird ?
Pour le moment, je suis obligé de faire une usine à gaz, recopier les calendriers dans un autre dossier accessible en lecture seule par cron toutes les 10mn... Il faut dire que c'est une copie intelligente qui met PRIVATE dans les champs importants des évênements privés (sinon, ca sert à quoi d'avoir un évênement privé ;-)
Enfin, j'envisage d'utiliser l'auto-versionnement de subversion pour declencher la mise à jour des copies en lecture seule. Est'il possible de déclencher une action (script) dans apache/mod_dav lors d'une écriture ?
> En fait, on aimerait confier cette administration (ce sera des
> machines bureautiques) à un administrateur Windows débrouillard,
> autodidacte et intéressé par une expérience Linux.
C'est peut etre le moment d'en profiter et de le former un minimum...
J'explique souvent aux windowsiens "ouvert" qu'en n'employant pas le terminal ni les scripts, ils ne travaillent que d'une main, qu'une application graphique est une application finie dont on finit par faire le tour ou ne pas avoir les fonctionalités que l'on souhaite.
En général, ceux qui essayent de travailler avec leur deux mains ne le regrettent pas !
Sinon pour revenir au sujet, tous mes fichiers cfengine sont sur un serveur subversion. Je travaille sur ma version puis je valide mes modifications sur le serveur. Ensuite, je met à jour les fichiers du serveur cfengine à la main mais c'est faisable par cron toutes les nuits...
L'intérêt pour ton administrateur est alors de pouvoir travailler sous windows avec un editeur correct (comme crimson) et un client subversion comme Tortoise SVN. Il aura juste besoin d'un terminal ssh pour mettre à jour les fichiers du serveur cfengine donc une seule commande à faire sous GNU/Linux...
Surtout que ce ne serait pas forcément une bonne chose...
Avoir plusieurs outils permet de ne pas mettre toutes ses billes dans le même panier. C'est bien moins risqué en cas d'attaques ou de bogues dans un logiciel.
Le problème est peut-être de vouloir administrer un grande quantité de machine et d'être débutant. Il faut bien débuter me diras-tu et tu n'auras pas tord, nous sommes tous débutants sur un point ou sur un autre.
Cependant, cfengine n'est pas évident à mettre en place mais une fois que ca tourne, il n'y a plus que quelques fichiers à modifier de temps à autre. Le plus difficile est la mise en place avec son propre choix d'arborescence de fichiers. Ensuite, on fait souvent des copier/coller entre fichiers.
Pour les problèmes ponctuels, un outils permettant d'agir en temps réel sur des dizaines de machines est clusterssh (ou cssh en ligne de commande). En gros, ca permet d'ouvrir des terminaux sur n machines en parallèles et d'envoyer en parallèle des commandes sur ces machines. C'est très souple car tu peux aussi n'envoyer de commandes que sur une seule machine.
C'est pas très graphique tout ça mais je n'installe pas X sur mes serveurs, alors j'administre toutes mes machines, desktop et serveurs depuis un terminal.
Si vous avez activé le partage de fichier sur le poste distant, il est possible d'executer le script gpo.bat à distance grâce aux formidables outils que sont les pstools (via psexec notament).
Par contre, c'est à faire depuis un autre poste Windows... Je ne sais pas s'il est possible de lancer les pstools sous Wine (de toute manière, je n'active pas le partage de fichier...).
Enfin, cela ne fait que remplacer la commande "at" qui lance sinon regulièrement le script, un peu à la cfengine. C'est d'ailleurs un peu cfengine qui m'avait inspiré lorsque j'ai commencé à faire ce script perl.
La procédure est en trois parties. Un partage sous Samba ayant le nom de gpo. Un script .bat a executer une fois sur les postes clients. Un script perl sur le serveur samba qui génère a chaud les stratégie de sécurité.
Je ne sais pas pourquoi on ne peux pas faire la même chose en ne changeant que des clefs de registre ou des fichiers. Manifestement, il n'est possible de faire certaines actions qu'avec l'outil secedit. Il est clair que ce fichier de configuration n'est pas des plus clair au premier abord. Il suffit de faire quelques essais et d'améliorer petit à petit les choses. Je suis pas sur que la configuration ci-dessous soit optimale. Elle marche sous 2000 et XP cependant.
J'ai modifié les noms des machines... et j'ai supprimé des pans de mon script car celui-ci me permet aussi d'installer des logiciels sans intervention humaine. Je n'ai pas essaye de l'executer mais il ne doit pas y avoir trop d'erreur de syntaxe.
Attention, il faut faire attention à ne pas modifier après coup les premières lignes du fichier gpo.bat crée par le script perl car sur le poste client, ce fichier est mis à jour à chaud !
Peut être devrait je mettre ça sur une page web plus propre ?
Le partage sous samba
[gpo]
comment = Strategies de groupe
available = yes
path = /var/samba/gpo/
root preexec = /etc/samba/script/createGPO --win_user=%U --win_group=%G --ip=%I --os_type=%a --win_host=%m --share=/var/samba/gpo
writable = no
browseable = no
valid users = computeradmin
invalid users = root
Le script .bat a executer sur chaque client pour lui installer les GPO journalieres
mkdir %windir%\security\gpo
net use T: \\CONTROLLER\gpo 31aJHHUIHBuijkh768798jkhjk52d0 /user:computeradmin
COPY /Y /A T:\%computername%.reg %windir%\security\gpo\gpo.reg
COPY /Y /A T:\%computername%.inf %windir%\security\gpo\gpo.inf
COPY /Y /A T:\%computername%.bat %windir%\security\gpo\gpo.bat
net use T: /delete /yes
at 1 /delete /yes
at 12:00 /every:L,Ma,Me,J,V %windir%\security\gpo\gpo.bat
pod2usage(-verbose => 1) if $option{help};
pod2usage(-verbose => 2) if $option{man};
pod2usage(-verbose => 1, -message => "$0: Too many commands given.\n") if (@ARGV > 1);
my $User = lc($option{user} || $option{win_user});
my $Group = lc($option{group} || $option{win_group});
my $Host = lc($option{host} || $option{win_host});
my $Ip = $option{ip};
my $OsType = $option{os_type} || 'WinNT';
$OsType = 'WinNT' if ($OsType eq 'Win2K');
my $PathShare = $option{share} || '/var/samba/gpo';
my $computer = uc $Host;
my $wingpo = '%WINDIR%\security\gpo';
my @gecos = getpwnam "$computer\$";
my $cgroup = getgrgid $gecos[3]; # computer group
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
open BAT, ">$PathShare/$computer.bat";
print BAT "\r\n";
print BAT ":: Mise a l'heure\r\n";
print BAT "NET TIME /SETSNTP:ntp.mydomain.org\r\n";
print BAT "\r\n";
print BAT ":: Preparation\r\n";
print BAT "MKDIR $wingpo\r\n";
print BAT "NET USE T: /DELETE /YES\r\n";
print BAT "\r\n";
print BAT ":: Mise a jour des fichiers\r\n";
print BAT "NET USE T: \\\\CONTROLLER\\gpo 31aJHHUIHBuijkh768798jkhjk52d0 /USER:MYDOMAIN\\computeradmin\r\n";
print BAT "IF EXIST T:\\\%computername\%.bat COPY /A /Y T:\\\%computername\%.bat $wingpo\\gpo.bat\r\n";
print BAT "IF EXIST T:\\\%computername\%.inf COPY /A /Y T:\\\%computername\%.inf $wingpo\\gpo.inf\r\n";
print BAT "IF EXIST T:\\\%computername\%.reg COPY /A /Y T:\\\%computername\%.reg $wingpo\\gpo.reg\r\n";
print BAT "NET USE T: /DELETE /YES\r\n";
print BAT "\r\n";
print BAT ":: Configuration du poste\r\n";
print BAT "REGEDIT /S $wingpo\\gpo.reg\r\n";
print BAT "SECEDIT /CONFIGURE /DB $wingpo\\gpo.sdb /CFG $wingpo\\gpo.inf /VERBOSE /LOG $wingpo\\gpo.log\r\n";
print BAT "GOTO insVERSION\r\n";
print BAT "\r\n";
close BAT;
open REG, ">$PathShare/$computer.reg";
# Base de registre Windows 2000
print REG 'Windows Registry Editor Version 5.00'."\r\n";
print REG "\r\n";
# Suppression des profils locaux et page de garde
print REG '[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]'."\r\n";
print REG '"DeleteRoamingCache"=dword:00000001'."\r\n";
print REG "\"LogonPrompt\"=\"L'ordinateur sur lequel vous allez commencer une session appartient au laboratoire MYDOMAIN. Cet ordinateur ne doit servir qu'a des fins de recherche et l'usage du réseau est soumis a la charte RENATER\"\r\n";
print REG '"Welcome"="-- Laboratoire MYDOMAIN"'."\r\n";
print REG ''."\r\n";
print REG ''."\r\n";
print REG '[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate]'."\r\n";
print REG '"WUServer"="http://virus.mydomain.org"'."\r\n";
print REG '"WUStatusServer"="http://virus.mydomain.org"'."\r\n";
print REG ''."\r\n";
print REG ''."\r\n";
print REG '[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU]'."\r\n";
print REG '"NoAutoUpdate"=dword:00000000'."\r\n";
print REG '"AUOptions"=dword:00000004'."\r\n";
print REG '"ScheduledInstallDay"=dword:00000000'."\r\n";
print REG '"ScheduledInstallTime"=dword:00000005'."\r\n";
print REG '"UseWUServer"=dword:00000001'."\r\n";
print REG '"NoAutoRebootWithLoggedOnUsers"=dword:00000001'."\r\n";
print REG '"RescheduleWaitTime"=dword:0000000a'."\r\n";
print REG '"ScheduleInstallDay"=-'."\r\n";
print REG '"ScheduleInstallTime"=-'."\r\n";
print REG ''."\r\n";
close REG;
my $SERVICE = 4; # stop et de-active
$SERVICE = 2 if $cgroup =~ m/t\w+/; # en marche pour les ordinateurs des groupes commencant par t
- Chaque client Windows se connecte sur un serveur Samba chaque jour (at). Ou au démarrage... A chacun de voir.
- Il Récupère deux fichiers que Samba crée pour lui à ce moment là en fonction du nom de la machine cliente et du groupe dans lequel j'ai mis cette machine.
- Il execute un coup de regedit sur le premier fichier .reg et un coup de secedit sur le second fichier.
Dans le fichier .reg, je met quelques clefs de registres, notament le nom du serveur Windows Update local.
Dans le fichier secedit, il y a tout un tas de blabla semi-compréhensible... Le plus simple est de partir d'une machine "bien configurée", de récupérer sa configuration avec secedit. Ca fait une bonne base de départ. Il est par exemple très facile ainsi de dé-activer l'accès à distance à la base de registre, c'est une seule ligne du fichier secedit.
Au niveau du serveur Samba, il s'agit d'un bête script perl qui génère les deux fichiers. Ce script est lancé par Samba avec la directive "root pre exec" d'un partage. Si ca intéresse quelqu'un, je veux bien donner ce script perl du serveur ainsi que le .bat de la machine cliente.
Exact, j'avais regardé de ce coté mais il perdait les informations lors d'un reboot. /A priori/, on doit pouvoir le configurer pour qu'il ne perde pas les infos au reboot.
Par contre, en faisant une recherche rapide sur le net, il a tendance après à ne plus faire les requêtes donc à ne pas se mettre à jour. Il faut donc purger les caches mais seulement lorsque le PC est connecté sur le réseau local...
D'abord, il ne faut pas rêver sur les profils itinérants... Plus ils sont petits, mieux c'est. Il est donc utile de connecter un lecteur réseau au démarrage de la session et de rediriger avec une clef de registre qui va bien le dossier utilisateur vers ce lecteur réseau. Ca c'était pour les postes Windows.
Pour les postes UNIX, je préfère pour le moment le couple NFS + AUTOFS. Au niveau de l'authentification, deux solutions sont possibles : un annuaire LDAP ou un bête annuaire NIS (peu sécurisé mais très facile à mettre en place). Pour peu de poste, la solution NIS est très performante.
Après, on fait une table de correspondance entre les partages NFS et les partages Samba.
Pour l'impression, je trouve que le server LPRNG ne plante jamais, ce qui n'était pas de mon ancienne version de CUPS + Samba. Je configure les postes clients sous Windows pour qu'ils impriment en mode LPR.
Ce qu'il me manque, c'est une authentification propre sur un portable sous Linux lorsque celui-ci n'est pas connecté au réseau local. Un poste Windows retient les derniers login/passwd je sais pas où, mais les personnes peuvent se connecter même si le poste est coupé du réseau (ou que le contrôleur de domaine est planté).
Je te suis completement. Je recherche moi aussi un système de fichier distribué redondant (RAID) avec écriture sur tous les noeuds. Il y a bien des tentatives positives (type intermezzo) mais ca ne m'a pas encore impressionné au point de mettre NFS et Samba au rencard. Surtout que ces deux derniers progressent aussi ;-)
Je suis d'accord. Lorsque tu te retrouves administrateur d'un réseau, c'est pas toi qui décides de qui utilise quoi. Tu es là au service des utilisateurs.
Alors, tu commences avec un petit Linux dans un coin, puis tu transformes l'essai en contôleur de domaine. Tu ajoutes un serveur web, un proxy web, un dns...
Après quelques années, certains te demandent Linux sur leur portable. Là, c'est presque gagné, mais il ne faut pas décevoir.
Personnellement, j'utilse nfs en réseau local et j'ai très peu de soucis. Surtout, il se marie très bien avec l'automounter autofs. Bien sur, il ne faut pas exporter à tord et à travers mais aux seuls postes dont on a confiance.
Sinon, tu peux aussi faire du sshfs (ou lufs). C'est au même niveau que smbfs avec les mêmes inconvénients : c'est en mode utilisateur et non en mode machine. Si tu as 10 utilisateurs sur la même machine, il y aura autant de point de montage, alors qu'avec nfs+autofs, tu mutualises les points de montage (et en plus ca demonte tout seul).
A un niveau plus bas, tu peux aussi partager des blocs de disques avec drdb ou endb. Enfin, il s'agit plus d'exporter vers un serveur de l'espace disque qui ne sert pas en local afin de faire du RAID réseau.
Personnellement, j'utilise de plus en plus le YAML pour mes fichiers de configuration. Il est tres facile de faire un export XML (XHTML) depuis le YAML, c'est aussi tres facile d'utilisation sous perl et dans pas mal de langage de script.
Le gros avanatge du YAML est qu'il est facilement modifiable a la main avec ton editeur prefere, et cela en limitant les risques d'erreur.
Clonage du poste avec SystemeRescueCD + partimage + envoi de l'image sur le reseau par samba ou sshfs
Configuration fine ensuite par cfengine.
Un peu lourd au debut, une fois qu'on a fait le tour, ca marche tout seul. Un des gros avantage est d'obliger a faire le tour de tous les fichiers de configuration (ou autres) qu'on a change, et il y en a pas mal...
[^] # Re: Question intéressée
Posté par Sytoka Modon (site web personnel) . En réponse à la dépêche Sortie officielle de Tiny ERP 2.0. Évalué à 1.
Je m'explique, j'ai un ami qui s'occupe d'une reprographie dans une université, son service fonctione "quasiment" comme dans le privé : devis et facture mais avec les règles du public. Cependant, ca a l'air très compliqué, TVA variable...
[^] # Re: APT
Posté par Sytoka Modon (site web personnel) . En réponse au journal Greffon Gimp GREYCstoration. Évalué à 1.
[^] # Re: et le "open with" ?
Posté par Sytoka Modon (site web personnel) . En réponse à la dépêche Sortie de GNOME 2.10. Évalué à 3.
D'abord, un utilisateur avancé peux vouloir utiliser un terminal. Sans terminal, adieu ces utilisateurs...
Ensuite, j'apprend aux débutant à se servir de leur deux mains, et pas seulement d'une ou seul le clique est important. Si on ne veut pas finir manchot comme sous windows, vive le terminal.
Une application graphique est fermé. Elles sont de plus en plus ouvertes avec un système de greffons mais c'est encore très loin de l'ouverture du shell.
Bon, il est vrai que je suis sous pwm ;-)
[^] # Re: interrogations ...
Posté par Sytoka Modon (site web personnel) . En réponse à la dépêche Sortie de la version 1.0.0 de Kerrighed. Évalué à 2.
http://www.kerrighed.org/roadmap.html
Ce qui un peu surprenant dans cette "roadmap", c'est la soudaine accélération du projet. 5 ans pour avoir une version 1.0 et ils annoncent la 1.2 pour avril, la 1.3 pour mai et la 1.4 pour juillet !
J'ai pas été regarder les sources et je ne suis pas sur d'être capable d'y comprendre grand chose mais à mon avis, soit cette "roadmap" est irréaliste, soit tout est déjà quasiment fait et il s'agit plus de mise au point.
Connaissant un peu le milieu universitaire, je pencherais plutôt pour la seconde solution.
[^] # Re: Quelques interrogations
Posté par Sytoka Modon (site web personnel) . En réponse à la dépêche Sortie de la version 1.0.0 de Kerrighed. Évalué à 7.
L'objectif est de faire un cluster (grappe), c'est à dire de prendre les ressources de n machines et de les mettre en commun. Le cluster se débrouille avec la mémoire et gère le déplacement des processus d'un noeud du cluster à un autre.
Je remet le lien ci-dessus où il y a un comparatif entre Kerrighed, OpenMosix et OpenSSI.
http://kerrighed.org/forum/viewtopic.php?t=40
Personnellement, je ne connaissais pas Kerrighed et je vais le tester rapidement histoire de voir. OpenMosix m'a un peu laisser sur ma faim.
http://openmosix.sourceforge.net/
http://openssi.org/cgi-bin/view?page=openssi.html
[^] # Re: Agenda distant
Posté par Sytoka Modon (site web personnel) . En réponse à la dépêche Calendar 0.8.3+ en français. Évalué à 3.
Je n'appelle pas ca du partage de calendrier. La lecture et l'écriture se font par fichier et non par évênement.
Notre problématique est la suivante : j'ai un portable et je suis dans un train. Je travaille sur un agenda. De retour sur mon site, je publie mon agenda dans sunbird. Si une autre personne a fait une modification avant moi, je l'écrase. Il n'y a aucune fusion des agendas.
Bilan : une seule personne doit pouvoir écrire un agenda, les autres doivent l'avoir en lecture seule. C'est faisable avec apache/mod_dav.
A cela s'ajoute le problème des évênement privés, qui ne sont plus privés si les autres personnes peuvent lire le fichier. D'où l'obligation d'avoir deux versions du fichier, une en lecture écriture pour le mainteneur de l'agenda et une autre en lecture expurgés des données sensibles pour les autres.
PS : quelqu'un sais pourquoi Mozilla a choisis le format ical et non le format xml identique (vcal ?). Pour faire des filtres ou faire de la fusion, le xml aurait été plus facile vu le nombre de bibliothèque xml dans les différents langages.
[^] # Re: Agenda distant
Posté par Sytoka Modon (site web personnel) . En réponse à la dépêche Calendar 0.8.3+ en français. Évalué à 2.
Pour le moment, je suis obligé de faire une usine à gaz, recopier les calendriers dans un autre dossier accessible en lecture seule par cron toutes les 10mn... Il faut dire que c'est une copie intelligente qui met PRIVATE dans les champs importants des évênements privés (sinon, ca sert à quoi d'avoir un évênement privé ;-)
Enfin, j'envisage d'utiliser l'auto-versionnement de subversion pour declencher la mise à jour des copies en lecture seule. Est'il possible de déclencher une action (script) dans apache/mod_dav lors d'une écriture ?
[^] # Re: clusterssh + cfengine
Posté par Sytoka Modon (site web personnel) . En réponse au journal Administrer des dizaines de machines Red Hat Like. Évalué à 2.
> machines bureautiques) à un administrateur Windows débrouillard,
> autodidacte et intéressé par une expérience Linux.
C'est peut etre le moment d'en profiter et de le former un minimum...
J'explique souvent aux windowsiens "ouvert" qu'en n'employant pas le terminal ni les scripts, ils ne travaillent que d'une main, qu'une application graphique est une application finie dont on finit par faire le tour ou ne pas avoir les fonctionalités que l'on souhaite.
En général, ceux qui essayent de travailler avec leur deux mains ne le regrettent pas !
Sinon pour revenir au sujet, tous mes fichiers cfengine sont sur un serveur subversion. Je travaille sur ma version puis je valide mes modifications sur le serveur. Ensuite, je met à jour les fichiers du serveur cfengine à la main mais c'est faisable par cron toutes les nuits...
L'intérêt pour ton administrateur est alors de pouvoir travailler sous windows avec un editeur correct (comme crimson) et un client subversion comme Tortoise SVN. Il aura juste besoin d'un terminal ssh pour mettre à jour les fichiers du serveur cfengine donc une seule commande à faire sous GNU/Linux...
[^] # Re: gui pour yum
Posté par Sytoka Modon (site web personnel) . En réponse au journal Administrer des dizaines de machines Red Hat Like. Évalué à 3.
Avoir plusieurs outils permet de ne pas mettre toutes ses billes dans le même panier. C'est bien moins risqué en cas d'attaques ou de bogues dans un logiciel.
# clusterssh + cfengine
Posté par Sytoka Modon (site web personnel) . En réponse au journal Administrer des dizaines de machines Red Hat Like. Évalué à 3.
Cependant, cfengine n'est pas évident à mettre en place mais une fois que ca tourne, il n'y a plus que quelques fichiers à modifier de temps à autre. Le plus difficile est la mise en place avec son propre choix d'arborescence de fichiers. Ensuite, on fait souvent des copier/coller entre fichiers.
Pour les problèmes ponctuels, un outils permettant d'agir en temps réel sur des dizaines de machines est clusterssh (ou cssh en ligne de commande). En gros, ca permet d'ouvrir des terminaux sur n machines en parallèles et d'envoyer en parallèle des commandes sur ces machines. C'est très souple car tu peux aussi n'envoyer de commandes que sur une seule machine.
C'est pas très graphique tout ça mais je n'installe pas X sur mes serveurs, alors j'administre toutes mes machines, desktop et serveurs depuis un terminal.
[^] # Re: SambaEdu3
Posté par Sytoka Modon (site web personnel) . En réponse au journal Samba et les Stratégies de Groupe. Évalué à 2.
Par contre, c'est à faire depuis un autre poste Windows... Je ne sais pas s'il est possible de lancer les pstools sous Wine (de toute manière, je n'active pas le partage de fichier...).
Enfin, cela ne fait que remplacer la commande "at" qui lance sinon regulièrement le script, un peu à la cfengine. C'est d'ailleurs un peu cfengine qui m'avait inspiré lorsque j'ai commencé à faire ce script perl.
[^] # Re: SambaEdu3
Posté par Sytoka Modon (site web personnel) . En réponse au journal Samba et les Stratégies de Groupe. Évalué à 1.
La procédure est en trois parties. Un partage sous Samba ayant le nom de gpo. Un script .bat a executer une fois sur les postes clients. Un script perl sur le serveur samba qui génère a chaud les stratégie de sécurité.
Je ne sais pas pourquoi on ne peux pas faire la même chose en ne changeant que des clefs de registre ou des fichiers. Manifestement, il n'est possible de faire certaines actions qu'avec l'outil secedit. Il est clair que ce fichier de configuration n'est pas des plus clair au premier abord. Il suffit de faire quelques essais et d'améliorer petit à petit les choses. Je suis pas sur que la configuration ci-dessous soit optimale. Elle marche sous 2000 et XP cependant.
J'ai modifié les noms des machines... et j'ai supprimé des pans de mon script car celui-ci me permet aussi d'installer des logiciels sans intervention humaine. Je n'ai pas essaye de l'executer mais il ne doit pas y avoir trop d'erreur de syntaxe.
Attention, il faut faire attention à ne pas modifier après coup les premières lignes du fichier gpo.bat crée par le script perl car sur le poste client, ce fichier est mis à jour à chaud !
Peut être devrait je mettre ça sur une page web plus propre ?
Le partage sous samba
[gpo]
comment = Strategies de groupe
available = yes
path = /var/samba/gpo/
root preexec = /etc/samba/script/createGPO --win_user=%U --win_group=%G --ip=%I --os_type=%a --win_host=%m --share=/var/samba/gpo
writable = no
browseable = no
valid users = computeradmin
invalid users = root
Le script .bat a executer sur chaque client pour lui installer les GPO journalieres
mkdir %windir%\security\gpo
net use T: \\CONTROLLER\gpo 31aJHHUIHBuijkh768798jkhjk52d0 /user:computeradmin
COPY /Y /A T:\%computername%.reg %windir%\security\gpo\gpo.reg
COPY /Y /A T:\%computername%.inf %windir%\security\gpo\gpo.inf
COPY /Y /A T:\%computername%.bat %windir%\security\gpo\gpo.bat
net use T: /delete /yes
at 1 /delete /yes
at 12:00 /every:L,Ma,Me,J,V %windir%\security\gpo\gpo.bat
Le script createGPO en perl
GetOptions(\%option,
'help',
'man',
'verbose',
'user=s',
'group=s',
'host=s',
'win_user=s',
'win_group=s',
'win_host=s',
'ip=s',
'os_type=s',
'share=s',
'etc=s',
) or pod2usage(-verbose => 1, -message => "$0: Bad arguments given.\n");
pod2usage(-verbose => 1) if $option{help};
pod2usage(-verbose => 2) if $option{man};
pod2usage(-verbose => 1, -message => "$0: Too many commands given.\n") if (@ARGV > 1);
my $User = lc($option{user} || $option{win_user});
my $Group = lc($option{group} || $option{win_group});
my $Host = lc($option{host} || $option{win_host});
my $Ip = $option{ip};
my $OsType = $option{os_type} || 'WinNT';
$OsType = 'WinNT' if ($OsType eq 'Win2K');
my $PathShare = $option{share} || '/var/samba/gpo';
my $computer = uc $Host;
my $wingpo = '%WINDIR%\security\gpo';
my @gecos = getpwnam "$computer\$";
my $cgroup = getgrgid $gecos[3]; # computer group
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
open BAT, ">$PathShare/$computer.bat";
print BAT "\r\n";
print BAT ":: Mise a l'heure\r\n";
print BAT "NET TIME /SETSNTP:ntp.mydomain.org\r\n";
print BAT "\r\n";
print BAT ":: Preparation\r\n";
print BAT "MKDIR $wingpo\r\n";
print BAT "NET USE T: /DELETE /YES\r\n";
print BAT "\r\n";
print BAT ":: Mise a jour des fichiers\r\n";
print BAT "NET USE T: \\\\CONTROLLER\\gpo 31aJHHUIHBuijkh768798jkhjk52d0 /USER:MYDOMAIN\\computeradmin\r\n";
print BAT "IF EXIST T:\\\%computername\%.bat COPY /A /Y T:\\\%computername\%.bat $wingpo\\gpo.bat\r\n";
print BAT "IF EXIST T:\\\%computername\%.inf COPY /A /Y T:\\\%computername\%.inf $wingpo\\gpo.inf\r\n";
print BAT "IF EXIST T:\\\%computername\%.reg COPY /A /Y T:\\\%computername\%.reg $wingpo\\gpo.reg\r\n";
print BAT "NET USE T: /DELETE /YES\r\n";
print BAT "\r\n";
print BAT ":: Configuration du poste\r\n";
print BAT "REGEDIT /S $wingpo\\gpo.reg\r\n";
print BAT "SECEDIT /CONFIGURE /DB $wingpo\\gpo.sdb /CFG $wingpo\\gpo.inf /VERBOSE /LOG $wingpo\\gpo.log\r\n";
print BAT "GOTO insVERSION\r\n";
print BAT "\r\n";
close BAT;
open REG, ">$PathShare/$computer.reg";
# Base de registre Windows 2000
print REG 'Windows Registry Editor Version 5.00'."\r\n";
print REG "\r\n";
# Suppression des profils locaux et page de garde
print REG '[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]'."\r\n";
print REG '"DeleteRoamingCache"=dword:00000001'."\r\n";
print REG "\"LogonPrompt\"=\"L'ordinateur sur lequel vous allez commencer une session appartient au laboratoire MYDOMAIN. Cet ordinateur ne doit servir qu'a des fins de recherche et l'usage du réseau est soumis a la charte RENATER\"\r\n";
print REG '"Welcome"="-- Laboratoire MYDOMAIN"'."\r\n";
print REG ''."\r\n";
print REG ''."\r\n";
print REG '[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate]'."\r\n";
print REG '"WUServer"="http://virus.mydomain.org"'."\r\n";
print REG '"WUStatusServer"="http://virus.mydomain.org"'."\r\n";
print REG ''."\r\n";
print REG ''."\r\n";
print REG '[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU]'."\r\n";
print REG '"NoAutoUpdate"=dword:00000000'."\r\n";
print REG '"AUOptions"=dword:00000004'."\r\n";
print REG '"ScheduledInstallDay"=dword:00000000'."\r\n";
print REG '"ScheduledInstallTime"=dword:00000005'."\r\n";
print REG '"UseWUServer"=dword:00000001'."\r\n";
print REG '"NoAutoRebootWithLoggedOnUsers"=dword:00000001'."\r\n";
print REG '"RescheduleWaitTime"=dword:0000000a'."\r\n";
print REG '"ScheduleInstallDay"=-'."\r\n";
print REG '"ScheduleInstallTime"=-'."\r\n";
print REG ''."\r\n";
close REG;
my $SERVICE = 4; # stop et de-active
$SERVICE = 2 if $cgroup =~ m/t\w+/; # en marche pour les ordinateurs des groupes commencant par t
open INF, ">$PathShare/$computer.inf";
print INF ''."\r\n";
print INF '[Version]'."\r\n";
print INF 'signature="$CHICAGO$"'."\r\n";
print INF 'Revision=1'."\r\n";
print INF '[System Access]'."\r\n";
print INF 'MinimumPasswordAge = 0'."\r\n";
print INF 'MaximumPasswordAge = 42'."\r\n";
print INF 'MinimumPasswordLength = 7'."\r\n";
print INF 'PasswordComplexity = 1'."\r\n";
print INF 'PasswordHistorySize = 0'."\r\n";
print INF 'LockoutBadCount = 5'."\r\n";
print INF 'ResetLockoutCount = 10'."\r\n";
print INF 'LockoutDuration = 10'."\r\n";
print INF 'RequireLogonToChangePassword = 0'."\r\n";
print INF 'NewAdministratorName = "unnomvraimenttordu"'."\r\n";
print INF 'NewGuestName = "cecomptenesertvraimentarien"'."\r\n";
print INF 'ClearTextPassword = 0'."\r\n";
print INF '[System Log]'."\r\n";
print INF 'MaximumLogSize = 512'."\r\n";
print INF 'AuditLogRetentionPeriod = 1'."\r\n";
print INF 'RetentionDays = 7'."\r\n";
print INF 'RestrictGuestAccess = 1'."\r\n";
print INF '[Security Log]'."\r\n";
print INF 'MaximumLogSize = 5120'."\r\n";
print INF 'AuditLogRetentionPeriod = 1'."\r\n";
print INF 'RetentionDays = 7'."\r\n";
print INF 'RestrictGuestAccess = 1'."\r\n";
print INF '[Application Log]'."\r\n";
print INF 'MaximumLogSize = 512'."\r\n";
print INF 'AuditLogRetentionPeriod = 1'."\r\n";
print INF 'RetentionDays = 7'."\r\n";
print INF 'RestrictGuestAccess = 1'."\r\n";
print INF '[Event Audit]'."\r\n";
print INF 'AuditSystemEvents = 0'."\r\n";
print INF 'AuditLogonEvents = 2'."\r\n";
print INF 'AuditObjectAccess = 0'."\r\n";
print INF 'AuditPrivilegeUse = 2'."\r\n";
print INF 'AuditPolicyChange = 3'."\r\n";
print INF 'AuditAccountManage = 2'."\r\n";
print INF 'AuditProcessTracking = 0'."\r\n";
print INF 'AuditAccountLogon = 2'."\r\n";
print INF 'CrashOnAuditFull = 0'."\r\n";
print INF '[Profile Description]'."\r\n";
print INF 'Description=Suppose que les fichiers et registres des ACL sont ceux de la première installation NTFS. Sécurise les zones restantes. Vide le groupe des utilisateurs avec pouvoir.'."\r\n";
print INF '[Registry Values]'."\r\n";
print INF 'machine\system\currentcontrolset\services\netlogon\parameters\signsecurechannel=4,1'."\r\n";
print INF 'machine\system\currentcontrolset\services\netlogon\parameters\sealsecurechannel=4,1'."\r\n";
print INF 'machine\system\currentcontrolset\services\netlogon\parameters\requirestrongkey=4,0'."\r\n";
print INF 'machine\system\currentcontrolset\services\netlogon\parameters\requiresignorseal=4,0'."\r\n";
print INF 'machine\system\currentcontrolset\services\netlogon\parameters\disablepasswordchange=4,0'."\r\n";
print INF 'machine\system\currentcontrolset\services\lanmanworkstation\parameters\requiresecuritysignature=4,0'."\r\n";
print INF 'machine\system\currentcontrolset\services\lanmanworkstation\parameters\enablesecuritysignature=4,1'."\r\n";
print INF 'machine\system\currentcontrolset\services\lanmanworkstation\parameters\enableplaintextpassword=4,0'."\r\n";
print INF 'machine\system\currentcontrolset\services\lanmanserver\parameters\requiresecuritysignature=4,0'."\r\n";
print INF 'machine\system\currentcontrolset\services\lanmanserver\parameters\enablesecuritysignature=4,0'."\r\n";
print INF 'machine\system\currentcontrolset\services\lanmanserver\parameters\enableforcedlogoff=4,1'."\r\n";
print INF 'machine\system\currentcontrolset\services\lanmanserver\parameters\autodisconnect=4,15'."\r\n";
print INF 'machine\system\currentcontrolset\control\session manager\protectionmode=4,1'."\r\n";
print INF 'machine\system\currentcontrolset\control\session manager\memory management\clearpagefileatshutdown=4,0'."\r\n";
print INF 'machine\system\currentcontrolset\control\print\providers\lanman print services\servers\addprinterdrivers=4,0'."\r\n";
print INF 'machine\system\currentcontrolset\control\lsa\restrictanonymous=4,1'."\r\n";
print INF 'machine\system\currentcontrolset\control\lsa\lmcompatibilitylevel=4,0'."\r\n";
print INF 'machine\system\currentcontrolset\control\lsa\fullprivilegeauditing=3,0'."\r\n";
print INF 'machine\system\currentcontrolset\control\lsa\crashonauditfail=4,0'."\r\n";
print INF 'machine\system\currentcontrolset\control\lsa\auditbaseobjects=4,0'."\r\n";
print INF 'machine\software\microsoft\windows\currentversion\policies\system\shutdownwithoutlogon=4,1'."\r\n";
print INF 'machine\software\microsoft\windows\currentversion\policies\system\legalnoticetext=1,'."\r\n";
print INF 'machine\software\microsoft\windows\currentversion\policies\system\legalnoticecaption=1,'."\r\n";
print INF 'machine\software\microsoft\windows\currentversion\policies\system\dontdisplaylastusername=4,1'."\r\n";
print INF 'machine\software\microsoft\windows nt\currentversion\winlogon\passwordexpirywarning=4,14'."\r\n";
print INF 'machine\software\microsoft\windows nt\currentversion\winlogon\cachedlogonscount=1,10'."\r\n";
print INF 'machine\software\microsoft\windows nt\currentversion\winlogon\allocatefloppies=1,0'."\r\n";
print INF 'machine\software\microsoft\windows nt\currentversion\winlogon\allocatedasd=1,0'."\r\n";
print INF 'machine\software\microsoft\windows nt\currentversion\winlogon\allocatecdroms=1,0'."\r\n";
print INF 'machine\software\microsoft\windows nt\currentversion\setup\recoveryconsole\setcommand=4,0'."\r\n";
print INF 'machine\software\microsoft\windows nt\currentversion\setup\recoveryconsole\securitylevel=4,0'."\r\n";
print INF '[Group Membership]'."\r\n";
print INF '*S-1-5-32-547__Memberof ='."\r\n";
print INF '*S-1-5-32-547__Members ='."\r\n" unless $Host eq 'cepcla';
print INF '*S-1-5-32-547__Members = machin'."\r\n" if $Host eq 'cepcla';
print INF '[Privilege Rights]'."\r\n";
print INF 'sesystemtimeprivilege = *S-1-5-32-544,*S-1-5-32-545,*S-1-5-32-547'."\r\n";
print INF '[Service General Setting]'."\r\n";
print INF "1=\"dhcp\", $SERVICE, \"D:(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPLOCRRC;;;PU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWRPWPDTLOCRRC;;;SY)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)\"\r\n";
print INF '2="messenger", 2, "D:(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPLOCRRC;;;PU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWRPWPDTLOCRRC;;;SY)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)"'."\r\n";
print INF '3="remoteregistry", 4, "D:(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPLOCRRC;;;PU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWRPWPDTLOCRRC;;;SY)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)"'."\r\n";
print INF '4="schedule", 2, "D:(A;;CCLCSWLOCRRC;;;AU)(A;;CCLCSWRPLOCRRC;;;PU)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWRPWPDTLOCRRC;;;SY)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)"'."\r\n";
print INF "\r\n";
close INF;
[^] # Re: SambaEdu3
Posté par Sytoka Modon (site web personnel) . En réponse au journal Samba et les Stratégies de Groupe. Évalué à 2.
Voila comment je procède :
- Chaque client Windows se connecte sur un serveur Samba chaque jour (at). Ou au démarrage... A chacun de voir.
- Il Récupère deux fichiers que Samba crée pour lui à ce moment là en fonction du nom de la machine cliente et du groupe dans lequel j'ai mis cette machine.
- Il execute un coup de regedit sur le premier fichier .reg et un coup de secedit sur le second fichier.
Dans le fichier .reg, je met quelques clefs de registres, notament le nom du serveur Windows Update local.
Dans le fichier secedit, il y a tout un tas de blabla semi-compréhensible... Le plus simple est de partir d'une machine "bien configurée", de récupérer sa configuration avec secedit. Ca fait une bonne base de départ. Il est par exemple très facile ainsi de dé-activer l'accès à distance à la base de registre, c'est une seule ligne du fichier secedit.
Au niveau du serveur Samba, il s'agit d'un bête script perl qui génère les deux fichiers. Ce script est lancé par Samba avec la directive "root pre exec" d'un partage. Si ca intéresse quelqu'un, je veux bien donner ce script perl du serveur ainsi que le .bat de la machine cliente.
[^] # Re: Quelles solution ?
Posté par Sytoka Modon (site web personnel) . En réponse à la dépêche Délégation de pouvoirs avec un contrôleur de domaine Samba. Évalué à 1.
Par contre, en faisant une recherche rapide sur le net, il a tendance après à ne plus faire les requêtes donc à ne pas se mettre à jour. Il faut donc purger les caches mais seulement lorsque le PC est connecté sur le réseau local...
Bon, je vais regarder ca de plus près.
[^] # Re: Quelles solution ?
Posté par Sytoka Modon (site web personnel) . En réponse à la dépêche Délégation de pouvoirs avec un contrôleur de domaine Samba. Évalué à 3.
Pour les postes UNIX, je préfère pour le moment le couple NFS + AUTOFS. Au niveau de l'authentification, deux solutions sont possibles : un annuaire LDAP ou un bête annuaire NIS (peu sécurisé mais très facile à mettre en place). Pour peu de poste, la solution NIS est très performante.
Après, on fait une table de correspondance entre les partages NFS et les partages Samba.
Pour l'impression, je trouve que le server LPRNG ne plante jamais, ce qui n'était pas de mon ancienne version de CUPS + Samba. Je configure les postes clients sous Windows pour qu'ils impriment en mode LPR.
Ce qu'il me manque, c'est une authentification propre sur un portable sous Linux lorsque celui-ci n'est pas connecté au réseau local. Un poste Windows retient les derniers login/passwd je sais pas où, mais les personnes peuvent se connecter même si le poste est coupé du réseau (ou que le contrôleur de domaine est planté).
[^] # Re: Un article inquiétant
Posté par Sytoka Modon (site web personnel) . En réponse à la dépêche Délégation de pouvoirs avec un contrôleur de domaine Samba. Évalué à 2.
[^] # Re: Un article inquiétant
Posté par Sytoka Modon (site web personnel) . En réponse à la dépêche Délégation de pouvoirs avec un contrôleur de domaine Samba. Évalué à 1.
Alors, tu commences avec un petit Linux dans un coin, puis tu transformes l'essai en contôleur de domaine. Tu ajoutes un serveur web, un proxy web, un dns...
Après quelques années, certains te demandent Linux sur leur portable. Là, c'est presque gagné, mais il ne faut pas décevoir.
[^] # Re: Un article inquiétant
Posté par Sytoka Modon (site web personnel) . En réponse à la dépêche Délégation de pouvoirs avec un contrôleur de domaine Samba. Évalué à 5.
Sinon, tu peux aussi faire du sshfs (ou lufs). C'est au même niveau que smbfs avec les mêmes inconvénients : c'est en mode utilisateur et non en mode machine. Si tu as 10 utilisateurs sur la même machine, il y aura autant de point de montage, alors qu'avec nfs+autofs, tu mutualises les points de montage (et en plus ca demonte tout seul).
A un niveau plus bas, tu peux aussi partager des blocs de disques avec drdb ou endb. Enfin, il s'agit plus d'exporter vers un serveur de l'espace disque qui ne sert pas en local afin de faire du RAID réseau.
- drdb http://www.drbd.org/
- endb http://www.it.uc3m.es/~ptb/nbd/
- sshfs http://shfs.sourceforge.net/
- lufs http://lufs.sourceforge.net/lufs/
Enfin, certains tunnelisent nfs dans ssh mais je n'ai pas encore essayé.
[^] # Re: Sympa
Posté par Sytoka Modon (site web personnel) . En réponse à la dépêche GCfilms : Logiciel de gestion de films. Évalué à 3.
Le gros avanatge du YAML est qu'il est facilement modifiable a la main avec ton editeur prefere, et cela en limitant les risques d'erreur.
[^] # Re: ça existe
Posté par Sytoka Modon (site web personnel) . En réponse au journal Rève du matin, backup du lendemain. Évalué à 1.
Clonage du poste avec SystemeRescueCD + partimage + envoi de l'image sur le reseau par samba ou sshfs
Configuration fine ensuite par cfengine.
Un peu lourd au debut, une fois qu'on a fait le tour, ca marche tout seul. Un des gros avantage est d'obliger a faire le tour de tous les fichiers de configuration (ou autres) qu'on a change, et il y en a pas mal...
[^] # Re: Guten-print || Xprint || CUPS
Posté par Sytoka Modon (site web personnel) . En réponse à la dépêche Gutenprint : le successeur de Gimp-Print.. Évalué à 1.