# Probleme mit sudo.

## alex00

Versuche meinen wlanasistent mit sudo zu starten. Leider klappt das nicht. 

sudoers sieht folgendermaßen aus (das ist die neue Zeile die ich hinzugefügt habe):

%users localhost wlassistant

Dann bekomme ich folgendes:

alex@Idefix ~ $ sudo wlassistant

sudo: /etc/sudoers is mode 0644, should be 0440

alex@Idefix ~ $ sendmail: Cannot open mail:25

wenn ich chmod 0440 /etc/sudoers mache gibt das nachher:

sudo wlassistant

sudo: /etc/sudoers is owned by gid 100, should be 0

alex@Idefix ~ $ sendmail: Cannot open mail:25

Was mache ich falsch. Danke für jede Hilfe.

----------

## sirro

```
chown root:root /etc/sudoers
```

Anscheinend hast du beim bearbeiten der Datei die Rechte an dich gezogen.

----------

## alex00

wie kann ich das wieder ändern?

----------

## sirro

Für einfach als root die Zeile aus, die ich dir gegeben habe. chmod hast du ja schon selber gemacht, das sollte dann wieder den Ursprungszustand herstellen.

----------

## alex00

Schent nicht zu helfen:

Idefix alex # chown root:root /etc/sudoers

Idefix alex # exit

exit

alex@Idefix ~ $ sudo wlassistant

sudo: /etc/sudoers is mode 0770, should be 0440

alex@Idefix ~ $ sendmail: Cannot open mail:25

----------

## sirro

Ja aus irgendeinem Grund sind die Rechte ja auch wieder verstellt. Ich weiss nicht was das bei dir verstellt.

```
chown root:root /etc/sudoers

chmod 440 /etc/sudoers
```

```
$ ls -lh /etc/sudoers

-r--r----- 1 root root 2,0K 2007-11-14 16:56 /etc/sudoers
```

So muss es aussehen damit es geht.

----------

## alex00

Ok jetzt bekomme ich:

alex@Idefix ~ $ sudo wlassistant

>>> sudoers file: syntax error, line 56 <<<

sudo: parse error in /etc/sudoers near line 56

alex@Idefix ~ $ sendmail: Cannot open mail:25

Zeile 56 ist:

%users localhost wlassistant

----------

## alex00

Habe jetzt die Zeile folgendermaßen geändert:

%users ALL=NOPASSWD: /usr/kde/3.5/bin/wlassistant

Bekomme dann:

wlassistant: cannot connect to X server

----------

## sirro

Für X-Programme bietet sich kdesu an.

http://www.linfo.org/kdesu.html

----------

## alex00

Aber da kann ich das Passwort immer nur für eine Sitzung merken lassen. Melde ich mich ab und wieder an mus sich wieder das rootpasswort eingeben.

----------

## Max Steel

dann führe DISPLAY=:0 sudo wlassistant

----------

## alex00

DISPLAY=:0 sudo wlassistant

wlassistant: cannot connect to X server

alex@Idefix ~ $

Habe 0-7 durchprobiert. Ohne erfolg. Leider.

----------

## Max Steel

So letzter Ausweg:

su -c "DISPLAY=:0 sudo wlassistant"

----------

## alex00

alex@Idefix ~ $ su -c "DISPLAY=:0 sudo wlassistant"

Password:

wlassistant: cannot connect to X server

alex@Idefix ~ $

----------

## sirro

Du musst den X-Server noch freigeben. Normalerweise kann ja nur der User, beim dem die Session laeuft, drauf zugreifen.

```
xhost local:
```

Gibt den für die lokale Nutzung frei. Bei nem Multiuser-System ist das natuerlich unsicher, aber wenn man alleine ist sollte das AFAIK kein Problem sein. EDIT: Bitte auch unten lesen!Last edited by sirro on Mon Dec 17, 2007 1:23 pm; edited 1 time in total

----------

## schachti

sux sollte das automatisch machen - vielleicht ist das für Dich eine Alternative?

----------

## alex00

Verstehe die beiden letzten einträge nicht ganz. Wie lautet der Aufruf genau? bz. wie läuft dsa mit sux?

----------

## schachti

x11-misc/sux installieren

