Applications
- Wiki
- Base SQL
- FTP
- Base NoSQL
- Gitlab
- OpenSSH
- DNS
- Mailserver
- Docker
- WAF
- Restic Backup
- Kubernetes
- Troubleshooting
Wiki
BookStack LAMP
Installation: Installing BookStack (Debian 11)
-
Install dependencies.
apt install -y git unzip apache2 php7.4 curl php7.4-fpm php7.4-curl php7.4-mbstring php7.4-ldap \ php7.4-tidy php7.4-xml php7.4-zip php7.4-gd php7.4-mysql libapache2-mod-php7.4 \ default-mysql-server -
Setup database.
DB_PASS="$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 13)" mysql -u root --execute="CREATE DATABASE bookstack;" mysql -u root --execute="CREATE USER 'bookstack'@'localhost' IDENTIFIED WITH mysql_native_password AS PASSWORD('$DB_PASS');" mysql -u root --execute="GRANT ALL ON bookstack.* TO 'bookstack'@'localhost';FLUSH PRIVILEGES;" -
Install PHP package manager.
# Install composer EXPECTED_CHECKSUM="$(php -r 'copy("https://composer.github.io/installer.sig", "php://stdout");')" php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" ACTUAL_CHECKSUM="$(php -r "echo hash_file('sha384', 'composer-setup.php');")" if [ "$EXPECTED_CHECKSUM" != "$ACTUAL_CHECKSUM" ] then >&2 echo 'ERROR: Invalid composer installer checksum' rm composer-setup.php exit 1 fi php composer-setup.php --quiet rm composer-setup.php # Move composer to global installation mv composer.phar /usr/local/bin/composer -
Download BookStack PHP webapp files.
cd /var/www git clone https://github.com/BookStackApp/BookStack.git --branch release --single-branch bookstack cd bookstack -
Configure BookStack.
# Install BookStack composer dependencies export COMPOSER_ALLOW_SUPERUSER=1 php /usr/local/bin/composer install --no-dev --no-plugins # Copy and update BookStack environment variables cp .env.example .env sed -i.bak "s@APP_URL=.*\$@APP_URL=http://$DOMAIN@" .env sed -i.bak 's/DB_DATABASE=.*$/DB_DATABASE=bookstack/' .env sed -i.bak 's/DB_USERNAME=.*$/DB_USERNAME=bookstack/' .env sed -i.bak "s/DB_PASSWORD=.*\$/DB_PASSWORD=$DB_PASS/" .env # Generate the application key php artisan key:generate --no-interaction --force # Migrate the databases php artisan migrate --no-interaction --force # Set file and folder permissions chown www-data:www-data -R bootstrap/cache public/uploads storage && chmod -R 755 bootstrap/cache public/uploads storage -
Configure Apache to serve new BookStack app.
# Set up apache a2enmod rewrite a2enmod php7.4 # Create apache config file to serve webapp vim /etc/apache2/sites-available/bookstack.conf <VirtualHost *:80> ServerName 10.10.10.100 # Set to static IP otherwise define hostname in DNS entry for it to work. ServerAdmin webmaster@localhost DocumentRoot /var/www/bookstack/public/ <Directory /var/www/bookstack/public/> Options Indexes FollowSymLinks AllowOverride None Require all granted <IfModule mod_rewrite.c> <IfModule mod_negotiation.c> Options -MultiViews -Indexes </IfModule> RewriteEngine On # Handle Authorization Header RewriteCond %{HTTP:Authorization} . RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] # Redirect Trailing Slashes If Not A Folder... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} (.+)/$ RewriteRule ^ %1 [L,R=301] # Handle Front Controller... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] </IfModule> </Directory> ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> -
Verify config file and enable it
apachectl configtest a2dissite 000-default.conf # Disable default website a2ensite bookstack.conf systemctl restart apache2 -
Login into Bookstack: Browser > $BOOKSTACK_IP > Login('admin@admin.com', 'password')
BookStack on Docker
Base SQL
PostgreSQL
Replication
Check from master
select * from pg_stat_replication;
Check from slave
select * from pg_stat_wal_receiver;
CentOS 7
PostgreSQL, also known as Postgres, is a free and open-source relational database management system emphasizing extensibility and SQL compliance.
Installation
source : https://tecadmin.net/install-postgresql-11-on-centos/
sudo yum install https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
yum install postgresql${version}-server
/usr/pgsql-${version}/bin/postgresql-${version}-setup initdb
systemctl enable postgresql-${version}.service systemctl start postgresql-${version}.service
postgres=# \password postgres
Upgrade
https://www.postgresql.org/docs/11/upgrading.html
Minor version
- Stopper le service postgreSQL
$ systemctl stop postgresql-11.service
- Faire un dump global
$ pg_dumpall > db.out
- Upgrader la version de postgreSQL
yum install postgresql11-${MINOR_VERSION}
yum install postgresql11-server-11.11-1PGDG.rhel7
Show available minor version
yum list postgresql11 --showduplicates
- Initier la base de données
/usr/pgsql-${version}/bin/postgresql-${version}-setup initdb
- Relancer le service
$ systemctl start postgresql-11.service
Effective MEP
service postgresql-11 stop
cp -fra /mnt/data1/pgsql /mnt/data1/pgsql-old-20220510
yum remove postgresql11
yum install postgresql11-11.11-1PGDG.rhel7 postgresql11-server-11.11-1PGDG.rhel7 postgresql11-contrib-11.11-1PGDG.rhel7
/usr/pgsql-11/bin/postgresql-11-setup initdb
service postgresql-11 start
Major version (WIP)
MariaDB
Install
https://computingforgeeks.com/how-to-install-mariadb-on-centos-rhel-7/
Binlog
https://smarttechways.com/2021/05/27/enable-disable-the-binary-log-in-mysql/
Check bin log is enabled (ON) or disabled (OFF)
mysql> show variables like 'log_bin';
Show the list of binary file created.
mysql> SHOW BINARY LOGS;
Enable the Binary Log in MySQL
--For enable, edit the my.ini file and enter following parameter
log-bin="RAC1-bin"
Disable the Binary log in MySQL
-- For disable the binary log, Edit the my.ini file
#log-bin="RAC1-bin" --Comment the log-bin parameter
skip-log-bin -- enter this in my.ini file and save and restart the mysql
MySQL
MySQL 8.0
- https://www.mysqltutorial.org/install-mysql-centos/
- https://www.mariuszantonik.com/2022/03/the-gpg-keys-listed-for-the-mysql-8-0-community-server-repository-are-already-installed-but-they-are-not-correct/
FTP
ProFTPd
mode SFTP
LoadModule mod_sftp.c
LoadModule mod_sftp_pam.c
<IfModule mod_sftp.c>
# On écoute sur le port 2222
Port 2222
# On active le mode SFTP
SFTPEngine on
# Emplacement des clés de cryptage
SFTPHostKey /etc/ssh/ssh_host_rsa_key2
SFTPHostKey /etc/ssh/ssh_host_dsa_key2
# Pour le moment, on met authentification par mot de passé
# On changera après par authentification par clé
SFTPAuthMethods password
# L’utilisateur est bloqué au repertoire qu’on lui a attribué
lors de sa création
DefaultRoot ~
# On ajoute les fichiers log pour le sftp
SFTPLog /etc/sftp/log/sftp.log
TransferLog /etc/sftp/log/sftp-transfer.log
</IfModule>
Base NoSQL
Gitlab
CI/CD
BASH
Require :
- https://github.com/mvdan/sh
- https://www.shellcheck.net/
.gitlab-ci.yml :
stages:
- shell-code-check
- shell-code-formater
shellcheck:
image: koalaman/shellcheck-alpine:stable
stage: shell-code-check
before_script:
- shellcheck --version
- apk update
- apk add git
script:
- git ls-files --exclude='*.sh' --ignored -c -z | xargs -0r shellcheck
shfmt:
dependencies:
- shellcheck
image: mvdan/shfmt:latest-alpine
stage: shell-code-formater
before_script:
- shfmt -version
- apk update
- apk add git
script:
- git ls-files --exclude='*.sh' --ignored -c -z | xargs -0r shfmt -i 2 -ci -d
CLI git
git fetch upstream/master ; git rebase -i upstream/master
OpenSSH
SFTP over SSH
DNS
Bind9 | Named
Cache
https://linuxconfig.org/how-to-view-and-clear-bind-dns-server-s-cache-on-linux
Power DNS
Mailserver
Postfix
https://electrictoolbox.com/postfix-email-size-limit/ postconf | grep message_size_limit
Docker
Docker
Docker
Delete all containers,networks,images don't use
docker system prune
Envoie/export de fichier dans un conteneur
• Local system to container : docker cp myfile.txt mycontainer:/path/to/destination
• Container to local system : docker cp mycontainer:/path/to/source myfile.txt
Check logs
• On service : docker service logs $ContainerName$
• On container : docker logs -f $ContainerName$
Gestion données du conteneur
Sauvegarder le conteneur
docker commit mon-conteneur backup/mon-conteneur
docker run -it backup/mon-conteneur
Exporter une image
docker save -o mon-image.tar backup/mon-conteneur
Importer une image
docker import mon-image.tar backup/mon-conteneur
Se connecter à un conteneur
docker exec
docker attach
Détruire un conteneur
docker kill (SIGKILL)
docker stop (SIGTERM puis SIGKILL)
docker rm (détruit complètement)
WAF
mod security
La commande suivante permet de générer les instructions SecRuleUpdateTargetById à partir des logs d'un serveur.
cat /var/log/messages | grep ModSec | perl -pe 's/.*at\s([^\s\.]+)\s*.*\[id "([0-9]+)"\].*/SecRuleUpdateTargetById $2 !$1/' | sort | uniq
cat /var/log/messages | grep ModSec | perl -pe 's/.*at\s([^\s\.]+)\s*.*\[id "([0-9]+)"\].*\[uri "([^\s\.]+)"\].*/<Location $3>SecRuleRemoveById $2<\/Location>/' | sort | uniq
Restic Backup
Restic : Déploiement
Docker Restic REST with SSL
Pré-requis :
- Posséder un binaire restic :
apt install restic - Posséder la suite openssl :
apt install openssl - Posséder docker et docker compose :
apt install docker docker-compose - Savoir lire :)
1) Préparation du répertoire projet
Variable de la documentation :
NAME_PROJECT=projet
PATH_PROJECT=/mnt/"${NAME_PROJECT}"
FOLDER_DATA_NAME=data
PATH_DATA="${PATH_PROJECT}"/"${FOLDER_DATA_NAME}"
PORT_EXPOSED=8009
USER_PROJECT=projet_user
SRV_RESTIC=127.0.0.1 #TEST EN LOCAL
Créer votre répertoire de projet :
mkdir /mnt/projet && cd $_
Créer le répertoire de sauvegarde dans le projet =
mkdir /mnt/projet/data
2) Générer un utilisateut restic
Créer un utilisateur pouvant intéragir avec le répertoire de sauvegarde :
htpasswd -B -c ${PATH_DATA}/.htpasswd projet_user
Un prompt apparaîtra afin de valider votre mot de passe.
3) Générer une paire de clés SSL
Créer un bundle de clés SSL ou importer les vôtre sous le format :
- public_key
- private_key
Méthode 1 : Let's Encrypt
Il est préférable d'utiliser une paire de clés valide via let's encrypt par exemple :
certbot certonly --standalone -d ${DOMAINE}
Il faudra suite intégrer les clés dans votre espace data :
cp -fra /etc/letsencrypt/archive/${DOMAINE}/fullchain1.pem ${PATH_DATA}/public_key
cp -fra /etc/letsencrypt/archive/${DOMAINE}/privkey1.pem ${PATH_DATA}/private_key
Méthode 2 : Snakeoil
Voici une manière manuelle de les générer :
openssl req -newkey rsa:4096 -x509 -sha512 -days 365 -nodes -out ${PATH_DATA}/public_key -keyout ${PATH_DATA}/private_key
Cette méthode vous obligera à indiquer à restic de ne pas prendre en compte la validité du certificat via l'option :
restic --insecure-tls
4) Préparer votre docker-compose.yml
Créer votre fichier docker-compose.yml en modifiant les valeurs entre "{{ }}" :
vim ${PATH_PROJECT}/docker-compose.yml
services:
rest_server_{{ NAME_PROJECT }}:
command:
- "/entrypoint.sh"
container_name: "rest_server_{{ NAME_PROJECT }}"
environment:
- "OPTIONS=--tls --prometheus"
- "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
- "DATA_DIRECTORY=/data"
- "PASSWORD_FILE=/data/.htpasswd"
hostname: "rest_server_{{ NAME_PROJECT }}"
image: "restic/rest-server"
ipc: "private"
labels:
org.opencontainers.image.source: "https://github.com/restic/rest-server"
org.opencontainers.image.title: "rest-server"
logging:
driver: "json-file"
options: {}
ports:
- "{{ PORT_EXPOSED }}:8000/tcp"
volumes:
- "{{ PATH_DATA }}:/data"
version: "3.6"
Lancer ensuite votre instance restic
cd "${PATH_PROJECT}"
docker-compose up -d
5) Initialiser le workspace de sauvegarde
Init : initialiser un répertoire de sauvegarde
restic -r rest:https://${USER_PROJECT}:{{ MOT DE PASSE ETAPE 3 }}@${SRV_RESTIC}:${PORT_EXPOSED} init
Votre dépôt comporte désormais un répertoire de sauvegarde.
6) Bashrc && alias
Sur votre utilisateur courant (différent de root), éditer votre fichier bashrc
vim /home/user/.bashrc
export RESTIC_PASSWORD="${USER_MDP}"
export RESTIC_REPOSITORY="rest:https://${USER_PROJECT}:${USER_MDP}@${SRV_RESTIC}:${PORT_EXPOSED}/"
Se reconnecter sur sa session ou charger le fichier bashrc :
source /home/user/.bashrc
Cela permet ensuite d'utiliser le binaire vers votre dépôt de sauvegarde sans à divulguer toutes les informations :
zayad@vmi2007645:~$ restic stats
repository 6d0ed1e0 opened (repository version 2) successfully, password is correct
scanning...
Stats in restore-size mode:
Snapshots processed: 2
Total File Count: 281
Total Size: 24.191 KiB
Restic : Ligne de commandes
Bashrc & Alias
Sur votre utilisateur courant (différent de root), éditer votre fichier bashrc
vim /home/user/.bashrc
alias restic='restic --insecure-tls'
export RESTIC_PASSWORD="${USER_MDP}"
export RESTIC_REPOSITORY="rest:https://${USER_PROJECT}:${USER_MDP}@${SRV_RESTIC}:${PORT_EXPOSED}/"
Cela permet ensuite d'utiliser le binaire vers votre dépôt de sauvegarde sans à divulguer toutes les informations :
zayad@vmi2007645:~$ restic stats
repository 6d0ed1e0 opened (repository version 2) successfully, password is correct
scanning...
Stats in restore-size mode:
Snapshots processed: 2
Total File Count: 281
Total Size: 24.191 KiB
Backing Up
restic backup ~/directory-to-backup --pack-size=60
Cleanup
With every backup, Restic is creating a new snapshot with contents of a directory at the moment. To remove old and unused snapshots we need to execute the forget command:
restic forget --keep-last 2 --prune
Check
If you want to verify the consistency of your backup, run the check command:
restic check
Restore
To restore the latest snapshot of your backup:
restic restore latest --target ~/restore
Restic : Annexes
Logiciels clients
Testé et approuvé :
- Restic-browser https://github.com/emuell/restic-browser
Restic
- Restatic : https://github.com/Mebus/restatic
- autorestic : https://github.com/cupcakearmy/autorestic
- crestic : https://github.com/nils-werner/crestic
- Runrestic : https://github.com/sinnwerkstatt/runrestic
- restic-windows-backup : https://github.com/kmwoley/restic-windows-backup
Restic : Scénarios de sauvegarde
Sauvegarde MariaDB
#!/bin/bash
DATE=$(date +%Y%m%d-%Hh%M)
DUMP="/mnt/data/dump"
## Récupérer les bdd présent dans le SGBDR
listBdd=$(echo "SHOW DATABASES" |mysql |grep -v "Database" |grep -v "schema")
##Backup bases de données
for bdd in ${listBdd};
do
echo "Dump des bases de données avant sauvegarde"
echo "Création du répertoire temporaire pour les dump"
mkdir -p ${DUMP}
echo "dump de la base $bdd "
echo ""
mysqldump $bdd | gzip -9 > ${DUMP}/${bdd}.sql.tar.gz && bddName=${bdd}.sql.tar.gz
echo "Lancement de la sauvegarde pour la BDD ${bdd}"
restic backup --tag="bdd-$bdd-${DATE}" ${DUMP}/${bddName} --quiet
if [ $? == 0 ]
then
echo "La sauvegarde de la bdd ${bdd} est effective"
else
echo "Echec de la sauvegarde"
let "ERROR+=1"
fi
done
Sauvegarde Conf & Logs
#!/bin/bash
DATE=$(date +%Y%m%d-%Hh%M)
CONF="/etc/apache2 /etc/mysql /etc/ssh /root /etc/letsencrypt /etc/fail2ban /etc/php /etc/redis /etc/memcached.conf"
SITE="/var/www/html/"
LOG="/var/log"
## Récupérer les bdd présent dans le SGBDR
listBdd=$(echo "SHOW DATABASES" |mysql |grep -v "Database" |grep -v "schema")
##Backup conf & logs
for var in ${CONF} ${SITE} ${LOG}
do
echo "Lancement de la sauvegarde pour les données du répertoire ${var}"
DATE=$(date +%Y%m%d-%Hh%M)
restic backup --tag="$var-${DATE}" $var --quiet
if [ $? == 0 ]
then
echo "La sauvegarde du répertoire ${var} est effective"
else
echo "Echec de la sauvegarde"
let "ERROR+=1"
fi
done
Kubernetes
TP : Déploiement K8s 3 noeuds avec NFS
Source :
- https://akylson.com/kubernetes-cluster-on-debian-12-34d7d0ef5e92
- https://computingforgeeks.com/configure-nfs-as-kubernetes-persistent-volume-storage/
Lien pour avoir des ressources K8s à gogo :
- https://killercoda.com/playgrounds/scenario/kubernetes
- https://labs.play-with-k8s.com/
Périmètre de test
-
Workers K8s inet 192.168.1.184/24 brd 192.168.1.255 scope global dynamic enp0s3
-
Workers K8s inet 192.168.1.84/24 brd 192.168.1.255 scope global dynamic enp0s3
-
Workers K8s inet 192.168.1.175/24 brd 192.168.1.255 scope global dynamic enp0s3
-
1 Control Plane K8s : inet 192.168.1.27/24 brd 192.168.1.255 scope global dynamic enp0s3
-
1 serveurs NFS : inet 192.168.1.82/24 brd 192.168.1.255 scope global dynamic enp0s3
Mise en place d'un cluster k8s 3 noeuds
- https://akylson.com/kubernetes-cluster-on-debian-12-34d7d0ef5e92
root@ctrl:~# apt -y install containerd iptables apt-transport-https gnupg2 curl sudo
root@ctrl:~# cat > /etc/sysctl.d/99-k8s-cri.conf <<EOF
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.ipv4.ip_forward=1
EOF
root@ctrl:~# sysctl --system
root@ctrl:~# modprobe overlay; modprobe br_netfilter
root@ctrl:~# echo -e overlay\\nbr_netfilter > /etc/modules-load.d/k8s.conf
# needs [iptables-legacy] for iptables backend
# if nftables is enabled, change to [iptables-legacy]
root@ctrl:~# update-alternatives --config iptables
There are 2 choices for the alternative iptables (providing /usr/sbin/iptables).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/sbin/iptables-nft 20 auto mode
1 /usr/sbin/iptables-legacy 10 manual mode
2 /usr/sbin/iptables-nft 20 manual mode
Press <enter> to keep the current choice[*], or type selection number: 1
update-alternatives: using /usr/sbin/iptables-legacy to provide /usr/sbin/iptables (iptables) in manual mode
# disable swap
root@ctrl:~# swapoff -a
root@ctrl:~# vi /etc/fstab
# comment out
#/dev/mapper/debian--vg-swap_1 none swap sw 0 0
# switch to Cgroup v1 (v2 is the default)
root@ctrl:~# vi /etc/default/grub
# line 10 : add
GRUB_CMDLINE_LINUX="systemd.unified_cgroup_hierarchy=0"
root@ctrl:~# update-grub
root@ctrl:~# reboot
COngifurer le serveur NFS
- https://computingforgeeks.com/configure-nfs-as-kubernetes-persistent-volume-storage/
Configurer le pool de stockage
apt install lvm2
fdisk /dev/sdb
pvcreate /dev/sdb1
vgcreate data /dev/sdb1
lvcreate -n k8s_data -L 50G data
mkfs.ext4 /dev/data/k8s_data
mkdir -p /data/k8s
/etc/fstab :
/dev/data/k8s_data /data/k8s ext4 defaults 0 0
mount /data/k8s/
root@k8snfs:~# lsblk
sdb 8:16 0 50G 0 disk
└─sdb1 8:17 0 50G 0 part
└─data-k8s_data 254:0 0 45G 0 lvm /data/k8s
Configure NFS
apt update
apt install nfs-kernel-server
/etc/idmapd.conf :
[General]
Domain = zayad.k8s
/etc/exports :
/data/k8s/ 192.168.1.0/24(rw,no_root_squash)
systemctl restart nfs-server
systemctl daemon-reload
Installer helm : https://helm.sh/docs/intro/install/
Troubleshooting
Médicat
URL project : https://medicatusb.com/
Source de la documentation : https://lecrabeinfo.net/tutoriels/reinitialiser-mot-de-passe-windows-perdu-ou-oublie-avec-cle-usb-medicat/
Pré-requis: Avoir une clé USB d'au moins 32 Go (ou du moins une partition)
Pré-requis: Désactiver son anti-virus
Installation
Installer le script sur l'environnement souhaité (il gère automatiquement la clé bootable ainsi que l'intégration de l'ISO)
Prévoir plus de 22Go d'archive sur la clé USB qui tournera sous ventoy : https://www.ventoy.net/en/index.html
Premier Pas
Modifier la langue et le clavier dans médicat
- Modifier la disposition du clavier pour le français en utilisant le raccourci clavier CTRL + TAB
- Une icône drapeau français devrait aprendre la place dans la zone de notification
Password Removal Tools
Il existe 3 méthodes pour supprimer un mot de passe
PasswordChanger ( PCUnlocker)
- Ouvrez PCUnlocker Entreprise :
- sur le Bureau, double-cliquez sur Reset User Passwords.
- dans les PortableApps, sélectionnez Reset User Account Passwords.
- Sélectionnez le compte utilisateur avec le mot de passe à réinitialiser puis cliquez sur Reset Password.
- Confirmez la réinitialisation du mot de passe du compte utilisateur en cliquant sur Yes.
- Voilà, le mot de passe de l’utilisateur a bien été effacé !
- Redémarrez votre ordinateur puis connectez-vous avec le compte utilisateur. N’oubliez pas de définir un nouveau mot de passe !
Reset User Account Passwords (Active@ Password Changer Ultimate)
- Ouvrez Active@ Password Changer Ultimate en sélectionnant PasswordChanger dans les PortableApps. Sur le premier écran, cliquez sur Next.
- Sélectionnez Search all volumes for Microsoft Security Accounts Manager Database (SAM) puis cliquez sur Next. Si vous souhaitez sélectionner manuellement la partition où se trouve Windows, sélectionnez une des deux autres options.
- Sélectionnez le fichier SAM de votre installation de Windows puis cliquez sur Next.
- Sélectionnez le compte utilisateur avec le mot de passe à réinitialiser puis cliquez sur Next.
- Vérifiez que la case Clear this User’s Password est bien cochée puis cliquez sur Next.
- Confirmez la réinitialisation du mot de passe en cliquant sur Yes.
- Voilà, le mot de passe de l’utilisateur a bien été effacé !
- Redémarrez votre ordinateur puis connectez-vous avec le compte utilisateur. N’oubliez pas de définir un nouveau mot de passe !
Windows Password Recovery Pro
- Ouvrez Windows Password Recovery Pro en sélectionnant Windows Password Recovery dans les PortableApps.
- Sélectionnez l’installation de Windows, le compte utilisateur avec le mot de passe à réinitialiser puis cliquez sur Reset Password.
- Cliquez sur Yes. Voilà, le mot de passe de l’utilisateur a bien été effacé !
- Redémarrez votre ordinateur puis connectez-vous avec le compte utilisateur. N’oubliez pas de définir un nouveau mot de passe !