Les Nouveaux Ports
Un article de Projet de documentation fug-fr .
Traduction avec l'aimable autorisation de l'auteur, d'un article intitulé Interesting New Ports de Dru Lavigne, dans la série FreeBSD Basics sur le site BSDDevCenter d'ONLamp
Pour les lecteurs fidèles qui commençaient à se demander quand le prochain article de cette série paraîtrait, je suis de retour. BSD Hacks est finalement terminé. Dans l'article d'aujourd'hui, je voudrais montrer quelques utilitaires utiles qui sont récemment arrivés dans la collection des ports. Je découvre habituellement ces derniers dans FreshPort, qui conserve les données des ports qui ont été ajoutés dans les derniers 24 heures, 48 heures, semaine, quinzaine, et mois.
Sommaire |
[modifier] Sélection des Ports installés
Cependant, je me suis renseigné la première fois sur ports-mgmt/pkg_cutleaves (cf. note en fin d'article) dans le weblog de Richard Bejtlich. Richard a la capacité surnaturelle de suivre les progrès de mes trois sujets préférés : FreeBSD, la collection des ports, et la sécurité. Si vous employez portupgrade pour maintenir vos ports à jour, envisagez d'ajouter pkg_cutleaves à votre répertoire. Ce script perl interactif, recherche dans votre base de données des ports les "laissés pour compte", ou les logiciels qui ne sont pas dépendants d'un autre programme installé. Ceci donne l'occasion de nettoyer votre disque des programmes ayant perdu leurs parents, que vous n'utilisez plus, ou des dépendances de logiciels vous avez désinstallés depuis. Une fois construit le port ports-mgmt/pkg_cutleaves, prenez une minute pour lire la page man de pkg_cutleaves. Puis, en tant que super-utilisateur:
# pkg_cutleaves Package 1 of 73: AbiWord2-2.0.5 - An open-source, cross-platform WYSIWYG word processor AbiWord2-2.0.5 - [keep]/(d)elete/(f)lush marked pkgs/(a)bort? k ** Keeping AbiWord2-2.0.5.
Sur un système particulier, j'ai 250 ports installés, dont 73 sont entièrement indépendants. les pkg_cutleaves montreront chacun de ces derniers, et feront une pause attendant que je décide de garder ou d'enlever un port. J'ai choisi de garder abiword2, aussi bien que les 6 ports suivants associés à XFree86.
Package 8 of 73: apache-ant-1.6.1 - Java- and XML-based build tool, conceptually similar to make apache-ant-1.6.1 - [keep]/(d)elete/(f)lush marked pkgs/(a)bort? d ** Marking apache-ant-1.6.1 for removal.
Cependant, j'ai choisi d'effacer apache-ant,puisque je me souviens vaguement qu'il s'agit d'une application que j'ai désinstallé il y a bien longtemps. Je continuerais jusqu'à ce que j'ai pris une décision sur chacun des 73 ports. Une fois terminé, pkg_delete effectuera les suppressions demandées. Dans cet exemple, j'ai choisi d'effacer 25 ports :
Package 73 of 73: zip-2.3_1 - Create/update ZIP files compatible with pkzip zip-2.3_1 - [keep]/(d)elete/(f)lush marked pkgs/(a)bort? k ** Keeping zip-2.3_1. Deleting apache-ant-1.6.1 (package 1 of 25). ---> Deinstalling 'apache-ant-1.6.1' [Updating the pkgdb <format:bdb1_btree> in /var/db/pkg ... - 250 packages found (-1 +0) (...) done]
Quand ces suppressions se terminent, pkg_cutleaves retraite la base de données de ports pour voir si une quelconque de ces suppressions à eu comme conséquence de générer de nouveaux modules orphelins:
Go on with new leaf packages ((y)es/[no])? y
Ce processus continuera jusqu'à ce que j'ai traité tout ces orphelins. A ce point,il fournira le détail des ports désinstallés:
Didn't find any new leaves, exiting. ** Deinstalled packages: apache-ant-1.6.1 <snip> ** Number of deinstalled packages: 53
La prochaine fois que vous exécuterez pkg_cutleaves, il vous interrogera encore au sujet des ports que vous avez choisi de conserver. Dans mon exemple, ce serait abiword2 et les ports XFree86. Si vous savez que vous voulez garder ces derniers, et trouvez irritant de confirmer à chaque fois, créez un fichier appelé /usr/local/etc./pkg_leaves.exclude contenant les noms des ports que vous souhaitez conserver:
AbiWord2 XFree86
Souvenez vous d'inclure le commutateur x (exclude) :
# pkg_cutleaves -x
Ceci indique à pkg_cutleaves de lire votre fichier d'exclusion. Quand vous ne voudrez pas qu'il lise votre fichier exclude, n'incluez pas cette option.
[modifier] Amélioration de vos fortunes
Le prochain port est pour ceux qui apprécient l'humour deBOFH. Si ce dernier excite vos arcades zygomatiques, vous pouvez ajouter des fortunes genre BOFH dans votre système, avec l'installation du port /usr/ports/misc/fortune-mod-bofh .Une fois installé, essayez une fortune au hasard:
% fortune /usr/local/share/games/fortune/bofh BOFH excuse #419: overflow error in /dev/null
Si vous voulez que ces fortunes apparaissent aléatoirement avec le reste de vos fortunes, copiez-les dans le répertoire fortune du système en tant que super-utilisateur:
# cp /usr/local/share/games/fortune/bofh* /usr/share/games/fortune/
Une fois que vous avez rajouté les fichiers de BOFH, vous pouvez indiquer que voulez une fortune BOFH en tapant:
% fortune bofh
C'est beaucoup plus court que l'incantation précédente. Pour finir, si vous êtes un fan de "Futurama", répétez ce qui précède avec le port /usr/ports/misc/fortune-mod-futurama:
# cd /usr/ports/misc/fortune-mod-futurama # make install clean # cp /usr/local/share/games/fortune/futurama* /usr/share/games/fortune/ # exit % fortune futurama Fry: I want to see the edge of the universe. Amy: Ooh, that sounds cool. Zoidberg: It's funny. You live in the universe but you never do these things 'til someone comes to visit.
Il est drôle que cette fortune de Douglas Adams m'ait amusée. Une recherche rapide avec Google a trouvé qu'il y a en effet un projet fortune auto-stoppeur. Télécharger fortune-hitchhiker.tgz, puis :
# tar xzvf fortune-hitchhiker.tgz # cp fortune-hitchhiker/hitchhiker* /usr/share/games/fortune # exit % fortune hitchhiker "'You know,' said Arthur, 'it's at times like this, when I'm trapped in a Vogon airlock with a man from Betelgeuse, and about to die from asphyxiation in deep space that I really wish I'd listened to what my mother told me when I was young.' 'Why, what did she tell you?' 'I don't know, I didn't listen.'" -- Arthur coping with certain death as best as he could.
Peut-être un autre fan d' hitchhicker ajoutera ceci à la collection de ports, ainsi il apparaitra dans la nouvelle section chez FreshPorts.
[modifier] Accorder les sujets et verbes convenablement
Le port suivant m'a intriguée, comme il a nommé littéralement un de mes balbutiements préféré dans mon enfance:
# cd /usr/ports/textproc/queequeg # make install clean
Ceci installera un script python qq, qui peut fonctionner avec n'importe quel texte, latex, ou fichier HTML, comme suit:
% qq filename
Le projet queequeg est toujours en étape bêta. Son but est d'aider un auteur d'origine étrangère non anglophone, à appareiller un nom au pluriel ou singulier, ou à la conjugaison correcte d'un verbe, en anglais. En ce moment, les réalisateurs du projet travaillent toujours à filtrer les faux positifs, ainsi, la sortie obtenue peut encore être frustrante pour ceux qui manquent d'une bonne grammaire anglaise. Cependant, si la grammaire anglaise est votre passion, et si vous avez du temps à lui consacrer, ce projet recherche des bêta-testeurs. S'il murit, ce sera un excellent outil pour les développeurs non-Anglais, pour créer facilement des page-manuels en anglais.
[modifier] Accroire la sécurité de votre système
Le dernier port que je voudrais montrer a été trouvé dans /usr/ports/security/lockdown. J'étais initialement sceptique, puisque ce port est un script pour accroire ou augmenter la sécurité d'un système FreeBSD. Je tends à me tenir loin de telles promesses, comme le durcissement d'un système ne s'adapte pas comme en prêt à porter. Cependant, Daniel Blankensteiner a fait un excellent travail, en créant une séquence type totalement configurable, qui permet d'appliquer un ensemble de configurations faites sur commande. Un administrateur peut ainsi facilement créer un fichier séparé de configuration, adapté à chacun de ses systèmes. Non seulement le fichier de configuration est facile à appliquer, et il fournit un enregistrement concret des changements appliqués sur un système nouvellement installé, ou mis à jour. Une fois que vous avez installé le port, familiarisez-vous avec la page man lockdown. Elle récapitule les diverses options de configuration contenues dans le fichier de configuration du script. Puis :
# cp /usr/local/etc/lockdown.conf.sample /usr/local/etc/lockdown.conf
NOTE : Si vous projetez de faire une classe de configuration pour des systèmes multiples, incluez le hostname du système, au nom du fichier de configuration. De cette façon, vous pouvez avoir en mémoire dans un emplacement centralisé les multiples fichiers de configuration. Quand vous utilisez réellement l'utilitaire de lockdown, vous pouvez utiliser le fichier de configuration voulu en indiquant son nom avec l'option -f. Ouvrez le fichier dans votre éditeur préféré. Vous constaterez que ce fichier est très bien commenté, avec beaucoup d'exemples pour vous aider à débuter. Par exemple, voici une section sur /etc./fstab , pour monter vos partitions d'une façon plus sécurisée:
#################### # Mounting options # #################### # If the mount point exists, mount it with the specified options. # Please remember that /tmp has to be executable to "make world" # and if you need to jail a process in a partition, don't mount it with "nodev" mount /tmp rw,noexec,nosuid,nodev,nosymfollow mount /var/tmp rw,noexec,nosuid,nodev,nosymfollow mount /home rw,noexec,nosuid,nodev mount /usr/home rw,noexec,nosuid,nodev mount /var rw,nosuid,nodev mount /var/mail rw,noexec,nodev,nosuid
Si ces options de montage sont nouvelles pour vous, voyez l'option -o dans la page man mount. Regardez également le FreeBSD Security How-To, très utile pour déterminer quelles options conviennent à votre environnement: La section suivante permet de configurer les options de /etc/rc.conf , et donne quelques idées pour vous permettre de commencer. Voyez la page man rc.conf pour chaque option possible.
########################
# /etc/rc.conf options #
########################
# This will just add some options to /etc/rc.conf
rc_conf enable_sendmail="NONE"
rc_conf kern_securelevel_enable="YES"
rc_conf portmap_enable="NO"
rc_conf inetd_enable="NO"
rc_conf kern_securelevel="3"
rc_conf clear_tmp_enable="YES"
#rc_conf update_motd="NO"
rc_conf syslogd_flags="-ss" # Comment this if this is a
# log server (or change it)
[modifier] Créer un serveur protégé:
################## # Stealth server # ################## # If this is a log server, firewall or gateway you can put it into # stealth mode. # This is NOT recommended for normal server use. # Note: For a stealthier server you should also block some icmp request # like: # Echo, Time and Netmask requests #rc_conf tcp_drop_synfin="YES" #sysctl net.inet.tcp.blackhole=2 #sysctl net.inet.udp.blackhole=1 #kern options IPSTEALTH #kern options TCP_DROP_SYNFIN
Sécurisez FreeBSD a discuté de ces options, et plusieurs de celles qui suivent plus en détail.
[modifier] Diverses configurations de gestion réseau:
###################### # Networking options # ###################### rc_conf icmp_drop_redirect="YES" rc_conf icmp_log_redirect="YES" rc_conf log_in_vain="YES" kern options RANDOM_IP_ID openssh AllowGroups wheel openssh Protocol 2 set_warning " Warning I blah blah blah blah and then some"
Ces dernières options configurent SSH. Voir Configuring SSH pour plus de détails. Ensuite, vous pouvez personnaliser le fichier /etc./login.conf :
####################### # Login Class options # ####################### login_class default minpasswordlen=8 login_class default mixpasswordcase=true login_class default uname=077 # Encryption of passwords auth_conf crypt_default=blf login_class default passwd_format=blf
Puis /etc./ttys :
##############
# Root Login #
##############
allow_direct_root_login NO # Set tty* in /etc/ttys to
# insecure
password_protect_singleuser_mode YES # Set console to insecure
# in /etc/ttys
Il y a des options utilisateur spécifiques:
#####################
# Restrict the user #
#####################
allow_cron NO
allow_at NO
sysctl security.bsd.see_other_uids=0 # Use kern.ps_showallprocs
# for 4.X
Aussi bien que des options du noyau:
##################
# Kernel options #
##################
kern options SC_NO_HISTORY # Don't keep history, so
# there can't be scrolled
kern options SC_DISABLE_REBOOT # Disable ctrl+alt+del
#kern options SC_DISABLE_DDBKEY # Uncomment if using the
# kernel debugger
En conclusion, il y a une section entière pour les permissions et les flags de fichier:
################################# # Restrict access to suid files # ################################# # If you want /somefile to have: # Permissions 0000 # User root # Group wheel # Flags uappnd and schg # Just write: # file /somefile p: 0000 u: root g: wheel f: uappnd,schg file /bin/rcp p: disable file /sbin/mksnap_ffs p: noWorld file /sbin/ping p: noWorld <snip long list of files> ################################ # Restrict access to gid files # ################################ file /usr/bin/fstat p: noWorld file /usr/bin/netstat p: noWorld file /usr/bin/vmstat p: noWorld file /usr/bin/wall p: noWorld file /usr/bin/write p: noWorld file /usr/bin/lpq p: noWorld file /usr/bin/lpr p: noWorld file /usr/bin/lprm p: noWorld file /usr/libexec/sendmail/sendmail p: noWorld file /usr/sbin/trpt p: noWorld file /usr/sbin/lpc p: noWorld ######################################## # Restrict access to information files # ######################################## # if you change permissions on files also listed in /etc/newsyslog.conf, # Lockdown will also adjust /etc/newsyslog.conf accordingly file /sbin/sysctl p: noWorld file /usr/bin/uname p: noWorld file /sbin/kldstat p: noWorld #file /usr/bin/netstat p: noWorld #Uncomment if using 4.X file /sbin/route p: noWorld <snip long list of files>
J'étais très heureuse de la convivialité du fichier de configuration, et de la facilité d'y faire ses propres modifications. Si vous souhaitez suggérer des sections supplémentaires dans ce fichier, Daniel est ouvert à toutes suggestions. Voir sur son site pour le contacter.
[modifier] Conclusion
En outre, je reste ouverte à toutes suggestions pour de futurs articles, que vous voudriez voir dans cette série. Envoyez moi un mot s'il y a un port, ou une fonctionnalité dans FreeBSD que vous voudriez voir expliquée. Aussi, si vous habitez en Amérique du Nord, notez le 13 au 16 mai sur votre calendrier, et voyez si vous pouvez trouver un plan pour vous rendre à Ottawa, Ontario, Canada. Oui, BSDCan est une approche rapide, et il y a un panel imposant de présentateurs. Voilà une chance de rencontrer d'autres utilisateurs de FreeBSD et de mettre des visages sur ces noms que vous voyez sur le site de FreeBSD et sur les listes de diffusion. Je tiendrais le bureau d'enregistrement, et attendrais avec intérêt de vous voir. Nous essayerons également d'avoir des copies des Hacks disponibles.
Dru Lavigne enseigne les technologies Marketbridge à Ottawa, et participe à l'Open Ressource Protocole.
[modifier] Notes
Depuis la rédaction de cet article, une nouvelle catégorie est apparue dans les Ports, dédiée aux outils relatifs aux ports eux-mêmes: voir le PR ports/97507 ainsi que les messages de commits de ports-mgmt/Makefile (rev. 1.1 et 1.2) pour plus de détails. Dans l'article original, le port était situé sous sysutils/pkg_cutleaves/.

