Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
docker: drop root priviledge in our tutorial images
authorMartin Quinson <martin.quinson@ens-rennes.fr>
Wed, 22 May 2019 22:02:03 +0000 (00:02 +0200)
committerMartin Quinson <martin.quinson@ens-rennes.fr>
Wed, 22 May 2019 22:02:03 +0000 (00:02 +0200)
tools/docker/Dockerfile.tuto-mc
tools/docker/Dockerfile.tuto-s4u
tools/docker/Dockerfile.tuto-smpi

index 888c7dd..6784a21 100644 (file)
@@ -1,21 +1,33 @@
 # Base image 
 FROM debian:testing
 
+RUN apt update && apt -y upgrade 
+
+RUN apt install -y sudo && \
+    groupadd -g 999 user && \
+    useradd -u 999 -g user user && \
+    echo "user ALL=(root) NOPASSWD:ALL" > /etc/sudoers.d/user && \
+    chmod 0440 /etc/sudoers.d/user && \
+    mkdir -p /home/user && \
+    chown -R user:user /home/user
+
 # - Install SimGrid's dependencies 
 # - Compile and install SimGrid itself.
 # - Remove everything that was installed, and re-install what's needed by the SimGrid libraries before the Gran Final Cleanup
 # - Keep g++ gcc gfortran as any MC user will use (some of) them
-RUN apt update && apt -y upgrade && \
-    apt install -y g++ gcc git valgrind gfortran libboost-dev libboost-all-dev cmake dpkg-dev libunwind-dev libdw-dev libelf-dev libevent-dev && \
+RUN apt install -y g++ gcc git valgrind gfortran libboost-dev libboost-all-dev cmake dpkg-dev libunwind-dev libdw-dev libelf-dev libevent-dev && \
     mkdir /source/ && cd /source && git clone --depth=1 https://framagit.org/simgrid/simgrid.git simgrid.git && \
     cd simgrid.git && \
     cmake -DCMAKE_INSTALL_PREFIX=/usr/ -Denable_model-checking=ON -Denable_documentation=OFF -Denable_java=OFF -Denable_smpi=ON -Denable_compile_optimizations=ON . && \
-    make -j4 install \
+    make -j4 install && \
+    chown -R user:user /source && \
     mkdir debian/ && touch debian/control && dpkg-shlibdeps --ignore-missing-info lib/*.so -llib/ -O/tmp/deps && \
     apt remove -y git valgrind libboost-dev libboost-all-dev cmake dpkg-dev libunwind-dev libdw-dev libelf-dev libevent-dev && \
-    apt install `sed -e 's/shlibs:Depends=//' -e 's/([^)]*)//g' -e 's/,//g' /tmp/deps` && rm /tmp/deps && \
+    apt install -y `sed -e 's/shlibs:Depends=//' -e 's/([^)]*)//g' -e 's/,//g' /tmp/deps` && rm /tmp/deps && \
     apt autoremove -y && apt autoclean && apt clean
-    
+
+USER user
+
 # The build and dependencies are not cleaned in this image since it's it's highly experimental so far    
 #    git reset --hard master && git clean -dfx && \
 
index ff7ddcc..e5dfaa8 100644 (file)
@@ -1,12 +1,26 @@
 # Base image 
 FROM simgrid/stable
 
+RUN apt update && apt -y upgrade 
+
+RUN apt install -y sudo && \
+    groupadd -g 999 user && \
+    useradd -r -u 999 -g user user && \
+    echo "user ALL=(root) NOPASSWD:ALL" > /etc/sudoers.d/user && \
+    chmod 0440 /etc/sudoers.d/user && \
+    mkdir -p /home/user && \
+    chown -R user:user /home/user
+
 # - Clone simgrid-template-s4u, as it is needed by the tutorial
 # - Add an empty makefile advising to run cmake before make, just in case
-RUN apt update && apt install -y pajeng r-base r-cran-ggplot2 r-cran-dplyr r-cran-devtools cmake g++ git libboost-all-dev flex bison&& \
+RUN apt install -y pajeng r-base r-cran-ggplot2 r-cran-dplyr r-cran-devtools cmake g++ git libboost-all-dev flex bison&& \
     cd /source && \
     git clone --depth=1 https://framagit.org/simgrid/simgrid-template-s4u.git simgrid-template-s4u.git && \
     printf "master-workers ping-pong:\n\t@echo \"Please run the following command before make:\";echo \"    cmake .\"; exit 1" > Makefile &&\
-    apt autoremove -y && apt clean && apt autoclean
+    chown -R user:user /source && \
+    apt autoremove -y && apt clean && apt autoclean && \
+    chown -R user:user /source
 
 RUN Rscript -e "library(devtools); install_github('schnorr/pajengr');"
+
+CMD ["su", "-", "user", "-c", "/bin/bash"]
index 77df661..640620e 100644 (file)
@@ -1,10 +1,23 @@
 # Base image 
-FROM simgrid/unstable
+FROM simgrid/stable
+
+RUN apt update && apt -y upgrade 
+
+RUN apt install -y sudo && \
+    groupadd -g 999 user && \
+    useradd -r -u 999 -g user user && \
+    echo "user ALL=(root) NOPASSWD:ALL" > /etc/sudoers.d/user && \
+    chmod 0440 /etc/sudoers.d/user && \
+    mkdir -p /home/user && \
+    chown -R user:user /home/user
 
 # - Clone simgrid-template-smpi, as it is needed by the tutorial
-RUN apt update && apt install -y pajeng libssl-dev r-base r-cran-ggplot2 r-cran-dplyr r-cran-devtools build-essential g++ gfortran git libboost-all-dev cmake flex bison && \
+RUN apt install -y pajeng libssl-dev r-base r-cran-ggplot2 r-cran-dplyr r-cran-devtools build-essential g++ gfortran git libboost-all-dev cmake flex bison && \
     cd /source && \
-    git clone --depth=1 https://framagit.org/simgrid/simgrid-template-smpi.git simgrid-template-smpi.git && \    
+    git clone --depth=1 https://framagit.org/simgrid/simgrid-template-smpi.git simgrid-template-smpi.git && \
+    chown -R user:user /source && \
     apt autoremove -y && apt clean && apt autoclean
     
 RUN Rscript -e "library(devtools); install_github('schnorr/pajengr');"
+
+CMD ["su", "-", "user", "-c", "/bin/bash"]