Vraag & Antwoord

OS Linux

X programma als root starten

Anoniem
None
45 antwoorden
  • die kun je zelf schrijven :)
    dit is de brontekst van sux:
    [code:1:e518e67f22]
    #!/bin/bash
    #
    # /usr/X11R6/bin/sux A shell script to forward X authentication
    # and run `su - root [options]'
    #
    # Note: sux is the abbrivation of `Substitute User with X11'
    #
    # Usage: sux [-c command] [-s shell] [-|-l] [[user] args]
    #
    # Copyright 2000 SuSE GmbH
    # Copyright 2004 SuSE LINUX AG
    # Author: Werner Fink <werner@suse.de>
    #
    # 2000/09/13: Avoid su staying around with magic cookie
    # in process table due PAM.
    # 2004/04/02: Use getent instead of yp tools.
    #

    export PATH=/usr/X11R6/bin/X11:$PATH
    if test "+$(id -u)" = "$1" ; then
    #
    # Passsive part
    #
    unset XAUTHORITY || true
    if test $# -lt 4 -o ! -e /proc/$$/fd/4 ; then
    echo "${0##*/}: Missing id or cookie or DISPLAY" 1>&2
    exit 1
    fi
    export SHELL="$3"
    arg0=$2${SHELL##*/}
    export DISPLAY="$4"
    if test "$(hostname -f)" = "${4%:*}" ; then
    displaynum=":${4#*:}"
    host="${4%:*}"
    if test "$(uname -n)" = "${host%%.*}" ; then
    unixs="${host%%.*}/unix:${displaynum#*:}"
    else
    unixs="$(uname -n)/unix:${displaynum#*:}"
    fi
    unixf="${host}/unix:${displaynum#*:}"
    tcpip="${host}:${displaynum#*:}"
    else
    host="${4%:*}"
    unixs=""
    unixf=""
    # Workaround for ssh X11 forwarding/redirecting
    if test "$host" = "localhost" ; then
    tcpip="$(hostname)/unix:${DISPLAY#*:}"
    else
    tcpip="${DISPLAY}"
    fi
    fi
    if test -n "$5" ; then
    export SESSION_MANAGER="$5"
    else
    unset SESSION_MANAGER
    fi
    shift 5
    xauth -qif <(exec cat 0<&4) extract >(exec xauth -q merge -) \
    ${unixs:+"$unixs"} \
    ${unixf:+"$unixf"} \
    ${tcpip:+"$tcpip"}
    exec 4<&-
    if test "$host" != "localhost" ; then
    # local names first
    for d in $unixs $unixf $tcpip ; do
    unset x
    x=$(xauth -qi nlist $d 2> /dev/null)
    test ${#x} -ne 0 && break
    done
    unset x
    case "$d" in */unix:*) DISPLAY=:${d#*:} ;; esac
    unset d
    fi
    unset unixs unixf tcpip host || true
    exec -a $arg0 $SHELL ${1+"$@"}
    exit 1
    fi

    #
    # Active part
    #
    if test -z "$DISPLAY" ; then
    echo "${0##*/}: Missing DISPLAY variable" 1>&2
    exit 1
    fi

    user=root
    login=
    command=
    while test -z "${1%%-*}" -a -n "$1" ; do
    if test ${#1} -eq 2 -a -n "${2%%-*}" -a "$1" != "-l" ; then
    y="${1#-}${2}"; shift 2
    else
    y="${1#-}" ; shift 1
    fi
    case "$y" in
    c*) command="${y#?}" ;;
    s*) shell="${y#?}" ;;
    l|"") login=- ;;
    *)
    echo "Usage: sux [-c command] [-s shell] [-|-l] [[user] args]" 1>&2
    exit 1
    esac
    done
    if test -n "$1" ; then
    user=$1
    shift
    fi
    id=$(id -u $user)

    OIFS="$IFS"; IFS=":"
    if type -p getent &> /dev/null ; then
    pwline=($(getent passwd "${user}"))
    else
    pwline=($(cat /etc/passwd | grep "^${user}:"))
    fi
    IFS="$OIFS"

    if test -n "$shell" && grep -q $shell /etc/shells &> /dev/null ; then
    shell=$shell
    else
    shell="${pwline[6]}"
    fi

    if test -n "${DISPLAY%:*}" ; then
    host="${DISPLAY%:*}"
    else
    host="$(hostname -f)"
    fi
    tcpip="${host}:${DISPLAY#*:}"
    unset host

    sessmng=""
    if test -n "$SESSION_MANAGER" ; then
    sessmng="$SESSION_MANAGER"
    fi
    # Gnome is broken
    case "$WINDOWMANAGER" in
    *gnome*) sessmng=""
    esac

    exec 4< ${XAUTHORITY:-$HOME/.Xauthority}
    # Get rid of NFS ;^)
    cat ${XAUTHORITY:-$HOME/.Xauthority} > /dev/null
    exec -a su /bin/su -s /bin/bash $login – $user \
    $0 +$id "$login" "$shell" "$tcpip" "$sessmng" ${command:+-c "$command"}
    exit 1
    #
    # /usr/X11R6/bin/sux ends here
    [/code:1:e518e67f22]
  • [quote:56c5eee3c5="Pinky & The Brain"]ehm, ik geloof niet dat ik helemaal vat wat jouw probleem is, maar je kunt gewoon in de console inloggen als root om vervolgens X te starten met 'startx'.[/quote:56c5eee3c5]

    Noooo, da's niet de bedoeling he ;) Niet verstandig om als root in x te verblijven, veel te veel moois om kapot te maken… De muis is soms een beetje een ongecontroleerd primitief dier wat dat betreft…

    -Roeland
  • Ik draai x altijd als bilbo…. als ik dan als root een gui tool wil draaien dan ssh ik naar root@localhost…. en start dan in de console de app… x tunneling staat aan dus komt de output dan vervolgens op de display van bilbo
  • Hoe start ik een grafisch programma (onder X) als root? Bijv. KWrite om configuratie-bestanden te editen.

    Natuurlijk kan ik vanuit een terminal su doen, maar die terminal moet dan open blijven staan. Als ik die sluit, verdwijnt KWrite nl. ook weer.
  • ehm, ik geloof niet dat ik helemaal vat wat jouw probleem is, maar je kunt gewoon in de console inloggen als root om vervolgens X te starten met 'startx'.
  • in X en Xconsole openen

    dan [b:129a4ea292]su[/b:129a4ea292]
    en vervolgens de nam van het progrmma (b.v. kwrite) intikken

    maar zoals altijd zijn er diverse oplossingen.
  • Een X-programma als root starten doe je als volgt:

      [*:6c04cf9a4e]start de minicli via de toetsencombinatie [alt][f2] en typ [b:6c04cf9a4e]kdesu kwrite[/b:6c04cf9a4e] [*:6c04cf9a4e]Voer het wachtwoord in als er om gevraagd wordt [*:6c04cf9a4e]Wacht totdat kwrite is gestart [/list:o:6c04cf9a4e]
      als je kwrite vaak op die manier start kun je een pictogram aanmaken op je desktop/kde-menu.
      Max
      [edit]misschien dat het zo duidelijker is <img alt=";)" src="/plugins/sceditor/emoticons/wink.png" />[/edit]
  • > dan su

    Alleen bij Suse is dat dan sux
  • Sorry dat ik het niet duidelijk heb verwoord. Nee, ik ben gewoon ingelogd als mezelf (dus niet als root) en ik werd onder X. Als ik een programma start, start het dus met als gebruiker mezelf.

    Nu wil ik KWrite als root starten. Het enige wat ik kan verzinnen is een terminal opstarten (gebruiker: mijzelf), su, kwrite, maar dan moet ik die terminal dus open laten staan tijdens het gebruik van kwrite.

    Kan dat niet anders?
  • KWrite als daemon starten. Ofterwijl [b:eebe585a3b]kwrite &[/b:eebe585a3b] uitvoeren, en vervolgens de terminal sluiten?
  • [quote:ad5462c2bb="maximilaan"]start de minicli [alt][f2] en typ [b:ad5462c2bb]kdesu kwrite[/b:ad5462c2bb]
    Voer het wachtwoord in als er om gevraagd wordt
    Wacht totdat kwrite is gestart
    als je kwrite vaak op die manier start kun je een pictogram aanmaken op je desktop/kde-menu.

    Max[/quote:ad5462c2bb]

    Dit is wat je wilt. En er is helemaal niets mis mee om een terminal open te laten staan. Dat is bij mij ook 95% van de tijd het geval.
  • [quote:6c383f47dd="Bilbo"]Ik draai x altijd als bilbo…. als ik dan als root een gui tool wil draaien dan ssh ik naar root@localhost…. en start dan in de console de app… x tunneling staat aan dus komt de output dan vervolgens op de display van bilbo[/quote:6c383f47dd]
    Hé, dat klinkt stoer :D
    Gaat dat zonder performence verlies ?
    Zelf heb ik namelijk nog nooit iets 'grafisch' gedaan via ssh dus ik weet niet precies wat het inhoudt.
    Als het goed is kan ik binnenkort ook op een shell-account van mij grafisch inloggen over het internet…ik ben beniewd :D
  • Zolang je op localhost blijft is dat zonder performence verlies, aangezien het niet over een fysiek netwerk hoeft, maar door de dummy lo gaat. Als je over internet een dergelijk geintje uithaalt levert dat wel performence verlies op, maar voor gewone apps is het meestal goed te doen (ook voor complete desktops btw). Het afspelen van een DVD over een ssh-tunnel is echter teveel voor het netwerk.
    Overigens zou ik wel de autobackup functie van Kwrite uitzetten als je daarmee configfiles gaat editen, anders heb je overal een ~bestandsnaam erbij na het bewerken van de file. Het lijkt mij zoiezo handiger om ervoor te zorgen dat je alle root taken non-grafisch uit kan voeren, op het moment dat de X-server een keer weigert op te starten ben je anders al verloren. Er zijn bijvoorbeeld diverse commandline editors zoals vim, nano, mcedit en ed (lol).
  • [quote:b7dfc3fbd4="Marcel de Reus"]Er zijn bijvoorbeeld diverse commandline editors zoals vim, nano, mcedit en ed (lol).[/quote:b7dfc3fbd4]
    Tja, het liefst had ik een goede editor zonder X. Maar…

    vim –> ik weet dat niemand het hier met me eens is, maar dit is voor mij een verschrikking, ik ga het echt niet leren

    nano –> staat er volgens mij niet op

    mcedit –> je kunt niet eens op een normale manier selecteren en knippen/plakken

    ed –> zou ik nog kunnen proberen, ken ik niet

    Een "edit" zoals M$-DOS :-? zou perfect zijn…
  • [quote:b69170820e="Peter Willemsen"]Tja, het liefst had ik een goede editor zonder X. Maar…

    vim –> ik weet dat niemand het hier met me eens is, maar dit is voor mij een verschrikking, ik ga het echt niet leren

    nano –> staat er volgens mij niet op

    mcedit –> je kunt niet eens op een normale manier selecteren en knippen/plakken

    ed –> zou ik nog kunnen proberen, ken ik niet

    Een "edit" zoals M$-DOS :-? zou perfect zijn…[/quote:b69170820e]
    Misschien is emacs iets voor je?
  • vim is niet moeilijk, vi heeft mij zelfs gered toen mijn boot een keer verknalt was :D
  • Bestaat er geen ncurses-gebaseerde editor?
  • Max wat jij voorsteld is de werkwijze om een KDE prog als root te starten.
    Das niet hetzelfde als een X applicatie.
    niet iedereen draait KDE ;)
  • [quote:057f27d441="capt.501"]Max wat jij voorsteld is de werkwijze om een KDE prog als root te starten.
    Das niet hetzelfde als een X applicatie.
    niet iedereen draait KDE ;)[/quote:057f27d441]

    Maar hij gebruikt wel kwrite :wink:
  • [quote:d86f98a4b0="Peter Willemsen"] nano –> staat er volgens mij niet op[/quote:d86f98a4b0] En pico? Nano (nano-1.2.4.tar.gz) is trouwens niet moeilijk om te compileren/installeren http://www.nano-editor.org/download.html

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.