Warum kann ich meinen neu erstellten Benutzer nicht mit chown verwenden?

3188
Wilco

Ich versuche also, einen neuen Benutzer und eine neue Gruppe zu erstellen und dann den Besitz eines Verzeichnisses in diesen neuen Benutzer bzw. diese neue Gruppe zu ändern. Wenn ich dies jedoch tue, kommt chown mit der Meldung "Illegaler Benutzername" zurück.

Hier ist ein vereinfachtes Shell-Skript, das zeigt, was ich versuche:

#!/usr/bin/bash  # Create Group dscl . create /Groups/_jira dscl . create /Groups/_jira gid 301"  # Create User dscl . create /Users/_jira dscl . append /Groups/_jira GroupMembership _jira  # Change Ownership chown -R _jira:_jira /Some/random/directory 

... und die Ausgabe, die ich bekomme, ist:

chown: _jira: illegal user name 

Verpasse ich einen Schritt? Liegt es daran, dass dem Benutzernamen ein Unterstrich vorangestellt ist?

Hinweis: Ich kann alle vorhandenen Benutzer und Gruppen auflisten und den _jira-Benutzer und die _jira-Gruppe sehen sowie sehen, dass der Benutzer dieser Gruppe zugewiesen ist.

2

1 Antwort auf die Frage

2
Gordon Davisson

Sie haben dem _jira-Benutzer keine Benutzer-ID-Nummer zugewiesen (was von dscl als UniqueID bezeichnet wird). Da der Besitz der Datei nach der Benutzer-ID aufgezeichnet wird, gibt es keine Möglichkeit, Dateien einem Konto ohne Konto zuzuordnen. Etwas hinzufügen wie:

dscl . create /Users/_jira UniqueID 301 

Sie sollten auch die PrimaryGroupID des Benutzers festlegen, und ich würde diese verwenden, um sie der _jira-Gruppe zuzuweisen, anstatt den Benutzer der Gruppe hinzuzufügen:

dscl . create /Users/_jira PrimaryGroupID 301 

Wenn Sie weiterhin eine sekundäre Mitgliedschaft in der Gruppe _jira hinzufügen möchten, sollten Sie eine andere Gruppen-ID als primäre zuweisen und anschließend die sekundäre Mitgliedschaft mit dseditgroup hinzufügen:

sudo dseditgroup -o edit -a _jira -t user _jira 

Dies fügt nicht nur "_jira" zur GroupMembership-Liste der Gruppe hinzu, sondern fügt auch die UUID des Benutzers zur GroupMembers-Liste der Gruppe hinzu. Es wird empfohlen, beides zu tun, und obwohl es mit dscl möglich ist, ist es mit dseditgroup einfacher.