sux - ausführen --> Du bist jetzt root

das gewünschte Programm starten

----------

## alex00

Ok danke....aber das ist nicht ganz das was ich suche. Möchte das PRogramm starten ohne jdesmal das root passwort eingeben zu müssen.

sonst gehts ja auch mit kdesu.

----------

## mv

Es gibt auch sudox. Alternativ (wenn Du nur zu root wechselst und nicht zu einem anderen Benutzer) kannst Du auch 

```
export XAUTHORITY=[home des X-Benutzers]/.Xauthority
```

 (als root) ausführen. Vom Herumspielen mit xhost würde ich aus Sicherheitsgründen abraten - auch wenn Du der einzige Benutzer bist.

----------

## sirro

 *mv wrote:*   

> Vom Herumspielen mit xhost würde ich aus Sicherheitsgründen abraten - auch wenn Du der einzige Benutzer bist.

 

Warum? Was kann passieren?

----------

## mv

 *sirro wrote:*   

>  *mv wrote:*   Vom Herumspielen mit xhost würde ich aus Sicherheitsgründen abraten - auch wenn Du der einzige Benutzer bist. 
> 
> Warum? Was kann passieren?

 

Wenn der Rechner Kontakt mit dem Internet hat (wovon ich bei einem Gentoo-System ausgehe) gibt es de facto immer potentielle weitere Nutzer, von denen Du nichts weißt: Es gibt immer wieder Browser/Java/Javascript/...-Bugs, die zumindest einen lokalen Exploit ermöglichen. Wenn jetzt auch noch verhältnismäßig problemlos ein solcher unerwünschter "Gast" die Tastatur abfragen kann, während Du Dein Root-Passwort eintippst...

----------

## sirro

Also wenn die irgendwelche Lücken ausnutzen können, dann können sie in der Regel auch selber xhost starten oder einfach sudo mit einem alias tauschen. Wenn man Zugriff auf ein Benutzerkonto hat, dass sich Admin-Rechte beschaffen kann, dann gibt es doch sicher reichlich Möglichkeiten das auch ohne xhost auszunutzen, oder? Wenn ich mein Passwort von einem Account eingebe, der potentiell aus dem Internet angreifbar ist/war dann habe ich immer ein Risiko. Da müsste man sich schon komplett neu anmelden um das zu vermeiden.

Außerdem greift ja sudox und anderes auch irgendwie auf den X-Server zu, der in der Kontrolle des Nutzers ist. Läuft aufs gleiche raus.

Aber wenn es wirklich so ist, dann sollte die man-page von xhost eigentlich auch auf solche zusätzlichen Risiken hinweisen, die sagt nämlich, dass es (nur) auf einem Single-User-System ausreichend ist.

Nicht falsch verstehen: Ich will nur verstehen warum es damit ein größeres Risiko ist als sowieso schon. Nur wenn ich verstehe, dass meine Denkweise falsch ist, kann ich das als unsicher ansehen  :Smile: 

----------

## alex00

Also irgendwie blicke ich nicht mehr durch. Bitte kann jemand die Schritte der reihen nach auslisten, dass auch ich es verstehe  :Smile: 

Habe 2 Benutzer am PC und noch den root. Möchte ein Programm so starten, dass es als root läuft, möchte aber nicht jedesmal das root-passwort eingeben müssen (möchte dies ja auch nicht an den 2ten Benutzer weitergeben).

Danke für eure Hilfe.

----------

## mv

 *sirro wrote:*   

> Also wenn die irgendwelche Lücken ausnutzen können, dann können sie in der Regel auch selber xhost starten oder einfach sudo mit einem alias tauschen.

 

Das erste können sie nur, wenn sie die Rechte desjenigen Benutzers erlangen können, der (unbeschränkten) Zugriff auf X hat. Mein Browser z.B. läuft deswegen i.d.R. als ein Benutzer, der nur "untrusted" Zugriff hat. Das mit dem Alias ist in einer bereits vorher gestarteten Shell schwierig. Für eine neue Shell ist das (also etwa eine neue oder modifizierte ~/.login ~/.bashrc o.ä.) durchaus eine ernstzunehmende Gefahr.

 *Quote:*   

