Catégorie : Mémo

3 mars 2016 /

Les alternatives viennent de Debian et ont été porté sur RedHat. Elles permettent de gérer plusieurs versions d’exécutables.
On notera que Debian utilise la commande update-alternatives alors que RedHat utilise la commande alternatives.

Voici comment cela fonctionne. Des liens sont posés dans /usr/bin/ qui pointent chacun vers un autre lien dans /etc/alternatives/ qui pointe pointe enfin vers l’exécutable sélectionné par le service.

Pour expliquer cela, on va se pencher sur java.

Tout d’abord, regardons la version actuelle de java:

java -version

java version "1.7.0_95"
OpenJDK Runtime Environment (rhel-2.6.4.0.el6_7-x86_64 u95-b00)
OpenJDK 64-Bit Server VM (build 24.95-b01, mixed mode)

Ici, on s’aperçoit que l’exécutable de java se trouve ici, /usr/bin/java :

which java

Il se trouve en faites que ce n’est qu’un lien symbolique pointant sur un autre point symbolique qui lui, pointera sur l’exécutable:

ls -l /usr/bin/java

lrwxrwxrwx. 1 root root 22  3 mars  10:16 /usr/bin/java -> /etc/alternatives/java

ls -l /etc/alternatives/java

lrwxrwxrwx. 1 root root 34  3 mars  10:16 /etc/alternatives/java -> /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java

Pour voir les alternatives présente pour la commande java:

alternatives --config java

Qui nous donne comme retour:

Il existe 2 programmes qui fournissent « java ».
Sélection Commande
-----------------------------------------------
*+1 /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
2 /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java
Entrez pour garder la sélection courante [+] ou saisissez le numéro de type de sélection :

On peut voir que la commande java pointera sur l’exécutable « /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java » par le signe + devant, l’étoile correspond au choix par défaut (option –auto).

On va maintenant installer le JDK d’oracle pour modifier l’exécutable utilisé.
Maintenant que c’est installé on refait la commande suivante:

alternatives --config java

Et sur la sortie de la commande, on peut voir qu’il y a une nouvelle entrée:

Il existe 3 programmes qui fournissent « java ».
Sélection    Commande
-----------------------------------------------
*+ 1        /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
2           /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java
3           /usr/java/jdk1.8.0_72/jre/bin/java
Entrez pour garder la sélection courante [+] ou saisissez le numéro de type de sélection :3

On tape 3 pour sélectionner le JDK oracle.

On refait cette commande pour vérifier que cela à bien été pris en compte par alternatives:

alternatives --config java

Il existe 3 programmes qui fournissent « java ».
Sélection    Commande
-----------------------------------------------
*  1        /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/java
2           /usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java
+3           /usr/java/jdk1.8.0_72/jre/bin/java
Entrez pour garder la sélection courante [+] ou saisissez le numéro de type de sélection :3

Et maintenant si on redemande à java sa version:

java -version

java version "1.8.0_72"
Java(TM) SE Runtime Environment (build 1.8.0_72-b15)
Java HotSpot(TM) 64-Bit Server VM (build 25.72-b15, mixed mode)

Il peut être aussi utile de spécifier toutes les dépendances (avec l’option —slave) lier à cette même commande.
Grâce à cela, si l’on change la version de la commande java, toutes les commandes slave seront changés également.

Syntaxe pour ajouter une dépendance:

alternatives --slave <lien de la commande alternatives> <nom> <chemin de l’exécutable souhaité>

Exemple pour ajouter une dépendance:

alternatives --slave /usr/bin/rmiregistry rmiregistry /usr/lib/jvm/jre-1.7.0-openjdk.x86_64/bin/rmiregistry

Pour valider tout cela, on termine par un export de la variable JAVA_HOME dans son PATH, via son .bashrc (ou celui de l’utilisateur qui utilisera la commande):

JAVA_HOME=/usr/java/jdk1.8.0_72
export JAVA_HOME
PATH=$JAVA_HOME/bin:$PATH

3 mars 2016 /

BaseX est un système de gestion de base de données XML native et légère, développé en tant que projet communautaire sur GitHub1. BaseX est spécialisé dans le stockage, le requêtage et la visualisation de larges documents et collections de documents XML. BaseX fonctionne sur toutes plates-formes et est distribué sous une licence libre.

Pour une installation dans /opt :

cd /opt

On récupère l’URL des binaires à cette adresse (un repository est aussi disponible, mais la version disponible est la 7.9):

http://basex.org/products/download/all-downloads/

Téléchargement et extraction des binaires:

wget http://files.basex.org/releases/8.3.1/BaseX831.zip
unzip BaseX831.zip
rm BaseX831.zip

Création du service:

useradd basexhttp
chown -R basexhttp /opt/basex
vi /etc/init.d/basexhttp

Et on y mets ce code:

# Processus: basexhttp
# chkconfig: 234 20 80
case $1 in
start)
su - basexhttp -c 'sh /opt/basex/bin/basexhttp -S'
;;
stop)
/opt/basex/bin/basexhttp stop
;;
restart)
/opt/basex/bin/basexhttp stop
su - basexhttp -c 'sh /opt/basex/bin/basexhttp -S'
;;
esac
exit 0

On donne les bons droits et on active le service:

chmod +x /etc/init.d/basexhttp
chkconfig basexhttp --add
chkconfig basexhttp on

Verification du service:

service basexhttp start
service basexhttp stop
service basexhttp restart

Création d’une base de donnée:

Il faut d’abord se rendre à l’adresse suivante http://localhost:8984/dba/databases (login/passwd = admin/admin)

