• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Die Bildungsoffensive hier im Forum geht weiter! Jetzt sollen Kreativität und technische Möglichkeiten einen neue Dimension erreichen. Das Thema in diesem Monat lautet - Verkehrte Welt - Hier geht es lang --> Klick

Unterschied zwischen sudo und su

Gregor Samsa

Ribston Pepping
Registriert
24.05.10
Beiträge
301
Kann mir jemand kurz und verständlich erklären was der Unterschied zwischen "sudo" und "su" ist?

Hintergrund: Ich möchte aus einer normalen User-Shell den Befehl "sudo periodic daily" ausführen, kann das Passwort aber nicht korrekt eingeben bzw. es wird nicht als korrekt erkannt.
Über "su Adminname" kann ich mich allerdings anmelden bzw. ummelden. Muss ich das denn aber überhaupt für den Befehl? Eigentlich müsste doch das vorangestellte "sudo" die gleiche Funktion übernehmen, oder nicht? Warum nimmt er mein Passwort nicht an?

Ich bitte um Aufklärung...! :)
 

Scotch

Böhmischer Jungfernapfel
Registriert
02.12.08
Beiträge
8.249
sudo - ein Programm als anderer user (i.d.R. mit mächtigeren Privilegien als der eigene account) ausführen. Ohne Angabe von Parametern wird der lokale Superuser angenommen.
su - auf die user-ID (und die i.d.R. damit verbundenen mächtigeren Privilegien als der eigene account) wechseln. Ohne Angabe von Parametern wird der lokale user 'root' angenommen.

Kurz gesagt: sudo führt einen Befehl oder ein Skript als ein anderer user aus, während su in der lokalen shell komplett den Benutzer wechselt, d.h. alle nachfolgenden Befehle werden unter dieser Identität ausgeführt.

Weiterführende Informationen: 'man sudo' bzw. 'man su'.

HTH,
Dirk
 

smoe

Roter Winterkalvill
Registriert
13.04.09
Beiträge
11.575
Sudo musst du voranstellen um mit deinem account einen Befehl mit root-rechten auszuführen. Mit su wirst du zum root-user und kannst mit seinen rechten ganz normal Befehle Ausführen ohne sudo davor zu schreiben.

Edit: zu langsam...
 

Gregor Samsa

Ribston Pepping
Registriert
24.05.10
Beiträge
301
Und warum wird bei einem Sudo-Befehl mein Admin-Passwort nicht angenommen?
 

Scotch

Böhmischer Jungfernapfel
Registriert
02.12.08
Beiträge
8.249
Weil du für sudo das Passwort deines accounts (nicht das eines Admin-/Superuser-Accounts) angeben musst. Damit das funktioniert, muss natürlich dein Account in /etc/sudoers eingetragen sein. 'man sudoers' hilft weiter. Achtung: Unter MacOS muss sudoers aus einer root-shell ('su') mit 'visudo' editiert werden. Natürlich hilft auch hier 'man visudo' weiter.

Gruss,
Dirk
 

gKar

Maunzenapfel
Registriert
25.06.08
Beiträge
5.362
Standardmäßig ist in OS X jeder Admin ein Sudoer, ein normaler User nicht. Und das ist auch Absicht, denn sonst könnte ein normaler User per sudo den Rechner administrieren, ohne Admin zu sein.
Ebenfalls standardmäßig ist in OS X die Root-Shell deaktiviert, d.h. niemand kann sich per "su" ohne Benutzernamen mal eben als Root einen Prompt holen, nicht einmal ein Admin.

Konsequenz:
Als User muss man sich zunächst per "su <benutzername eines admins>" und Eingabe des Admin-Passworts eine Admin-Shell holen (ohne Root-Rechte). In dieser Admin-Shell kann man dann per sudo (und wiederum Angabe des Admin-Passworts) auch einzelne Befehle mit Root-Rechten ausführen.
 

Gregor Samsa

Ribston Pepping
Registriert
24.05.10
Beiträge
301
Ist das kompliziert... :D

Was ist denn ein Prompt? Und ich dachte die Tatsache, dass ein normaler User per sudo den Rechner administrieren kann, wird durch das notwenige Admin-Passwort verhindert.

Ich fasse nochmal für mein eigenes Verständnis zusammen: Normaler User kann sich nicht einfach Admin-Rechte holen und deswegen auch keine sudo-Befehle ausführen. Für sudo ist nicht ein Admin-, sondern das jeweilige Account-Passwort zu verwenden. Also muss sich ein normaler User per su erst eine Admin-Umgebung holen und kann dann per sudo aggieren.