> Wenn man Zugriff auf ein Benutzerkonto hat, dass sich Admin-Rechte beschaffen kann, dann gibt es doch sicher reichlich Möglichkeiten das auch ohne xhost auszunutzen, oder?

 

Schwierig. Da braucht man dann zumindest einen zweiten Expoit, der einem die Rechte erhöhen kann. Also einen Exploit für den Kernel oder ein suid-Programm. Davon gibt es nicht allzu viele.

 *Quote:*   

> Wenn ich mein Passwort von einem Account eingebe, der potentiell aus dem Internet angreifbar ist/war dann habe ich immer ein Risiko.

 

Deswegen fragt sudo dort aber ja per Default auch nicht nach dem root passwort.

 *Quote:*   

> Da müsste man sich schon komplett neu anmelden um das zu vermeiden.

 

Ja, genau das sollte man auch tun, wenn man echte Administrationsaufgaben beginnt. Das andere (sudo u.ä.) ist nur für ganz bestimmte Appliaktionen da, die das Leben in der Konfiguration für den Benutzer selbst einfacher machen aber - zumindest in der Version, auf die Benutzer zugreifen kann - keinen echten Schaden anrichten können. Diese Dinge sollte man natürlich auf Herz und Nieren prüfen, sonst wird es gefährlich.

 *Quote:*   

> Außerdem greift ja sudox und anderes auch irgendwie auf den X-Server zu, der in der Kontrolle des Nutzers ist.

 

Jein: Der mit sudox/sux explizit dazu autorisierte Benutzer kann auf den X-Server zugreifen. Nicht z.B. der Benutzer, unter dem der Browser läuft - der ist nach wie vor "untrusted". Root hat mit solchen Einschränkungen natürlich niemals Probleme (außer man benutzt ACLs oder andere Rollenmodelle): Root kann ja einfach alle ~/.Xauthority files lesen, die es will. Deshalb schrieb ich ja auch: Wenn es nur um root geht, genügt ein export XAUTHORITY.

 *Quote:*   

> dass es (nur) auf einem Single-User-System ausreichend ist.

 

Bei einem Rechner, bei dem es garantiert keinen weiteren Benutzer gibt (also keinen Internet-Zugang) ist das durchaus richtig.

----------

## sirro

 *Quote:*   

>  *Quote:*   Wenn man Zugriff auf ein Benutzerkonto hat, dass sich Admin-Rechte beschaffen kann, dann gibt es doch sicher reichlich Möglichkeiten das auch ohne xhost auszunutzen, oder? 
> 
> Schwierig. Da braucht man dann zumindest einen zweiten Expoit, der einem die Rechte erhöhen kann. Also einen Exploit für den Kernel oder ein suid-Programm. Davon gibt es nicht allzu viele.

 

Wieso schwierig? Wenn der Nutzer sich Adminrecht beschaffen kann, dann muss er ja "nur" solange warten bis der User sich diese Recht auch beschafft und schon kann er die entsprechenden Daten abgreifen.

Wenn er das nicht kann dann beschraenkt es sich natuerlich auf einen zusaetzlichen Exploit.

 *Quote:*   

> Jein: Der mit sudox/sux explizit dazu autorisierte Benutzer kann auf den X-Server zugreifen.

 

Und damit hat der vollen Zugriff. Habe ich also keine unpriv. Benutzer (sondern nur einen normalen) dann ist das IMHO Jacke wie Hose wie ich dem Zugriff gebe. Zugriff hat er am Ende immer.

Dein Scenario mit einem unpriv. User ist natuerlich etwas anderes. Da hast du ja im Prinzip ein Mehrbenutzersystem indem die Benutzer zwar alle von die genutzt werden, aber unterschiedliche Vertrauensstufen haben.

Insofern nehme ich allerdings meine generelle Empfehlung für xhost zurück, aber werde es trotzdem noch benutzen, da es bei mir keine zusätzliche Unsicherheit bringt.

----------

## mv

 *alex00 wrote:*   

> Möchte ein Programm so starten, dass es als root läuft, möchte aber nicht jedesmal das root-passwort eingeben müssen.

 

Wie erwähnt: Aus Sicherheitsgründen sollte das nur ein Programm sein, mit dem man nicht viel Schaden anrichten kann.