Puis cliquer sur le bouton « Create » en donnant un nom à la base de donnée  (ici « pocefl »)

Si cette étape réussie vous devriez voir cela :

basex

 

1 mars 2016 /

Voici un petit mémo pour créer un utilisateur et son mot de passe sur une ligne de commande.

Pour créer l’utilisateur starmate et lui mettre azerty en mot de passe (en root sur RedHat et dérivés):

useradd starmate ; echo azerty | passwd --stdin starmate

Pour Debian/Ubuntu et ses dérivés, toujours en root (le \n fait un retour à la ligne):

useradd starmate ; echo -e "azerty\nazerty" | passwd starmate

Et sinon, cette commande marche partout (toujours en root):

useradd starmate ; echo 'starmate:azerty' | chpasswd

Du coup pour créer plusieurs utilisateurs et leur mot de passe sur la même ligne, en root (RedHat):

useradd starmate ; echo azerty | passwd --stdin starmate ; useradd antoine ; echo azerty | passwd --stdin antoine ; useradd francois ; echo azerty | passwd --stdin francois ; useradd pierre ; echo azerty | passwd --stdin pierre

Pour créer un utilisateur et son un mot de passe sur 100 serveurs RedHat allant de 10.16.54.1 à 10.16.54.100:

for ((i=1;i<=100;i++)); do ssh root@10.16.54.$i 'useradd starmate ; echo azerty | passwd --stdin starmate'; done

La même chose pour 100 serveurs Debian/Ubuntu:

for ((i=1;i<=100;i++)); do ssh root@10.16.54.$i 'useradd starmate ; echo -e "azerty\nazerty" | passwd starmate'; done

Pour créer un utilisateur et son un mot de passe sur 2 serveurs RedHat et 2 serveurs Debian:

for i in redhat1 redhat2 debian1 ubuntu1 ;  do ssh root@$i 'useradd starmate ; echo 'starmate:azerty' | chpasswd'; done

Dernier exemple pour des serveurs RedHat renseignés dans un fichier (1 par ligne):

for i in `cat serveurs.txt`; do ssh root@$i 'echo -e "useradd starmate ; echo azerty | passwd --stdin starmate'; done

Du coup, faites attention à votre historique, les mots de passe y seront affichés en clair.

29 février 2016 /

MariaDB est un système de gestion de base de données édité sous licence GPL. Il s’agit d’un fork communautaire de MySQL : la gouvernance du projet est assurée par la fondation MariaDB2, et sa maintenance par la société Monty Program AB, créateur du projet3. Cette gouvernance confère au logiciel l’assurance de rester libre.

Si MySQL est déjà installé sur votre système, il faudra le désinstaller:

yum remove mysql-libs-5.1.73-5.el6_6.x86_64 mysql-server-5.1.73-5.el6_6.x86_64 mysql-devel-5.1.73-5.el6_6.x86_64 mysql-5.1.73-5.el6_6.x86_64

Il faut maintenant créer le fichier du dépôt Yum pour MariaDB:

vi /etc/yum.repos.d/MariaDB.repo

Et on y met le texte suivant:

# MariaDB 5.5 RedHat repository list - created 2013-08-11 14:30 UTC
# http://mariadb.org/mariadb/repositories/
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/5.5/rhel6-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

On mets à jour la liste des paquets et on installe MariaDB:

yum update
yum install MariaDB-server MariaDB-client

On test le fonctionnement du service:

service mysql start
service mysql stop

Pour les autres dépôts, c’est ici.

25 février 2016 /

MongoDB (de l’anglais humongous qui peut être traduit par « énorme ») est un système de gestion de base de données orientée documents, répartissable sur un nombre quelconque d’ordinateurs (cluster) et ne nécessitant pas de schéma prédéfini des données.
Il est écrit en C++. Le serveur et les outils sont distribués sous licence AGPL, les pilotes sous licence Apache et la documentation sous licence Creative Commons2.
Il fait partie de la mouvance NoSQL.

Pour installer MongoDB, il faut tout d’abord renseigner le repository:

vi /etc/yum.repos.d/mongodb-enterprise.repo

Et on y met ce texte:
[mongodb-enterprise]
name=MongoDB Enterprise Repository
baseurl=https://repo.mongodb.com/yum/redhat/$releasever/mongodb-enterprise/stable/$basearch/
gpgcheck=0
enabled=1

Il nous faut maintenant remettre à jour la liste des paquets:

yum update

On peut maintenant installer MongoDB (et ses dépendances):

yum install -y mongodb-enterprise

Pour un bon fonctionnement penser a désactiver Selinux:

vi /etc/selinux/config

et mettre le paramètre SELinux sur disabled ou permissive:

SELINUX=disabled

ou

SELINUX=permissive

Sinon vous pouvez activer le port MongoDB (27017 sur SELinux):

semanage port -a -t mongod_port_t -p tcp 27017

On ajoute et on active le service:

chkconfig mongod on
chkconfig --list mongod

Test du service :

service mongod start
service mongod stop

Changement de l’adresse en écoute par Mongo:

vi /etc/mongod.conf

Par défaut, Mongo n’écoute que localhost, pour modifier cela, il faudra commenter la ligne suivante :

bindIp: 127.0.0.1 # Listen to local interface only, comment to listen on all interfaces.

Comme cela :

#bindIp: 127.0.0.1 # Listen to local interface only, comment to listen on all interfaces.

Puis on relance le serveur mongo:

service mongod stop
service mongod start

Suite au attaque Ransomware sur les base MongoDB, il est recommandé de bloquer le port 27017 sur votre pare-feu ou de configurer MongoDB pour un accès en localhost (127.0.0.1) via /etc/mongodb.conf.