don't fail to ask for a password if there is no TTY
authorEvgeni Golov <evgeni@grml.org>
Thu, 16 Aug 2012 21:45:14 +0000 (23:45 +0200)
committerMichael Prokop <mika@grml.org>
Mon, 4 Feb 2013 13:37:18 +0000 (14:37 +0100)
When running grml-debootrap over ssh like
  ssh root@grml grml-debootstrap ...
the password promt for the root user would fail, as you cannot stty
without a tty. The user should actually have called
  ssh -t root@grml grml-debootstrap ...
which would have allocated a TTY and all would have worked.

Display a warning to the user and fall back to displaying the entered
password when he continues to use grml-debootstrap w/o a TTY.

Closes: issue1200

chroot-script
grml-debootstrap

index d3535b0..86f1535 100755 (executable)
@@ -55,9 +55,9 @@ stage() {
 askpass() {
   # read -s emulation for dash. result is in $resp.
   set -o noglob
-  stty -echo
+  [ -t 0 ] && stty -echo
   read resp
-  stty echo
+  [ -t 0 ] && stty echo
   set +o noglob
 }
 # }}}
index 6b5fa17..cbd1938 100755 (executable)
@@ -730,6 +730,12 @@ else # if not running automatic installation display configuration and prompt fo
       [ -n "$VMSIZE" ] && echo "   Using Virtual Disk file with size of ${VMSIZE}."
    fi
 
+   if [ ! -t 0 -a -z "$ROOTPASSWORD" -a -z "$NOPASSWORD" ] ; then
+      echo
+      echo "   You do not have a TTY allocated, your password will be shown in"
+      echo "   plaintext on the terminal! If you are using SSH, try its -t option!"
+   fi
+
    echo
    echo "   Important! Continuing will delete all data from ${TARGET}!"