Dann schreibst Du Dir ein Skript: 

```
#! /bin/sh

export DISPLAY=":0.0"

export XAUTHORITY="$HOME/.Xauthority"

gewuenschtes_programm gewuenschte_parameter
```

(wenn dem Skript Parameter übergeben werden sollen, die es an das Programm weiterreichen soll, müssen diese ggf. natürlich erst sehr vorsichtig auf Konsistenz und Sicherheit überprüft werden). Dann gibst Du dieses Skript explizit für den Benutzer (ggf. noch mit NOPASSWD, so dass Du nie nach dem Passwort gefragt wirst) in der /etc/sudoers frei. Da kannst Du es einfach mit sudo starten.

In dem Skript bin ich jetzt davon ausgegangen, dass $HOME nicht verändert wird - das hängt von Deiner sudo-Konfiguration ab. Alternativ kannst Du auch z.B. DISPLAY und XAUTHORITY als User setzen (etwa in ~/.bashrc o.ä.) und dann /etc/sudoers so konfigurieren, dass diese Variablen bei dem gewünschten Kommando von sudo beibehalten werden (IIRC mit keep_env+="DISPLAY XAUTHORITY"). In dem Fall brauchst Du gar kein Script...

----------

## mv

 *sirro wrote:*   

> Wieso schwierig? Wenn der Nutzer sich Adminrecht beschaffen kann, dann muss er ja "nur" solange warten bis der User sich diese Recht auch beschafft

 

Da kann er bei einem vernünftig adminstrierten System warten, bis er schwarz wird.

Normalerweise sollte sich der Nutzer nur Adminrechte für bestimmte wohldefinierte (ungefährliche) Aufgaben (wie etwa zum Abschießen von Druckjobs o.ä.) beschaffen können. Na schön - ein Angreifer, kann dann jederzeit meine Druckjobs abschießen, wenn er viel Geduld hatte...

 *Quote:*   

>  *Quote:*   Jein: Der mit sudox/sux explizit dazu autorisierte Benutzer kann auf den X-Server zugreifen. 
> 
> Und damit hat der vollen Zugriff. Habe ich also keine unpriv. Benutzer (sondern nur einen normalen) dann ist das IMHO Jacke wie Hose wie ich dem Zugriff gebe.

 

Es ist immer noch ein Unterschied, ob jetzt nur root (der das sowieso kann, wenn er nur will) auf den aktuellen X-Server zugreifen kann, oder ob das jeder der Benutzer in Deiner password Datei kann; beispielsweise der Benutzer, mit dem Du im Netz unterwegs bist. Wenn sich der letzte nicht von dem Benutzer unterscheidet, mit dem Du eingeloggt bist, hast Du sowieso schon unsicher konfiguriert - da ist es dann wirklich fast egal, weil Dein Rechner dann ohnehin unsicher ist.

 *Quote:*   

> Da hast du ja im Prinzip ein Mehrbenutzersystem indem die Benutzer zwar alle von die genutzt werden, aber unterschiedliche Vertrauensstufen haben.

 

Das ist auch das mindeste was man machen soll. Sonst kannst Du gleich als root im Netz surfen...

----------

## sirro

 *mv wrote:*   

> Wenn sich der letzte nicht von dem Benutzer unterscheidet, mit dem Du eingeloggt bist, hast Du sowieso schon unsicher konfiguriert - da ist es dann wirklich fast egal, weil Dein Rechner dann ohnehin unsicher ist.

 

Das meine ich doch.

----------

## think4urs11

Hier noch eine minimal andere Variante: http://gentoo-wiki.com/Xorg#Allow_root_to_start_X_applications_after_su.27ing:

----------

## alex00

Also jetzt schein ich mich echt zu dumm anzustellen. Wenn ich die Befehle wie oben beschrieben der Reihe nach eingebe, bekomme ich immer noch die Fehlermeldung, dass er sich mit dem x-server nicht verbinden kann.

----------

## stalinski

Jetzt nicht direkt zum thema.

Aber wie hast du deine sudoers editiert?

Am besten waere es, wenn du dafuer das dafuer vorgesehene Programm benutzt: visudo

Gruss,

Sven

----------

