Das Aus für systemd?!

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Nein, es ist KEIN Bug, es wird auch nichts behoben und die Diskussion darüber ist völlig überflüssig.

    Code
    man 5 adduser.conf
    Code
    NAME_REGEX
    Benutzer-  und  Gruppennamen  werden mit diesem regulären Ausdruck überprüft.
    Wenn der Name nicht zum regulären Ausdruck passt, verweigert Adduser die 
    Erstellung von Benutzer und Gruppe - es sei denn, die Option --force-badname 
    wurde gewählt. Das Setzen von --force-badname lässt Adduser nur schwache  
    Kontrollen  durchführen.  Der Standardwert ist der konservativste ^[az][-a-z0-9]*$.

    Wenn ein solcher Username mit führender Ziffer mit explizitem --force-badname angelegt wurde, werte ich das als vorsätzlich durchgeführtes destruktives Handeln. Wenn der Admin also nicht völlig verblödet ist, kann man das auch Sabotage nennen.

    Einmal editiert, zuletzt von WinterUnit16246 (4. Juli 2017 um 22:31)

  • Nur weil die Benutzung von NAME_REGEX als best-practise gilt, bleiben Usernamen, die dieser nicht entsprechen, trotzdem gültig (die Sinnhaftigkeit aussen vor gelassen, darum geht es nicht). Somit handelt es sich durchaus um einen Bug in systemd.
    Siehe u.a.:
    http://pubs.opengroup.org/onlinepubs/969…html#tag_03_431
    http://pubs.opengroup.org/onlinepubs/969…html#tag_03_278

    Wenn du nichts zu sagen hast, sag einfach nichts.

    Einmal editiert, zuletzt von llutz (5. Juli 2017 um 09:27)

  • Nur weil die Benutzung von NAME_REGEX als best-practise gilt, bleiben Usernamen....

    Für dich ist der Wortlaut "verweigert Adduser die Erstellung von Benutzer und Gruppe" nur "best practice"? Mit anderen Worten, die vom Betriebs-System vorgegebenen Beschränkungen nicht vorsätzlich außer Kraft zu setzen, ist nur "best practice"?

    Dann ist wahrscheinlich für Dich auch der folgende Befehl völlig ok im Rahmen dessen, was grundsätzlich erlaubt und möglich ist:

    Code
    chmod -R ugo+rw /*

    :wallbash:

    Sorry, da fällt mir wirklich nix mehr zu ein....


  • Du verwechselst "nicht erlaubt" mit "dumm, es zu tun".


    Kannst Du mir den Sinn einer Diskussion erklären, bei der es um das vorsätzliche Ausserkraftsetzen von Beschränkungen eines Betriebssystems geht? Es ist doch völlig egal, ob das dumm ist oder nicht. Wenn jemand sowas tut, wird faktisch ein Betriebssystem sabotiert. Und es gibt doch vermutlich eine Million andere Möglichkeiten, mit denen man mit völlig legalen Bordmitteln das OS sabotieren kann. Wo ist denn da ein Unterschied zu anderen Sabotagemaßnahmen?

    Für mich gibts nur 2 Möglichkeiten: Der Admin ist entweder dumm oder ein Saboteur. Für beides ist nicht das OS verantwortlich. Das OS hat in beiden Fällen keine Chance, sich dagegen zu wehren, egal welche Plausibilitäten irgendwelche Entwickler einbauen. Sobald der Admin "root" ist, darf er alles.... auch zerstören.

  • Genau das ist doch der Knackpunkt, es gibt diese "Beschränkung eines Betriebssystems" offiziell gar nicht, sie ist nur eine Empfehlung.
    In wieweit es dumm, Vorsatz, Sabotage ist, einen nicht der NAME_REGEX entsprechenden Usernamen zu nutzen ist in der Sache egal.
    Er ist nicht ausdrücklich verboten und somit hat dieser Username als gültig angesehen und entsprechend behandelt zu werden.

    Deine anderen Punkte sind ja alle richtig, gehen aber am Kernproblem vorbei. Es gibt keine Vorschrift nach der Usernamen nicht mit einer Ziffer beginnen _dürfen_ oder zumindest hat sie noch niemand hervorgezaubert. Denn dann wäre die ganze Diskussion hinfällig und Pötterings "not a bug" wäre OK.

    Wenn du nichts zu sagen hast, sag einfach nichts.

    Einmal editiert, zuletzt von llutz (5. Juli 2017 um 12:30)

  • Genau das ist doch der Knackpunkt, es gibt diese "Beschränkung eines Betriebssystems" offiziell gar nicht, sie ist nur eine Empfehlung.


    Ganz offensichtlich bewerten wir das unterschiedlich.

    Code
    adduser 123tom
    adduser: Bitte geben Sie einen Benutzernamen ein, der die Kriterien desregulären Ausdrucks erfüllt, welcher in der Konfigurationsvariablen NAME_REGEX festgelegt ist. 
    Verwenden Sie die Option »--force-badname«, um die Überprüfung weniger strikt durchzuführen, oder ändern Sie NAME_REGEX.

    Fakt ist, die Anlegung wird abgelehnt! Ich werde sogar konkret dazu aufgefordert einen gültigen Namen zu verwenden. Ich werte das eben nicht nur als Empfehlung. Das die Möglichkeit besteht, den "falschen" Usernamen trotzdem anzulegen, aber mit der dann von mir abverlangten Maßnahme "setze dich über die Regeln hinweg und erlaube einen schlechten Usernamen" ... tja, dafür sehe allein eine Verantwortung der Person, die so etwas tut. Eine Empfehlung ist für mich jedenfalls etwas anderes.

    Eine Empfehlung wäre für mich sowas wie "verwende für Samba und Linux das gleiche Passwort, das macht es für Dich einfacher". Einer solchen Empfehlung kann ich folgen oder auch nicht. Das markante dabei ist, es gibt Alternativen. Und wirklich schadhaft ist hier keine Alternative. Für mich gibt es aber keine Empfehlung, wenn die sinngemäß lautet "Ich empfehle Dir, dem System nicht zu schaden." Sowas ist m.E. nie verhandelbar oder gar eine Alternative.

    Aber egal.. wir haben hier unterschiedliche Auffassungen... es ist wohl wie mit Geschmack, den sollte man auch nicht diskutieren.

    Einmal editiert, zuletzt von WinterUnit16246 (5. Juli 2017 um 12:12)

  • Servus, ich möchte das jetzt nicht weiter anheizen.


    ... Fakt ist, die Anlegung wird abgelehnt! ...

    das mag sein. Allerdings erfolgt keine Warnung oder ein anderer Hinweis, wenn ich einen Benutzer per Hand einfach in die /etc/passwd eintrage und anschliessend mit passwd ein Kennwort für ihn vergebe.
    Zumindest akzeptiert das mein Ubuntu anstandslos ...

    Vielleicht als Hintergrund: als ich mit Unix angefangen habe, war das gängige Praxis. Und selbst heute mache ich das noch hin und wieder.
    Ok, ich bin zugegebenermassen erst durch den Hinweis überhaupt auf die Idee gekommen, einen Nutzer mit einer fürhrenden Ziffer anzulegen.
    So gesehen wäre das wiederum ja "systemkonform" weil keine Warnung erfolgt, oder?

    //EDIT: da wären imho entsprechende Änderungen bezüglich warnings in den Tools aus dem Umfeld (passwd, chown, chmod, ...) sinnvoll. Aber dann könnte man auch gleich solche Benutzernamen vollständig ignorieren und alle wären happy ;)

    cu,
    -ds-


  • Ganz offensichtlich bewerten wir das unterschiedlich.

    Code
    adduser 123tom
    adduser: Bitte geben Sie einen Benutzernamen ein, der die Kriterien desregulären Ausdrucks erfüllt, welcher in der Konfigurationsvariablen NAME_REGEX festgelegt ist. 
    Verwenden Sie die Option »--force-badname«, um die Überprüfung weniger strikt durchzuführen, oder ändern Sie NAME_REGEX.

    Fakt ist, die Anlegung wird abgelehnt! Ich werde sogar konkret dazu aufgefordert einen gültigen Namen zu verwenden.

    Hängt vom Werkzeug ab:

    Code
    useradd 0test

    Ergo: Es gibt keine Beschränkung diesbezüglich, wenn man das "richtige" Werkzeug verwendet.

    Und: Es ist völlig absurd, dass das System bei einem User, welcher mit einer Ziffer beginnt, auf root - Recht umschaltet...

  • Code
    man 5 adduser.conf
    Code
    NAME_REGEX
    Benutzer-  und  Gruppennamen  werden mit diesem regulären Ausdruck überprüft.
    Wenn der Name nicht zum regulären Ausdruck passt, verweigert Adduser die 
    Erstellung von Benutzer und Gruppe - es sei denn, die Option --force-badname 
    wurde gewählt. Das Setzen von --force-badname lässt Adduser nur schwache  
    Kontrollen  durchführen.  Der Standardwert ist der konservativste ^[az][-a-z0-9]*$.

    An gleicher Stelle steht aber auch (zumindest in Raspbian)

    Zitat von "man 5 adduser.conf"


    VALID NAMES

    adduser and addgroup enforce conformity to IEEE Std 1003.1-2001, which allows only the following characters to appear in group and user names: letters, digits, underscores, periods, at signs (@) and dashes. The name may no start with a dash. The "$" sign is allowed at the end of usernames (to conform to samba).

    An additional check can be adjusted via the configuration parameter NAME_REGEX to enforce a local policy.

    Die zitierte NAME_REGEX ist also keinesfalls vom Betriebssystem vorgegeben, sondern ein Defaultwert, den man in einer Konfigurationsdatei ändern kann. Es wäre mir neu, daß das Anpassen von Konfigurationsdateien an lokale Bedürfnisse in Linux verboten wäre. Ich habe bisher diese Möglichkeit eigentlich eher für eine Stärke von Linux gehalten. Außerdem gibt es m.W. (das ist allerdings zugegebenermaßen nur Hörensagen) durchaus Distributionen, die einen anderen Default mitbringen.

    Somit ist m.E.


    Wenn ein solcher Username mit führender Ziffer mit explizitem --force-badname angelegt wurde, werte ich das als vorsätzlich durchgeführtes destruktives Handeln. Wenn der Admin also nicht völlig verblödet ist, kann man das auch Sabotage nennen.

    eben nicht die einzige Möglichkeit, eine Nutzerkennung mit führender Ziffer anzulegen.

    Abgesehen davon könnte ein entsprechender Eintrag in einem Unit-File ja auch durch einen Tippfehler zustande kommen. Da kann man sich i.A. nicht aussuchen, welche Taste man versehentlich erwischt. Auch in so einem Fall halte ich es für klar erkennbar, daß mit einem Eintrag der Form "User=0tto" sicher nicht, beabsichtigt war, den entsprechenden Dienst als root laufen zu lassen, sondern das im Gegenteil eben gerade verhindert werden sollte. Insofern fände ich es deutlich angemessener, den Dienst nicht zu starten, als den Eintrag zu ignorieren.

    Ich habe mich übrigens nach anfänglicher Skepsis mittlerweile ganz gut an Systemd gewöhnt und ziehe ihn inzwischen dem alten SYSV-init eher vor, obwohl ich mit letzterem nach wie vor besser vertraut bin. Die Reaktion auf diese Lücke (ja, das ist sie m.E.) halte ich allerdings für arrogant und dumm. Ich zumindest hätte an einen ggfs. von mir entwickelten zentralen Systemdienst durchaus den Anspruch, diesen auch vor offensichtlichen Fehlbedienungen bestmöglich zu schützen. Wie man das anders sehen kann, ist mir ehrlich gesagt völlig unverständlich.

  • Also mal ehrlich Leute, wenn ich mir hier den Diskussionsverlauf anschaue, dann frage ich mich gerade, mit welcher Sachkenntnis hier überhaupt diskutiert wird....

    Zum ersten, was interessieren hier irgendwelche obskure Regeln irgendwelcher Distributionen mit irgendeinem beliebigen Startsystem? Sowas heranzuziehen ist ja genau so albern, als wenn ich die Benutzerverwaltung von Windows 7 als Vergleich heranziehen würde. Redhat hat Systemd herausgebracht und die bestimmen die Regeln für genau ihr Systemd. Es steht allen anderen Distributionen frei, sich ihr eigenes systemd oder sonstwas zu stricken, mit ihren eigenen Regeln.

    Zum zweiten.... hier, also hier in diesem Forum, geht es allenfalls um Raspian, und für mich in Folge natürlich auch um Debian, und definitiv nicht um andere Distributionen. Da Raspian im Grundegenommen ein Debian ist, gelten also m.E. auch die Debian-Regeln. Und da sich die Debian-Community entschieden hat, das von Redhat entwickelte Systemd zu verwenden, so wurden in Folge auch die von dort vorgegebenen Regeln akzeptiert. Insofern gilt dann auch, wenn ein Herr Pöttering völlig zu Recht sagt, dass das KEIN Bug ist, das es kein Bug ist.

    Ganz besonders vor dem Hintergrund, dass führende Ziffern in Usernamen in keinster Weise ein erst jetzt durch systemd enstandenes Problem darstellen. Wenn es tatsächlich so wäre, wie hier einige glauben, so wäre es nicht nur völlig legitim, einen Usernamen mit Ziffern beginnen zu lassen, es wäre genauso legitim, einen Usernamen nur aus Ziffern bestehen zu lassen. Sind ja ganz zweifellos alles Posixkonforme Zeichen. Man kann ihn ja so auch einfach in die /etc/passwd eintragen. Und bei weiterer Betrachtung und der Gültigkeit der 0 (Null) als Posixkonformes Zeichen wäre also auch ein Username 0 oder 1 oder 1000 oder 1001 nicht nur möglich, sondern auch legitim. Dann versuch doch bitte mal einer einem solchen User mit dem Namen 0 oder 1000 via chown korrekte Eigentumsrechte an Dateien oder Verzeichnisse zu vergeben, wenns Namen-UID-Konflikte gibt. Soweit es den User mit dem Namen 0 angeht, ist das völlig unmöglich. Für den User 1000 ist das Ergebnis rein zufällig. Wenn seine UID eine andere ist, wird er nie Rechte auf irgendwas haben. NAME_REGEX hat schon eine konkrete Bedeutung, die weitaus mehr als nur eine Empfehlung ist.

    Diskussionen darüber, dass führende Ziffern in Usernamen ein NoGo sind und das System kompromittieren können, findet man ab 2000. Wie man jetzt darauf rumreiten kann, dass sowas völlig in Ordnung ist, nur weil irgendwelche Hintertürchen bekannt sind, mit denen man das Betriebssystem völlig losgelöst von systemd seit Jahrzehnten austricksen kann, ist mir jedenfalls unerklärlich.

    j.m.2.c.

    Einmal editiert, zuletzt von WinterUnit16246 (5. Juli 2017 um 15:04)

  • Hi,


    ... so wäre es nicht nur völlig legitim, einen Usernamen mit Ziffern beginnen zu lassen, es wäre genauso legitim, einen Usernamen nur aus Ziffern bestehen zu lassen. Man kann ihn so ja einfach in die /etc/passwd eintragen. ...

    yepp ... man kann:


    ... Dann versuch doch bitte mal einer einem solchen User mit dem Namen 0 oder 1000 via chown korrekte Eigentumsrechte an Dateien oder Verzeichnisse zu vergeben, wenns Namen-UID-Konflikte gibt. Soweit es den User mit dem Namen 0 angeht, ist das völlig unmöglich. ...


    scheinbar nicht ;)


    //EDIT: ist auch irgendwie logisch, weil die UID 0 was anderes ist als der Username "0" ... ;)

    Also ich würde ja sagen: ein Benutzername, der im System ist und den man verwenden kann, ist per se gültig, egal wie suspekt es dem einen oder anderen vorkommen mag.
    Gerade so ein zentraler Dienst wie systemd kann das natürlich gerne restriktiver sehen ... dann sollte er solche Unitfiles aber erst gar nicht ausführen. Als "fallback" für solche Fälle, in denen systemd den Namen als ungültig einstuft, diese Units als root zu starten ist in meinen Augen einfach nur grob fahrlässig ...

    //EDIT: das oben war übrigens kein Ubuntu sondern mein Test-Raspi mit der aktuellsten Jessie-Version ...

    das waren jetzt mal meine 0,02€ zum Abschluss,
    -ds-

  • Zitat

    //EDIT: ist auch irgendwie logisch, weil die UID 0 was anderes ist als der Username "0" ...

    Code
    chown thomas datei
    chown 1000 datei

    Beides führt bei mir zum gleichen Ergebnis. Wäre 1000 aber mein Username und meine UID 1005 gehts nicht mehr.

  • //EDIT: wie gesagt ... vollkommen logisch, weil die UID 1000 was anderes ist als der User "1000" ;)

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!