Advertisement
Guest User

chroot-enter.sh

a guest
Feb 8th, 2021
168
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 2.99 KB | None | 0 0
  1. #! /bin/bash -e
  2.  
  3. if ! [ -d "$1" ]; then
  4.   echo "directory '$1' not exists" 1>&2
  5.   exit 1
  6. fi
  7.  
  8. if [ "x$2" == 'xstop' ]; then
  9.  
  10.   if mountpoint -q "$1/proc"; then
  11.     echo "umount /proc"
  12.     umount "$1/proc"
  13.   fi
  14.  
  15.   if mountpoint -q "$1/sys"; then
  16.     echo "umount /sys"
  17.     umount "$1/sys"
  18.   fi
  19.  
  20.   if mountpoint -q "$1/run"; then
  21.     echo "umount /run"
  22.     umount "$1/run"
  23.   fi
  24.  
  25.   if mountpoint -q "$1/dev/mqueue"; then
  26.     echo "umount /dev/mqueue"
  27.     umount "$1/dev/mqueue"
  28.   fi
  29.  
  30.   if mountpoint -q "$1/dev/shm"; then
  31.     echo "umount /dev/shm"
  32.     umount "$1/dev/shm"
  33.   fi
  34.  
  35.   if mountpoint -q "$1/dev/pts"; then
  36.     echo "umount /dev/pts"
  37.     umount "$1/dev/pts"
  38.   fi
  39.  
  40.   if mountpoint -q "$1/dev"; then
  41.     echo "umount /dev"
  42.     umount "$1/dev"
  43.   fi
  44.  
  45.   if mountpoint -q "$1/usr/local/bin"; then
  46.     echo "umount $1/usr/local/bin"
  47.     umount "$1/usr/local/bin"
  48.   fi
  49.  
  50.   if mountpoint -q "$1/tmp"; then
  51.     echo "umount $1/tmp"
  52.     umount "$1/tmp"
  53.   fi
  54.  
  55.   if [[ -n "$SUDO_USER" ]] && mountpoint -q "$1/home/$SUDO_USER"; then
  56.     echo "umount $1/home/$SUDO_USER"
  57.     umount "$1/home/$SUDO_USER"
  58.   fi
  59.  
  60.   echo "stopped"
  61.   exit
  62. fi
  63.  
  64. if ! [ -d "$1/proc" ]; then
  65.   echo "directory '$1/proc' not exists" 1>&2
  66.   exit 1
  67. fi
  68.  
  69. if ! [ -d "$1/sys" ]; then
  70.   echo "directory '$1/sys' not exists" 1>&2
  71.   exit 1
  72. fi
  73.  
  74. if ! [ -d "$1/dev" ]; then
  75.   echo "directory '$1/dev' not exists" 1>&2
  76.   exit 1
  77. fi
  78.  
  79. if ! [ -d "$1/run" ]; then
  80.   echo "directory '$1/run' not exists" 1>&2
  81.   exit 1
  82. fi
  83.  
  84. if ! mountpoint -q "$1/proc"; then
  85.   echo "mount /proc"
  86.   mount -t proc proc "$1/proc"
  87. fi
  88.  
  89. if ! mountpoint -q "$1/sys"; then
  90.   echo "mount /sys"
  91.   mount -t sysfs sysfs "$1/sys"
  92. fi
  93.  
  94. if ! mountpoint -q "$1/dev"; then
  95.   echo "mount /dev"
  96.   mount -t devtmpfs -o rw,nosuid,relatime,mode=755 devtmpfs "$1/dev"
  97. fi
  98.  
  99. if ! mountpoint -q "$1/dev/pts"; then
  100.   echo "mount /dev/pts"
  101.   mount -t devpts -o rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 devpts "$1/dev/pts"
  102. fi
  103.  
  104. if ! mountpoint -q "$1/dev/shm"; then
  105.   echo "mount /dev/shm"
  106.   mount -t tmpfs -o rw,nosuid,nodev tmpfs "$1/dev/shm"
  107. fi
  108.  
  109. #if ! [ -d "$1/dev/mqueue" ]; then
  110. #  echo "mkdir $1/dev/mqueue"
  111. #  mkdir "$1/dev/mqueue"
  112. #fi
  113.  
  114. if ! mountpoint -q "$1/dev/mqueue"; then
  115.   echo "mount /dev/mqueue"
  116.   mount -t mqueue -o rw,relatime mqueue "$1/dev/mqueue"
  117. fi
  118.  
  119. if ! mountpoint -q "$1/run"; then
  120.   echo "mount /run"
  121.   mount -t tmpfs -o rw,nosuid,noexec,relatime,size=87504k,mode=755 tmpfs "$1/run"
  122. fi
  123.  
  124. if [[ -d "$1/usr/local/bin" ]] && [[ -d /usr/local/bin ]] && ! mountpoint -q "$1/usr/local/bin"; then
  125.   echo "mount /usr/local/bin"
  126.   mount --bind /usr/local/bin "$1/usr/local/bin"
  127. fi
  128.  
  129. if ! mountpoint -q "$1/tmp"; then
  130.   echo "mount /tmp"
  131.   mount --bind /tmp "$1/tmp"
  132. fi
  133.  
  134. if [[ -n "$SUDO_USER" ]] && [[ -d "$1/home/$SUDO_USER" ]] && [[ -d "/home/$SUDO_USER" ]] && ! mountpoint -q "$1/home/$SUDO_USER"; then
  135.   echo "mount /home/$SUDO_USER"
  136.   mount --bind "/home/$SUDO_USER" "$1/home/$SUDO_USER"
  137. fi
  138.  
  139. chroot $@
  140.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement