Catégorie : Mémo

1 juillet 2016 /

Lors de l’exécution de la commande « setenforce 1 », vous pouvez recevoir en retour ce message:

setenforce 1

setenforce: SELinux is disabled

Cette erreur « setenforce: SELinux est désactivé » apparaît parce que vous avez désactivé définitivement SELinux sur votre serveur.

Cela peut ce vérifier via cette commande:

sestatus

setenforce command has no effect if you have selinux disabled permanently in the main configuration file.

Pour activer SELinux, éditez le fichier /etc/sysconfig/selinux :

vi /etc/sysconfig/selinux

Et définissez le paramètre SELinux sur la valeur « enforcing »:

SELINUX=enforcing
SELINUXTYPE=targeted

Si le fichier n’existe pas, créer le!

20 mai 2016 /

Lors de la duplication d’une VM, je suis tombé sur cette erreur, l’interface eth0 n’apparait pas avec la commande ifconfig:

ifconfig

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:15469561 errors:0 dropped:0 overruns:0 frame:0
TX packets:15469561 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:5183498564 (4.8 GiB) TX bytes:5183498564 (4.8 GiB)

Puis une tentative d’activation via ifup sur eth0 remonte cette fameuse erreur:

ifup eth0

Device eth0 does not seem to be present, delaying initialisation

6545

Pour solutionner le problème, et on commence par mettre à jour la carte mac avec sa nouvelle adresse:

vi /etc/sysconfig/network-scripts/ifcfg-eth0

Puis on supprime la configuration udev des interfaces réseaux (qui seront régénérés au redémarrage de la machine):

rm -f /etc/udev/rules.d/70-persistent-net.rules
reboot

2 mai 2016 /

Voici un petit mémo qui montre comment changer le répertoire de données MySQL par défaut, puis à régler SELinux pour qu’il tienne compte des changements.

Arrêt du serveur MySQL:

service mysqld stop

Création d’un nouveau répertoire de données:

mkdir /nouveau/repertoire/mysql
chown mysql:mysql /nouveau/repertoire/mysql

Déplacer la base de données d’origine:

