Anno domini 2020 Wed, 29 Jul 09:39:46 -0500
Michael scripsit:
Issue:
In TDE in MX18 (stretch) the MX Tools apps would open in TDE.
In TDE in MX19 (buster) the MX Tools that need to run as root will not open in
TDE. The behavior is click the menu item and nothing happens (e.g. do not
get any prompts for password).
MX Dev:
“What does TDE Buster use to escalate permissions for their apps that need
it?”
“We did switch them to using a wrapper called mx-pkexec to keep the tools
working on Buster after Debian removed gksu and went more to policykit-based
privileges.”
IMO it's "tdesu"
Nik
This isn’t huge, really just an annoyance, as I can login to Xfce to run any
of the MX Tools I need...
Example Menu Command:
su-to-root -X -c mx-packageinstaller
Copied mx-pkexec, su-to-root, and other called items below.
I tried the example command, it seems to need a GUI, as it borks with 'wrong
password' (when the root password is correct).
Any thoughts would be really appreciated.
Best,
Michael
Ref’s:
https://forum.mxlinux.org/viewtopic.php?p=589003#p589003
michael@local [~]# cat /usr/bin/mx-pkexec
#!/bin/bash
# MX Linux pkexec wrapper to retain QT environment
# Usage:
# mx-pkexec mx-apps ...
# original code by fehlix for MX-Linux
if test "$EUID" != 0; then
# normal user
# wayland fix (chkboom)
if [ x"$WAYLAND_DISPLAY" != "x" ] && [ -n
"${WAYLAND_DISPLAY##/*}" ]; then
WAYLAND_DISPLAY=$XDG_RUNTIME_DIR/$WAYLAND_DISPLAY
fi
QTENV="${XDG_RUNTIME_DIR:-/tmp}/mx-pkexec-qtenv.$EUID.$PPID.$$.
$RANDOM$RANDOM"
if [ -f "$QTENV" ] ; then
rm $QTENV
fi
umask 0022
touch "$QTENV"
while IFS=$'\n' read -r ENV; do
IFS='=' read PAR VAL < <(echo $ENV);
echo "export $PAR=${VAL@Q}" >> $QTENV
done < <(printenv | grep -E '^DESKTOP_SESSION|^KDE_FULL_SESSION=|
^LANG=|^LANGUAGE=|^LC_|^QT_|^XDG_SESSION_TYPE|^XDG_CURRENT_DESKTOP|
^WAYLAND_')
echo "CURRENT_WORK_DIR='$PWD'" >> "$QTENV"
chmod +r "$QTENV"
pkexec /usr/bin/mx-pkexec "--qtenv" "$QTENV" "${@}"
if [ -f "$QTENV" ] ; then
rm $QTENV
fi
fi
if test "$EUID" == 0; then
# root user
# set XDG_RUNTIME_DIR - do nothing if already set
if [ x"$XDG_RUNTIME_DIR" = "x" ]; then
XDG_RUNTIME_DIR=/run/user/0
export XDG_RUNTIME_DIR
[ -d $XDG_RUNTIME_DIR ] || mkdir -p $XDG_RUNTIME_DIR
chmod 700 $XDG_RUNTIME_DIR
chown 0:0 $XDG_RUNTIME_DIR
fi
if [ "x$1" = "x--qtenv" ]; then
QTENV="$2"
shift
shift
if [ -f "$QTENV" -a "x$QTENV" !=
"x${QTENV#*/mx-pkexec-qtenv.}" ] ;
then
. "$QTENV"
rm "$QTENV"
cd "${CURRENT_WORK_DIR}"
unset CURRENT_WORK_DIR
fi
PATH="/usr/local/bin:$PATH"
fi
# check if command is given within one parameter, split by eval in case
[ $# == 1 ] && eval set "$@"
RUN="$1"
shift
# check remaining parameter are quoted twice and do unquote
[ $# != 0 ] && [ -z "${1##[\'\"]*}" ] && [ -z
"${1%%*[\'\"]}" ] && eval
set "$@"
echo Starting "$RUN" "${@@Q}"
command -v "$RUN" >/dev/null || { echo "mx-pkexec: Command
'$RUN' not
found"; exit 1; }
exec "$RUN" "${@}"
fi
exit
michael@local [~]# cat /usr/bin/su-to-root
#!/bin/bash
if test -r /etc/su-to-rootrc; then
. /etc/su-to-rootrc
fi
if test -r ~/.su-to-rootrc; then
. ~/.su-to-rootrc
fi
PRIV=root
COMMAND=
NEEDS=text
gettext=$(which gettext 2>/dev/null)
transl() {
txt="$1";
shift;
if [ -n "$gettext" ]; then
txt="$(gettext su-to-root "$txt")";
fi
printf "$txt" "$@"
}
eshell() {
getent passwd $1 | cut -f7 -d:
}
usage () {
transl 'usage: %s [-X] [-p <user>] -c <command>
-c command: command to execute as a string (mandatory)
-p <user>: user to switch to (default: root)
-X: command is a X11 program\n' "$0" >&2
exit 1
}
for i in "$@"; do
case "$prev" in
-p)
PRIV="$i";;
-c)
COMMAND="$i";;
-X)
NEEDS="X11";;
esac
prev="$i"
done
if [ -z "$COMMAND" ] ; then
usage;
fi
euid=$(id -u)
privid=$(id -u $PRIV)
if test "$euid" = "$privid"; then
sh -c "$COMMAND"
else
case $NEEDS in
text)
if test "$euid" != 0; then
transl 'About to execute %s.\n' "$COMMAND"
transl 'This command needs %s privileges to be executed.\n'
"$PRIV"
fi
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/bin/X11:/usr/local/sbin:/usr/local/bin
SHELL=`eshell $PRIV`
case $SU_TO_ROOT_SU in
sux) suname=sux; pwuser="$PRIV"; cmd='sux -p "$PRIV"
"$COMMAND"';;
sudo) suname=sudo;pwuser="$USER"; cmd='sudo -u "$PRIV"
sh -c "$COMMAND"';;
*) suname=su; pwuser="$PRIV"; cmd='su -p "$PRIV" -c
"$COMMAND"';;
esac
transl 'Using %s...\n' "$suname"
transl 'Enter %s password at prompt.\n' "$pwuser"
yesexpr=$(locale yesexpr)
while ! eval $cmd; do
transl 'Incorrect password or command failed. Try again? (y/N)'
read ans
if echo "$ans" | perl -e "<> =~ /$yesexpr/ and exit(1);";
then
exit 1
fi
done;;
X11)
if test -z "$SU_TO_ROOT_X"; then
if which gksu >/dev/null 2>&1 ; then
SU_TO_ROOT_X=gksu
if test "X$KDE_FULL_SESSION" = "Xtrue" ; then
if which kdesu >/dev/null 2>&1 ; then
SU_TO_ROOT_X=kdesu
elif test -x /usr/lib/kde4/libexec/kdesu ; then
SU_TO_ROOT_X=kde4su
fi;
fi;
elif which kdesu >/dev/null 2>&1 ; then
SU_TO_ROOT_X=kdesu
elif test -x /usr/lib/kde4/libexec/kdesu ; then
SU_TO_ROOT_X=kde4su
elif which ktsuss >/dev/null 2>&1 ; then
SU_TO_ROOT_X=ktsuss
elif which sux >/dev/null 2>&1 ; then
SU_TO_ROOT_X=sux
else
SU_TO_ROOT_X=su-to-root
fi
fi
case $SU_TO_ROOT_X in
gksu) gksu -u "$PRIV" "$COMMAND";;
gksudo) gksudo -u "$PRIV" "$COMMAND";;
kdesu) kdesu -u "$PRIV" "$COMMAND";;
kdesudo) kdesudo -u "$PRIV" "$COMMAND";;
kde4su) /usr/lib/kde4/libexec/kdesu -u "$PRIV" "$COMMAND";;
ktsuss) ktsuss -u "$PRIV" "$COMMAND";;
sux) env SU_TO_ROOT_SU=sux \
x-terminal-emulator -e su-to-root -p "$PRIV" -c "$COMMAND";;
# As a last resort, open a new x-terminal-emulator and prompt for the
password
# Do not use -X here!
*) x-terminal-emulator -e su-to-root -p "$PRIV" -c
"$COMMAND";;
esac;;
esac
fi
michael@local [~]# which x-terminal-emulator
/usr/bin/x-terminal-emulator
michael@local [~]# ll /usr/bin/x-terminal-emulator
lrwxrwxrwx 1 root root 37 May 30
22:29 /usr/bin/x-terminal-emulator -> /etc/alternatives/x-terminal-emulator
michael@local [~]# ll /etc/alternatives/x-terminal-emulator
lrwxrwxrwx 1 root root 31 May 30
22:29 /etc/alternatives/x-terminal-emulator -> /usr/bin/xfce4-terminal.wrapper
michael@local [~]# ll /usr/bin/xfce4-terminal.wrapper
-rwxr-xr-x 1 root root 1124 Aug 15 2019 /usr/bin/xfce4-terminal.wrapper
michael@local [~]# cat /usr/bin/xfce4-terminal.wrapper
#! /usr/bin/perl -w
#
# Terminal.wrapper - Debian terminal wrapper script
#
# Copyright (c) 2004-2005 os-cillation
#
while ($opt = shift(@ARGV))
{
if ($opt eq '-display')
{
$arg = shift(@ARGV);
push(@args, '--default-display', $arg);
}
elsif ($opt eq '-name')
{
$arg = shift(@ARGV);
}
elsif ($opt eq '-n')
{
$arg = shift(@ARGV);
}
elsif ($opt eq '-T' || $opt eq '-title')
{
push(@args, '--title', shift(@ARGV));
}
elsif ($opt eq '-geometry')
{
$arg = shift(@ARGV);
push(@args, "--geometry=$arg");
}
elsif ($opt eq '-fn')
{
$arg = shift(@ARGV);
}
elsif ($opt eq '-fg')
{
$arg = shift(@ARGV);
}
elsif ($opt eq '-bg')
{
$arg = shift(@ARGV);
}
elsif ($opt eq '-tn')
{
$arg = shift(@ARGV);
}
elsif ($opt eq '-e')
{
$arg = shift(@ARGV);
if (@ARGV)
{
push(@args, '-x', $arg, @ARGV);
last;
}
else
{
push(@args, '-e', $arg);
}
last;
}
elsif ($opt eq '-h' || $opt eq '--help')
{
push(@args, '--help');
}
}
exec('xfce4-terminal',@args);
michael@local [~]# which xfce4-terminal
/usr/bin/xfce4-terminal
michael@local [~]# ll /usr/bin/xfce4-terminal
-rwxr-xr-x 1 root root 248384 Aug 15 2019 /usr/bin/xfce4-terminal
michael@local [~]#
michael@local [~/data/trash]# su-to-root -X -c mx-packageinstaller
==== AUTHENTICATING FOR org.mxlinux.mx-pkexec ===
Authentication is required to run this application
Authenticating as: root
Password:
polkit-agent-helper-1: error response to PolicyKit daemon:
GDBus.Error:org.freedesktop.PolicyKit1.Error.Failed: No session for cookie
==== AUTHENTICATION FAILED ===
Error executing command as another user: Not authorized
This incident has been reported.
---------------------------------------------------------------------
To unsubscribe, e-mail: trinity-users-unsubscribe(a)lists.pearsoncomputing.net
For additional commands, e-mail: trinity-users-help(a)lists.pearsoncomputing.net
Read list messages on the web archive:
http://trinity-users.pearsoncomputing.net/
Please remember not to top-post:
http://trinity.pearsoncomputing.net/mailing_lists/#top-posting
--
Please do not email me anything that you are not comfortable also sharing with the NSA,
CIA ...
---------------------------------------------------------------------
To unsubscribe, e-mail: trinity-users-unsubscribe(a)lists.pearsoncomputing.net
For additional commands, e-mail: trinity-users-help(a)lists.pearsoncomputing.net
Read list messages on the web archive:
http://trinity-users.pearsoncomputing.net/
Please remember not to top-post:
http://trinity.pearsoncomputing.net/mailing_lists/#top-posting