Lock user. private root et subdir

This commit is contained in:
Maniack Crudelis 2016-09-16 21:35:24 +02:00
parent 87c11e557d
commit 1daf9b072d
6 changed files with 83 additions and 67 deletions

View file

@ -12,6 +12,13 @@ echo ""
# Récupère le dossier du script
if [ "${0:0:1}" == "/" ]; then script_dir="$(dirname "$0")"; else script_dir="$PWD/$(dirname "$0" | cut -d '.' -f2)"; fi
# Check user
if [ "$USER" != "$(cat "$script_dir/sub_scripts/setup_user")" ]; then
echo -e "\e[91mCe script doit être exécuté avec l'utilisateur $(cat "$script_dir/sub_scripts/setup_user")"
echo -en "\e[0m"
exit 0
fi
source "$script_dir/sub_scripts/lxc_launcher.sh"
source "$script_dir/sub_scripts/testing_process.sh"
source /usr/share/yunohost/helpers
@ -522,8 +529,8 @@ then # Si le fichier check_process est trouvé
fi
if echo "$LIGNE" | grep -q "(PUBLIC"; then # Accès public/privé dans le manifest
MANIFEST_PUBLIC=$(echo "$LIGNE" | cut -d '=' -f1) # Récupère la clé du manifest correspondant à l'accès public ou privé
MANIFEST_PUBLIC_public=$(echo "$LIGNE" | grep -o "|public=[a-Z]*" | cut -d "=" -f2) # Récupère la valeur pour un accès public.
MANIFEST_PUBLIC_private=$(echo "$LIGNE" | grep -o "|private=[a-Z]*" | cut -d "=" -f2) # Récupère la valeur pour un accès privé.
MANIFEST_PUBLIC_public=$(echo "$LIGNE" | grep -o "|public=[a-Z0-9]*" | cut -d "=" -f2) # Récupère la valeur pour un accès public.
MANIFEST_PUBLIC_private=$(echo "$LIGNE" | grep -o "|private=[a-Z0-9]*" | cut -d "=" -f2) # Récupère la valeur pour un accès privé.
LIGNE=$(echo "$LIGNE" | cut -d '(' -f1) # Retire l'indicateur de clé de manifest à la fin de la ligne
fi
if echo "$LIGNE" | grep -q "(PASSWORD)"; then # Password dans le manifest

View file

@ -1,7 +1,7 @@
#!/bin/bash
# Récupère le dossier du script
if [ "${0:0:1}" == "/" ]; then script_dir="$(dirname "$0")"; else script_dir="$PWD/$(dirname "$0" | cut -d '.' -f2)"; fi
if [ "${0:0:1}" == "/" ]; then script_dir="$(dirname "$0")"; else script_dir="$(echo $PWD/$(dirname "$0" | cut -d '.' -f2) | sed 's@/$@@')"; fi
LOG_BUILD_LXC="$script_dir/Build_lxc.log"
PLAGE_IP="10.1.4"
@ -10,14 +10,8 @@ DOMAIN=domain.tld
YUNO_PWD=admin
LXC_NAME=pchecker_lxc
# Check root
CHECK_ROOT=$EUID
if [ -z "$CHECK_ROOT" ];then CHECK_ROOT=0;fi
if [ $CHECK_ROOT -eq 0 ]
then # $EUID est vide sur une exécution avec sudo. Et vaut 0 pour root
echo "Le script ne doit pas être exécuté avec les droits root"
exit 1
fi
# Check user
echo $USER > "$script_dir/setup_user"
echo "> Update et install lxc lxctl" | tee "$LOG_BUILD_LXC"
sudo apt-get update >> "$LOG_BUILD_LXC" 2>&1

View file