mv /var/lib/mysql/* /nouveau/repertoire/mysql

Modification du fichier de configuration MySQL:

vi /etc/mysql/my.cnf

Et on y change cette ligne:

datadir = /var/lib/mysql

devient:

datadir = /nouveau/repertoire/mysql

ainsi que celle la:

socket = /var/lib/mysql/mysql.sock

qui devient:

socket = /nouveau/repertoire/mysql/mysql.sock

Mappage du contexte SELinux pour le répertoire /nouveau/repertoire/mysql/ , avec la commande semanage:

semanage fcontext -a -t mysqld_db_t "/nouveau/repertoire/mysql(/.*)?"

Application du contexte pour une prise en compte par le système à chaud:

restorecon -Rv /nouveau/repertoire/mysql/

Démarrage du serveur MySQL:

service mysqld start

Vérification de l’accès et de la connectivité:

mysql -u root -p

mysql> show databases;

Si cela fonctionne, vous avez changé le répertoire par défaut de MySQL avec une prise en compte par SELinux avec succès.

Par contre si vous obtenez un message de ce genre:

ERROR 2002 (HY000): Impossible de se connecter au serveur MySQL local par socket '/var/lib/mysql/mysql.sock'

Il faudra ajouter cela à votre fichier /etc/my.cnf :

[client]
socket = /srv/mysql/mysql.sock

Et dernière chose, pour éviter la connexion via le socket:

mysql -u root -p --protocol tcp

1 mai 2016 /

Telnet, (depuis un serveur distant)

telnet 192.168.0.14 20000

Si le port est ouvert:

Trying 192.168.0.14...
Connected to entropia (192.168.0.14).
Escape character is '^]'.

Si le port est fermé (ou service non démarré):

Trying 192.168.0.14...
telnet: connect to address 192.168.0.14: Connection refused
telnet: Unable to connect to remote host: Connection refused

Netstat, (pour tester en local)

netstat -paunt | grep 3306; echo $?

Si le port est ouvert:

tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      1979/mysqld
0

Si le port est fermé (ou service non démarré):

1

Netcat, (depuis un serveur distant)

nc -v -z 192.168.0.14 3306; echo $?

Si le port est ouvert:

Connection to 192.168.0.14 3306 port [tcp/mysql] succeeded!
0

Si le port est fermé (ou service non démarré):

nc: connect to 192.168.0.14 port 3306(tcp) failed: Connection refused
1

nc  192.168.0.14 3306< /dev/null ; echo $?

Si le port est ouvert:

4
5.1.73▒d))4f*<,i▒N*'%#~rC8/#`0

Si le port est fermé (ou service non démarré):
1

Wget pour tester un serveur web, (depuis un serveur distant)

wget -qO- 192.168.0.14:80 ; echo $?

wget -q --spider 192.168.0.14:80 ; echo $?

Curl, (depuis un serveur distant)

curl telnet://192.168.0.14:22

Si le port est ouvert, la commande restera bloquée car elle attend que l’on saisisse quelque chose. ctrl+c pour sortir.

Si le port est fermé:

curl: (7) couldn't connect to host

Bash, (depuis un serveur distant)

timeout 1 bash -c 'cat < /dev/null > /dev/tcp/192.168.0.14/22' ; echo $?

Si le port est ouvert:
0
Si le port est fermé:

bash: connect: Connexion refusée
bash: /dev/tcp/192.168.0.14/22: Connexion refusée
1

Nmap, (depuis un serveur distant)

nmap -p 80 192.168.0.14

Si le port est ouvert:

Starting Nmap 5.51 ( http://nmap.org ) at 2016-03-29 10:00 CEST
Nmap scan report for entropia.local (192.168.0.14)
Host is up (0.00068s latency).
PORT   STATE SERVICE
80/tcp open  http
MAC Address: 00:50:56:01:27:55 (VMware)
Nmap done: 1 IP address (1 host up) scanned in 0.12 seconds

Si le port est fermé:

Starting Nmap 5.51 ( http://nmap.org ) at 2016-03-29 10:06 CEST
Nmap scan report for entropia.local (192.168.0.14)
Host is up (0.00045s latency).
PORT   STATE  SERVICE
80/tcp closed http
MAC Address: 00:50:56:01:27:55 (VMware)
Nmap done: 1 IP address (1 host up) scanned in 0.10 seconds

Pour tester plusieurs port en même temps:

nmap -p 22,1944,20000 192.168.0.14

Python, (depuis un serveur distant)

python
import socket
clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
clientsocket.connect(('192.168.0.14' , 80))
clientsocket.sent('\n')

Si le port est ouvert, vous arriverez à faire un « clientsocket.sent(‘\n’) » (qui vous retournera surement cette une erreur):
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: '_socketobject' object has no attribute 'sent'

Si le port est fermé, au moment du « clientsocket.connect((‘192.168.0.14’ , 80)) » :
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 1, in connect
socket.error: [Errno 111] Connection refused

21 avril 2016 /

​Pour faire une modification sur la ligne du curseur:
:s/texte_à_remplacer/nouveau_texte/g​

​Pour agir sur l’ensemble du fichier:
:%s/texte_à_remplacer/nouveau_texte/g

​​​Pour agir sur l’ensemble du fichier avec une confirmation:
​​:%s/texte_à_remplacer/nouveau_texte/gc​

​Pour agir sur l’ensemble du fichier en ignorant la casse:
​​:%s/texte_à_remplacer/nouveau_texte/gci​

Pour agir sur l’ensemble du document​ en prenant en compte la casse:
:%s/texte_à_remplacer/nouveau_texte/gcI ​

Pour agir sur les lignes avec le mot rototo, remplaçant toto par titi, laissant intacte les lignes ne contenant pas le mot rototo​:
​:g/rototo/s/toto/titi/g

Pour agir sur une ligne commençant par le mot rototo, remplaçant toto par titi, laissant intacte les lignes ne contenant pas le mot rototo​:
:g/^rototo/s/toto/titi/g