Letzte Frage, die noch bleibt: Warum brauche ich als Admin noch den Befehl sudo und muss diesen erneut mit meinem Admin-Passwort bestätigen (obwohl ich doch schon Admin bin)?

Danke für die geduldigen Antworten! ;)
 

gbyte

Gelbe Schleswiger Reinette
Registriert
07.04.07
Beiträge
1.752
Hier wäre der Ablauf folgender:

  1. wechsle mit su admin[1] + das Passwort des Admin zu diesem
  2. führe nun einen sudo-Befehl + Passwort des Admin aus
[1] Kurzname deines Admin-Benutzers

Gruß,

GByte

[EDIT]

Ach, das hat ja gKar schon alles aufgeführt. Entschuldigt die Wiederholung.

Ich fasse nochmal für mein eigenes Verständnis zusammen: Normaler User kann sich nicht einfach Admin-Rechte holen und deswegen auch keine sudo-Befehle ausführen. Für sudo ist nicht ein Admin-, sondern das jeweilige Account-Passwort zu verwenden. Also muss sich ein normaler User per su erst eine Admin-Umgebung holen und kann dann per sudo aggieren.

Ein normaler, oder auch eingeschränkter Nutzer kann immer (bei Standardeinstellungen) auf einen Admin-Nutzer in der Shell wechseln, sofern er dessen Passwort kennt. Allerdings nicht direkt root-Rechte erwerben. Dies bleibt den Admin-Nutzern vorbehalten. Deswegen der Weg des normalen Nutzers über einen Admin-Benutzer bis hin zum root.

Letzte Frage, die noch bleibt: Warum brauche ich als Admin noch den Befehl sudo und muss diesen erneut mit meinem Admin-Passwort bestätigen (obwohl ich doch schon Admin bin)?

Das liegt daran das ein Admin-Benutzer und root zwei verschiedene Nutzer sind.

[/EDIT]
 
Zuletzt bearbeitet:

gKar

Maunzenapfel
Registriert
25.06.08
Beiträge
5.362
Warum brauche ich als Admin noch den Befehl sudo und muss diesen erneut mit meinem Admin-Passwort bestätigen (obwohl ich doch schon Admin bin)?

Ein Admin hat bei Mac OS X eben nicht dauerhaft Root-Rechte, sondern eingeschränkte Rechte sowie das Recht, einzelne Prozesse nach Passworteingabe mit Root-Rechten ausführen zu lassen. Das hat Sicherheitsgründe, denn so haben vom Admin gestartete Prozesse nicht automatisch die volle Kontrolle übers System, sondern nur dann, wenn ihnen der Admin das bewusst explizit per Passworteingabe erlaubt.
 

skyvalley

Erdapfel
Registriert
02.01.11
Beiträge
1
Ist es denn nich möglich mit der Option sudo -u adminuser den Befehl als normaluser auszuführen ?
 

Scotch

Böhmischer Jungfernapfel
Registriert
02.12.08
Beiträge
8.249
Das wäre sinnfrei, da auch ohne -u der Befehl als Superuser ausgeführt wird. Um als normaler Benutzer Befehle als Superuser auszuführen, siehe Beitrag #5. Und fangt endlich an, euch ins Thema einzulesen (die man-pages sind ein guter Startpunkt), bevor ihr mit su und sudo experimentiert.

Gruss,
Dirk
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
Um als normaler Benutzer Befehle als Superuser auszuführen, siehe Beitrag #5.
Auf gar keinen Fall dürfen eingeschränkte Benutzer in die sudoers-Liste aufgenommen werden. Dies würde faktisch die Trennung zwischen Admin und Normalbenutzer aufheben.

Um das auf die richtige Weise zu tun:
1) Mittels "su admin" zu einem Admin-Login wechseln.
2) Dort mittels "sudo command" die gewünschte Aktion ausführen.
3) Mit "exit" wieder zur eigenen Benutzerumgebung zurückkehren.
 

gKar

Maunzenapfel
Registriert
25.06.08
Beiträge
5.362
Auf gar keinen Fall dürfen eingeschränkte Benutzer in die sudoers-Liste aufgenommen werden. Dies würde faktisch die Trennung zwischen Admin und Normalbenutzer aufheben.

Naja, „auf gar keinen Fall“ ist vielleicht etwas hart. Wenn der einzige Benutzer, der jemals mit dem Account arbeiten wird, ohnehin den Admin-Account kennt und niemals andere (z.B. Besuch) den Rechner mit seinem Benutzeraccount verwenden lässt, kann man das m.E. durchaus machen. Denn dieser Nutzer kennt ohnehin auch das Admin-Kennwort und kann den Rechner administrieren, und die Trennung zwischen seinem Normalaccount und Adminaccount dient ohnehin nur der Absicherung, dass keine Anwendersoftware ohne Bestätigung Aktionen mit Admin-Rechten ausführen kann.