@ -64,7 +64,7 @@ LXC_STOP () {
LXC_TURNOFF () {
echo "Arrêt du réseau pour le conteneur."
# Suppression des règles de parefeu
if sudo iptables -D FORWARD -i lxc-pchecker -o eth0 -j ACCEPT 2> /dev/null
if sudo iptables -C FORWARD -i lxc-pchecker -o eth0 -j ACCEPT 2> /dev/null
then
sudo iptables -D FORWARD -i lxc-pchecker -o eth0 -j ACCEPT >> "$RESULT" 2>&1
fi

View file

@ -5,13 +5,11 @@ if [ "${0:0:1}" == "/" ]; then script_dir="$(dirname "$0")"; else script_dir="$P
LXC_NAME=$(cat "$script_dir/lxc_build.sh" | grep LXC_NAME= | cut -d '=' -f2)
# Check root
CHECK_ROOT=$EUID
if [ -z "$CHECK_ROOT" ];then CHECK_ROOT=0;fi
if [ $CHECK_ROOT -eq 0 ]
then # $EUID est vide sur une exécution avec sudo. Et vaut 0 pour root
echo "Le script ne doit pas être exécuté avec les droits root"
exit 1
# Check user
if [ "$USER" != "$(cat "$script_dir/sub_scripts/setup_user")" ]; then
echo -e "\e[91mCe script doit être exécuté avec l'utilisateur $(cat "$script_dir/sub_scripts/setup_user")"
echo -en "\e[0m"
exit 0
fi
echo "> Retire l'ip forwarding."

View file

@ -6,6 +6,13 @@ if [ "${0:0:1}" == "/" ]; then script_dir="$(dirname "$0")"; else script_dir="$P
PLAGE_IP=$(cat "$script_dir/lxc_build.sh" | grep PLAGE_IP= | cut -d '"' -f2)
LXC_NAME=$(cat "$script_dir/lxc_build.sh" | grep LXC_NAME= | cut -d '=' -f2)
# Check user
if [ "$USER" != "$(cat "$script_dir/sub_scripts/setup_user")" ]; then
echo -e "\e[91mCe script doit être exécuté avec l'utilisateur $(cat "$script_dir/sub_scripts/setup_user")"
echo -en "\e[0m"
exit 0
fi
echo "> Active le bridge réseau"
if ! sudo ifquery lxc-pchecker --state > /dev/null
then
@ -39,9 +46,9 @@ sleep 3
sudo lxc-ls -f
echo "> Update"
update_apt=0
sudo lxc-attach -n $LXC_NAME -- apt-get update
sudo lxc-attach -n $LXC_NAME -- apt-get dist-upgrade --dry-run | grep -q "^Inst " # Vérifie si il y aura des mises à jour.
update_apt=0
if [ "$?" -eq 0 ]; then
update_apt=1
fi

View file

@ -477,16 +477,27 @@ CHECK_PUBLIC_PRIVATE () {
if [ "$1" == "public" ]; then
MANIFEST_ARGS_MOD=$(echo $MANIFEST_ARGS_MOD | sed "s/$MANIFEST_PUBLIC=[a-Z0-9]*\&/$MANIFEST_PUBLIC=$MANIFEST_PUBLIC_public\&/")
fi
if [ "$GLOBAL_CHECK_ROOT" -eq 1 ]; then # Utilise une install root, si elle a fonctionné
for i in 0 1
do # 2 passes, pour effectuer un test en root et en sub_dir
if [ "$i" -eq 0 ]
then # Commence par l'install root
if [ "$GLOBAL_CHECK_ROOT" -eq 1 ] || [ "$force_install_ok" -eq 1 ]; then # Utilise une install root, si elle a fonctionné. Ou si l'argument force_install_ok est présent.
MANIFEST_ARGS_MOD=$(echo $MANIFEST_ARGS_MOD | sed "s@$MANIFEST_PATH=[a-Z/$]*\&@$MANIFEST_PATH=/\&@")
CHECK_PATH="/"
elif [ "$GLOBAL_CHECK_SUB_DIR" -eq 1 ] || [ "$force_install_ok" -eq 1 ]; then # Si l'install en sub_dir à fonctionné. Ou si l'argument force_install_ok est présent. Utilise ce mode d'installation
else
echo "L'installation à la racine n'a pas fonctionnée, impossible d'effectuer ce test..."
continue;
fi
elif [ "$i" -eq 1 ]
then # Puis teste l'install sub_dir
if [ "$GLOBAL_CHECK_SUB_DIR" -eq 1 ] || [ "$force_install_ok" -eq 1 ]; then # Si l'install en sub_dir à fonctionné. Ou si l'argument force_install_ok est présent. Utilise ce mode d'installation
MANIFEST_ARGS_MOD=$(echo $MANIFEST_ARGS_MOD | sed "s@$MANIFEST_PATH=[a-Z/$]*\&@$MANIFEST_PATH=$PATH_TEST\&@")
CHECK_PATH="$PATH_TEST"
else
echo "Aucun mode d'installation n'a fonctionné, impossible d'effectuer ce test..."
echo "L'installation en sous-dossier n'a pas fonctionnée, impossible d'effectuer ce test..."
return;
fi
fi
# Installation de l'app
SETUP_APP
# Test l'accès à l'app
@ -521,16 +532,15 @@ CHECK_PUBLIC_PRIVATE () {
GLOBAL_CHECK_PUBLIC=-1 # Installation publique échouée
fi
fi
if [ "$no_lxc" -ne 0 ]; then
# Suppression de l'app si lxc n'est pas utilisé.
REMOVE_APP
elif [ "$auto_remove" -eq 0 ] && [ "$bash_mode" -ne 1 ]; then # Si l'auto_remove est désactivée. Marque une pause avant de continuer.
if [ "$auto_remove" -eq 0 ] && [ "$bash_mode" -ne 1 ]; then # Si l'auto_remove est désactivée. Marque une pause avant de continuer.
if [ "$no_lxc" -eq 0 ]; then
echo "Utilisez ssh pour vous connecter au conteneur LXC. 'ssh $ARG_SSH $LXC_NAME'"
fi
read -p "Appuyer sur une touche pour continuer les tests..." < /dev/tty
fi
REMOVE_APP
YUNOHOST_RESULT=-1
done
}
CHECK_MULTI_INSTANCE () {