From 68602589029d3262329bab8f0596b5ce20dfe98a Mon Sep 17 00:00:00 2001
From: David Beniamine <david.beniamine@tetras-libre.fr>
Date: Wed, 12 Mar 2025 16:44:18 +0100
Subject: [PATCH] WIP user management for #3

---
 .env.sample               |  1 +
 docker-compose.yml        |  6 ++----
 docker/Dockerfile         |  6 +++---
 docker/change_password.sh | 16 ++++++++++++++++
 docker/custom_startup.sh  | 14 +++-----------
 docker/shadow_monitor.sh  | 13 -------------
 6 files changed, 25 insertions(+), 31 deletions(-)
 create mode 100755 docker/change_password.sh
 delete mode 100755 docker/shadow_monitor.sh

diff --git a/.env.sample b/.env.sample
index 952bd55..c42984e 100644
--- a/.env.sample
+++ b/.env.sample
@@ -4,6 +4,7 @@ COMPOSE_FILE=docker-compose.yml:ports.yml
 
 PASS=MON_SUPER_MOT_DE_PASSE
 NAME=kasmVNC
+VNC_USER=kasm
 HOST=kasmVNC.tetras-lab.io
 PORT=6901
 
diff --git a/docker-compose.yml b/docker-compose.yml
index 2be139d..6529a4c 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -6,19 +6,17 @@ services:
       args:
         - SPYDER=${SPYDER}
         - ANACONDA=${ANACONDA}
-        - KASM_USER=${USER}
+        - KASM_USER=${VNC_USER}
     image: "kasmvnc-ubuntu-noble:spyder-${SPYDER}_anaconda-${ANACONDA}"
     container_name: KasmVNC-ubuntu
     volumes:
       - homedir:/home/:rw
-      - etc_shadow:/opt/shadow
     environment:
       - VNC_PW=${PASS}
       - SPYDER=${SPYDER}
       - ANACONDA=${ANACONDA}
-      - KASM_USER=${USER}
+      - KASM_USER=${VNC_USER}
 
 
 volumes:
   homedir:
-  etc_shadow:
diff --git a/docker/Dockerfile b/docker/Dockerfile
index 055cbe0..eac0215 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -19,7 +19,6 @@ RUN apt-get update && \
     apt-get -y dist-upgrade && \
     apt-get install -y \
                     firefox \
-                    gnome-system-tools \
                     inotify-tools \
                     language-pack-fr \
                     language-pack-fr-base \
@@ -28,7 +27,8 @@ RUN apt-get update && \
     locale-gen --purge fr_FR.UTF-8 en_US.UTF-8
 RUN mkdir /install
 
-RUN for f in /dockerstartup/*.sh; do sed -i -e "s/kasm_user/$KASM_USER/g" $f; done
+RUN usermod -l $KASM_USER kasm-user; \
+     for f in /dockerstartup/*.sh; do sed -i -e "s/kasm_user/$KASM_USER/g" $f; done
 
 WORKDIR /install
 # === Install Spyder === #
@@ -47,7 +47,7 @@ RUN if [ "$ANACONDA" = true ] ; then \
 RUN rm -rf $HOME/.cache
 
 COPY custom_startup.sh $STARTUPDIR/custom_startup.sh
-COPY shadow_monitor.sh /
+COPY change_password.sh /
 
 ######### End Customizations ###########
 
diff --git a/docker/change_password.sh b/docker/change_password.sh
new file mode 100755
index 0000000..cff6ac1
--- /dev/null
+++ b/docker/change_password.sh
@@ -0,0 +1,16 @@
+#!/bin/bash
+
+title="Changement du mot de passe"
+password=$(zenity --title="$title" --question="Veuillez entrer votre mot de passe" --entry)
+confirm=$(zenity --title="$title" --question="Veuillez entrer votre mot de passe" --entry)
+icon="error"
+if [ "$password" != "$confirm" ]; then
+    message=$(echo -e "$password\n$password" | vncpasswd -u $KASM_USER $HOME/.vnc/passwd)
+    if [ $? -eq 0 ]; then
+        message="Mot de passe changé"
+        icon="info"
+    fi
+else
+    message="La confirmation du mot de passe n'est pas identique au mot de passe"
+fi
+notify-send -i $icon "$message"
diff --git a/docker/custom_startup.sh b/docker/custom_startup.sh
index 2c84e09..6225f46 100755
--- a/docker/custom_startup.sh
+++ b/docker/custom_startup.sh
@@ -7,10 +7,10 @@ sed -i -e "s@kasm-default-profile@$KASM_USER@g" ~/anaconda3/etc/profile.d/conda.
 mkdir -p $VNC_HOME/Desktop
 cat <<EOF > $VNC_HOME/Desktop/users.desktop
 [Desktop Entry]
-Type=Link
+Type=Application
 Name=Change password
 Icon=config-users
-URL=/usr/share/applications/users.desktop
+Exec=/change_password.sh
 terminal=true
 EOF
 
@@ -35,12 +35,4 @@ Icon=$VNC_HOME/anaconda3/share/icons/spyder.png
 Exec=$(which spyder)
 eof
 fi
-
-if [ -f "/opt/shadow/shadow" ]
-then
-    echo "Copying shadow file"
-    cp /opt/shadow/shadow /etc/shadow
-    sync
-fi
-
-/shadow_monitor.sh
+chmod +x $VNC_HOME/Desktop/*.desktop
diff --git a/docker/shadow_monitor.sh b/docker/shadow_monitor.sh
deleted file mode 100755
index 4f3c252..0000000
--- a/docker/shadow_monitor.sh
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/bin/bash
-sleep 10
-
-while true; do
-    modif=$(inotifywait --event move /etc)
-    echo "Modif : '$modif'"
-    if [ ! -z "$(echo $modif | grep 'MOVED_FROM nshadow')" ]; then
-        echo "Shadow file has changed"
-        sync
-        cp /etc/shadow /opt/shadow/shadow
-    fi
-done
-
-- 
GitLab