Trotzdem würde ich das nicht tun. Der Komfortgewinn ist mir viel zu gering (ein „su admin“ geht doch schnell) und der Nachteil wiegt zu schwer, dass ich dann ganz streng sicherstellen müsste, dass nie ein Anderer meinen User-Account nutzt.
 

karolherbst

Danziger Kant
Registriert
11.05.07
Beiträge
3.878
Naja, „auf gar keinen Fall“ ist vielleicht etwas hart. Wenn der einzige Benutzer, der jemals mit dem Account arbeiten wird, ohnehin den Admin-Account kennt und niemals andere (z.B. Besuch) den Rechner mit seinem Benutzeraccount verwenden lässt, kann man das m.E. durchaus machen. Denn dieser Nutzer kennt ohnehin auch das Admin-Kennwort und kann den Rechner administrieren, und die Trennung zwischen seinem Normalaccount und Adminaccount dient ohnehin nur der Absicherung, dass keine Anwendersoftware ohne Bestätigung Aktionen mit Admin-Rechten ausführen kann.

Schön und Gut, aber was ist, wenn du ein Programm ausführst, dass einen neuen User einrichtet mit Adminrechte, SSH für ihn aktiviert und diese Anmeldedaten auf einen anderen Server sendet?
 

gKar

Maunzenapfel
Registriert
25.06.08
Beiträge
5.362
Wie kann ein Programm, das im Benutzeraccount gestartet wird, andere User anlegen? Sollte ein Programm versuchen, sich per sudo Root-Rechte zu holen, müsste es dazu das Benutzerpasswort kennen oder den Nutzer nach seinem Passwort fragen.
 

karolherbst

Danziger Kant
Registriert
11.05.07
Beiträge
3.878
weißt du was jedes Programm macht, wenn es nach einem Passwort fragt? Ich unterstelle mal Nutzern, die sich in die sudoers eintragen mal, dass sie nicht so sehr darauf achten, wer alles das Passwort haben möchte.

EDIT: ich denke grade zu sehr Linux, wo man einfach mit "adduser" User anlegen kann, gibt es in Mac OS X nichts vergleichbares?
 

MacAlzenau

Golden Noble
Registriert
26.12.05
Beiträge
22.704
3) Mit "exit" wieder zur eigenen Benutzerumgebung zurückkehren.
Ist das generell nötig?
Die meisten "Normalos" benutzen die Shell ja nur mal kurz für ein, zwei Befehle und schließen das Terminal dann wieder - damit müsste der Root ja wieder ausgeloggt sein.
 

Scotch

Böhmischer Jungfernapfel
Registriert
02.12.08
Beiträge
8.249
Auf gar keinen Fall dürfen eingeschränkte Benutzer in die sudoers-Liste aufgenommen werden. Dies würde faktisch die Trennung zwischen Admin und Normalbenutzer aufheben.

Da sich in /etc/sudoers gezielt festlegen lässt, wer welchen Befehl ausführen darf, sehe ich das nicht so. Man muss ja nun einem Benutzer nicht gleich einen Persilschein in sudoers einrichten.

Gruss,
Dirk
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
Sollte ein Programm versuchen, sich per sudo Root-Rechte zu holen, müsste es dazu das Benutzerpasswort kennen oder den Nutzer nach seinem Passwort fragen.
Nein, muss es nicht.
Es muss nur unbemerkt im Hintergrund warten und auf den irgendwann kommenden Moment lauern, in dem du sudo für was irgendwas anderes benutzt und das Kennwort ganz freiwillig hergibst.

Ich wiederhole noch mal die Formulierung: AUF GAR KEINEN FALL.
Sonst hört die überaus sinnvolle Trennung zwischen "Administratoren" und "eingeschränkten Konten" auf zu existieren, dieser ganze Mechanismus würde dadurch zur blanken Illusion ohne Wirkung. Ausnahmen: Keine. Punkt.
 

Rastafari

deaktivierter Benutzer
Registriert
10.03.05
Beiträge
18.150
Da sich in /etc/sudoers gezielt festlegen lässt, wer welchen Befehl ausführen darf
Etwa 3/4 aller zur Verfügung stehenden Basiskommandos lässt sich mühelos kapern und in böswilliger Weise für eine Erhöhung der Benutzerprivilegien missbrauchen. Ich wiederhole: AUF KEINEN FALL.