Skip to content

Instantly share code, notes, and snippets.

@malte70
Created October 28, 2016 03:26
Show Gist options
  • Select an option

  • Save malte70/4085f89ad906b7f623f06f9b1f9984b4 to your computer and use it in GitHub Desktop.

Select an option

Save malte70/4085f89ad906b7f623f06f9b1f9984b4 to your computer and use it in GitHub Desktop.
Simple sudo for Termux (tested on CyanogenMod)
#!/data/data/com.termux/files/usr/bin/bash
#
# sudo-termux
# sudo for Termux/Android
#
# Copyright (c) 2016 Malte Bublitz, http://malte70.bplaced.net
# All rights reserved.
#
SCRIPT_NAME="sudo"
SCRIPT_VERSION="0.2"
SCRIPT_DESCRIPTION="sudo for Termux by github.com/malte70"
###############
# Configuration
# root's home directory
ROOT_HOME="${HOME}/.sudo_home"
# shell (~root/.shell, default bash)
ROOT_SHELL="${ROOT_HOME}/.shell"
if [[ ! -x "${ROOT_SHELL}" ]]; then
ROOT_SHELL="${PREFIX}/bin/bash"
fi
# path to env and su binary
ENV="/system/bin/env"
SU="/system/xbin/su"
#
###############
#
# parse arguments and set $CMD
#
# Variables set via env:
# - sudo_pwd
# - LD_LIBRARY_PATH
# - HOME
CMD="${ENV} sudo_pwd=$PWD"
CMD="${CMD} LD_LIBRARY_PATH=${LD_LIBRARY_PATH}"
CMD="${CMD} HOME=${ROOT_HOME}"
opt="${1}"
if [[ "${1}" == "--version" || "${1}" == "-V" ]]
then
echo "${SCRIPT_NAME} ${SCRIPT_VERSION}"
echo "${SCRIPT_DESCRIPTION}"
exit 0
elif [[ "${1}" == "--help" || "${1}" == "-h" ]]
then
echo "Usage:"
#echo " ${SCRIPT_NAME}"
echo " ${SCRIPT_NAME} <option>" #[-i|--help|--version]"
echo " ${SCRIPT_NAME} *command*"
echo
echo "Options:"
echo " -i Start a shell"
echo " -h, --help Show this help"
echo " -V, --version Display the version"
echo
echo "Only single options accepted. No"
echo "arguments behaves like \`-i\`"
exit 0
elif [[ "${1}" == "-i" || $# -eq 0 ]]
then
# New login shell
CMD="${CMD} ${ROOT_SHELL}"
else
# Execute command as root
CMD="${CMD} ${ROOT_HOME}/.sudo_run.sh"
CMD="${CMD} ${@}"
fi
#
# Create home if necessary
#
if [[ ! -d "${ROOT_HOME}" ]]; then
mkdir -p "${ROOT_HOME}"
# Initialize a .bashrc
(
echo '# ';echo '# Minimal .bashrc for root/sudo'
echo '# '; echo
echo '# Keep current directory'
echo 'cd "${sudo_pwd}"' #; unset sudo_pwd'
echo 'export PS1="\[\033[1;31m\]\w\[\033[0m\]# "'
echo 'export PATH="/data/data/com.termux/files/usr/bin:/data/data/com.termux/files/usr/bin/applets"'
echo
echo 'alias ..="cd .."'
echo 'alias ls="ls --color=auto -h"'
echo; echo 'umask 0000'
) > "${ROOT_HOME}/.bashrc"
chmod 666 "${ROOT_HOME}/.bashrc"
(
echo "#!$PREFIX/bin/bash"; echo
echo 'cd "$sudo_pwd"'
echo 'export PATH="/data/data/com.termux/files/usr/bin:/data/data/com.termux/files/usr/bin/applets"'
echo; echo 'exec $@'
) > "${ROOT_HOME}/.sudo_run.sh"
chmod 777 "${ROOT_HOME}/.sudo_run.sh"
echo "sudo: Created initial home for root in"
echo " $(echo "${ROOT_HOME}" | sed "s|$HOME|~|g")"
fi
#
# Check if .sudo_run.sh exists
# Skip this if we are about to
# run a shell session
#
if [[ "${CMD}" == *.sudo_run.sh* ]]; then
if [[ ! -x "${ROOT_HOME}/.sudo_run.sh" ]]; then
echo "${SCRIPT_NAME}: .sudo_run.sh not found in root's home!" >&2
exit 2
fi
fi
#
# Execute $CMD
#
exec $SU -c "${CMD}"
@DineshGuptaa
Copy link

Hi Malte,
I want to run above mentioned script on termux terminal on Android but I am unable to run. Please guide me how to run.

Thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment