Was sind die zulässigen Gruppennamen für groupadd?

11

Ich habe diese Anweisungen befolgt , um Shadow zu erstellen, das den groupaddBefehl bereitstellt . Ich erhalte jetzt eine Fehlermeldung, wenn ich Folgendes versuche:

$ groupadd automake1.10
groupadd: 'automake1.10' is not a valid group name

Ich habe alphanumerische Namen überprüft und sie funktionieren einwandfrei.

Tshepang
quelle

Antworten:

18

Siehe insbesondere den Quellcode libmisc/chkname.c. Shadow ist ziemlich konservativ: Namen müssen mit dem regulären Ausdruck übereinstimmen [_a-z][-0-9_a-z]*\$?und dürfen höchstens GROUP_NAME_MAX_LENGTHZeichen lang sein (Konfigurationsoption, Standard 16; Benutzernamen können normalerweise bis zu 32 Zeichen lang sein, abhängig von der Bestimmung der Kompilierungszeit).

Debian entspannt den Scheck sehr. Ab Squeeze ist alles andere als Leerzeichen und :erlaubt. Siehe Fehler # 264879 und Fehler # 377844 .

Für POSIX müssen Buchstaben in beiden Fällen, Ziffern und ._-( wie in Dateinamen) zulässig sein . POSIX legt keine Einschränkungen fest, wenn Sie sich nicht für die Portabilität interessieren. Eine Reihe von empfohlenen Einschränkungen ergeben sich aus der Verwendung:

  • Doppelpunkte, Zeilenumbrüche und Nullen sind richtig; Sie können sie einfach nicht in /etc/passwdoder verwenden /etc/group.
  • Ein Name, der nur aus Ziffern besteht, ist eine schlechte Idee - chownund chgrpsoll eine Ziffernfolge als Namen behandeln, wenn er sich in der Benutzer- / Gruppendatenbank befindet. Andere Anwendungen können jedoch jede Zahl als numerische ID behandeln.
  • Eine Initiale -oder ein .in einem Benutzernamen wird dringend empfohlen, da viele Anwendungen erwarten, dass sie $user.$groupan ein externes Dienstprogramm (z chown $user.$group /path/to/file. B. ) übergeben werden können ¹. Ein .Name in einer Gruppe sollte weniger Probleme verursachen, aber ich würde trotzdem empfehlen, dagegen zu sein.
  • / Dies kann ebenfalls zu Problemen führen, da einige Programme erwarten, dass Benutzernamen in Dateinamen verwendet werden können.
  • Jeder Charakter, den die Shell erweitern würde, ist wahrscheinlich riskant.
  • Nicht-ASCII-Zeichen sollten in Ordnung sein, wenn Sie sich nicht für die Freigabe mit Systemen interessieren, die möglicherweise unterschiedliche Codierungen verwenden.

¹ Alle modernen Implementierungen erwarten chown $user:$group, unterstützen jedoch die chown $user.$groupAbwärtskompatibilität, und es gibt zu viele Anwendungen, die einen Punkt übergeben, um diese Kompatibilitätsunterstützung zu entfernen.

Gilles 'SO - hör auf böse zu sein'
quelle
Betreff chown: Die aktuelle Syntax, zumindest in GNU-Coreutils, lautet user:group: Punkt wird nur aus Kompatibilitätsgründen akzeptiert. Man kann verwenden j.smith:j.smith.
user1686
1
@grawity: Es sind nicht nur GNU-Coreutils, sondern das Problem liegt nicht an sich chownselbst, sondern an vorhandenen Skripten und anderen Programmen, die chown $user.$groupstattdessen aufgerufen werden chown $user:$group- selbst wenn die chownImplementierung versucht, das Richtige zu tun, sind einige Fälle an sich nicht eindeutig.
Gilles 'SO - hör auf böse zu sein'
1

Wenn Sie sich abenteuerlustig fühlen, können Sie /etc/groupdirekt bearbeiten und einen beliebigen Gruppennamen eingeben. Dies hat auch den zusätzlichen Vorteil, dass Sie bei einem der genannten Probleme @Gilles möglicherweise keinen Editor laden können, um das Problem zu beheben, oder sich überhaupt nicht anmelden können - was Ihnen wertvolle Erfahrungen bei der Wiederherstellung eines defekten Systems gibt!

Malvineous
quelle
5
Vergessen Sie nicht, /etc/gshadowbeim Hinzufügen von Gruppen zu bearbeiten . Verwenden Sie vigr(8)die Dateien auch, anstatt sie direkt zu bearbeiten.
Camh