adduser --gid --ingroup Frage

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
Benutzeravatar
pangu
Beiträge: 1400
Registriert: 15.11.2011 20:50:52
Lizenz eigener Beiträge: GNU General Public License
Wohnort: /proc/1

adduser --gid --ingroup Frage

Beitrag von pangu » 10.03.2013 01:51:12

Hi Leute,

adduser nutzt ja /etc/adduser.conf, die ich unverändert belassen habe. Ich verstehe folgendes nicht:

ich erstelle erstmal eine Gruppe namens "testgruppe2" an:

Code: Alles auswählen

# addgroup testgruppe2
Lege Gruppe »testgruppe2« (GID 1004) an ...
Fertig.
nun erstelle ich einen neuen user namens "max" und setze seine primäre Gruppenzugehörigkeit auf die vorhin erstellte Gruppe:

Code: Alles auswählen

# adduser --gid 1004 max1
Lege Benutzer »max1« an ...
Lege neuen Benutzer »max1« (1011) mit Gruppe »testgruppe2« an ...
Erstelle Home-Verzeichnis »/home/max1« ...
Kopiere Dateien aus »/etc/skel« ...
Geben Sie ein neues UNIX-Passwort ein:
Geben Sie das neue UNIX-Passwort erneut ein:
passwd: Passwort erfolgreich geändert
Benutzerinformationen für max1 werden geändert.
Geben Sie einen neuen Wert an oder drücken Sie ENTER für den Standardwert
        Vollständiger Name []:
        Zimmernummer []:
        Telefon geschäftlich []:
        Telefon privat []:
        Sonstiges []:
Sind die Informationen korrekt? [J/n] j
Wenn ich nun ein Verzeichnis mit "chmod 770" erstelle, owner=root, group=testgruppe2 dann kann der User "max1" in diesen Ordner rein, und darin auch Dateien/Ordner lesen und schreiben. Der User max1 hat zwar eine Gruppenzugehörigkeit zu dieser Gruppe mit der id 1004, aber

Code: Alles auswählen

cat /etc/group
zeigt mir an:
testgruppe2:x:1004:
Meine erste Frage: Wieso taucht er denn hier nicht auf? Nehmen wir an ich möchte wissen, welche Benutzer diese testgruppe2 beinhaltet. Ein einfaches "cat /etc/group" hilft mir hier nicht weiter. Ich müßte erst durch Umwege und Betrachten der Datei /etc/passwd heraussuchen, welche Benutzer die ID 1004 als ihre primäre Gruppe eingetragen haben. Irgendwie blöd, wie ich finde.

Nun habe ich einfach mal testweise folgendes ausgeführt:

Code: Alles auswählen

# adduser max1 testgruppe2
Füge Benutzer »max1« der Gruppe »testgruppe2« hinzu ...
Benutzer max1 wird zur Gruppe testgruppe2 hinzugefügt.
Fertig.
Dadurch hab ich den Benutzer max1 in die testgruppe2 hinzugefügt. Ich bestätige mich davon mit dem Befehl "cat /etc/group" und erhalte folgende Ausgabe:
testgruppe2:x:1004:max1
Meine zweite Frage: Versuche ich nun den vorherigen Zustand wiederherzustellen, indem ich einfach den User max1 aus der testgruppe2 wieder zu entfernen, dann schlägt das fehl:

Code: Alles auswählen

# deluser max1 testgruppe2
/usr/sbin/deluser: Sie dürfen den Benutzer nicht aus seiner primären Gruppe entfernen.
Irgendwie unsinnig, oder nicht? Davor war er ja auch nicht aufgelistet, und nun läßt er mich das nicht zu. Was ist da los, was steckt dahinter?

Mein Wunsch wäre, dass ich mit dem Adduser Befehl einen User erstellen kann und seine Gruppenzugehörigkeit zu einer Gruppe mit "cat /etc/group" ersichtlich wird. Er soll in der Gruppe auch wirklich auflistbar sein. Ich möchte aber nicht die Option add_extra_groups hierzu verwenden müssen, denn diese Konfiguration müsste man in die /etc/adduser.conf machen müssen. Das will ich aber nicht, aus folgendem Grund:

hätte ich fünf verschiedene Applikationen, aus denen ich heraus neue User erstelle lasse, und jede einzelne Applikation sollte z.B. folgendes ausführen:
app1 --> adduser --ingroup gruppe1 testuser
app2 --> adduser --ingroup andregruppe maxmustermann
app3 --> adduser --ingroup undsoweiter foobar

dann müsste ich das zwangsweise wie folgt lösen:

- ich müßte die /etc/adduser.conf so oft kopieren in z.B. /etc/adduser_fuer_app1.conf, /etc/adduser_fuer_app2.conf, usw...
- dann müsste ich in der /etc/adduser_fuer_app1.conf die Zeilen aktivieren EXTRA_GROUPS=gruppe1 und ADD_EXTRA_GROUPS=1
- analog dazu für die app2, müsste ich die /etc/adduser_fuer_app2.conf bearbeiten, und reinschreiben EXTRA_GROUPS=andregruppe, und so weiter und so fort....
- und als finalen Schritt beim Aufruf aus der jeweiligen Applikation folgende Option adduser ...blabla... --conf /etc/adduser_fuer_appx.conf

Nur so würde dann der erstellte User auch in dem Listing von /etc/group auftauchen. Kann aber umständlich aussehen wie man sieht, und auch wenn das nur ein fiktives Beispiel ist, möchte ich gerne wissen, warum das so gemacht wurde. Was für ein Sinn steckt also dahinter?


Ich hab es auch mit dem eher unpassenden wrapper useradd versucht:

Code: Alles auswählen

useradd -g testgruppe2 -M -N -s /bin/false max2
der user (hier max2) wird wieder nicht in die Gruppe 1004 reingesetzt und dort aufgelistet.

Wieso also gibt adduser überhaupt erst die Möglichkeit durch --gid oder --ingroup eine Gruppenzugehörigkeit, bzw. Gruppenteilnahme zu erstellen, listet aber diese nicht in /etc/group richtigerweise auf? In meinen Augen ist das irgendwie unsinnig. Bitte klärt mich auf, was steckt dahinter? 8O

DANKE
Man gibt Geld aus, das man nicht hat, um damit Dinge zu kaufen, die man nicht braucht, um damit Leute zu beeindrucken, die man nicht mag.

Cae
Beiträge: 6349
Registriert: 17.07.2011 23:36:39
Wohnort: 2130706433

Re: adduser --gid --ingroup Frage

Beitrag von Cae » 10.03.2013 05:07:58

pangu hat geschrieben:Meine erste Frage: Wieso taucht er denn hier nicht auf? Nehmen wir an ich möchte wissen, welche Benutzer diese testgruppe2 beinhaltet. Ein einfaches "cat /etc/group" hilft mir hier nicht weiter.
Die primaere Gruppe eines Benutzers ist per GID in der vierten Spalte der /etc/passwd festgelegt. Sie ist die GID aller direkt vom User gestarteten Prozesse und aller direkt (z.B. kein GID-Bit auf dem darueberliegenden Verzeichnis) angelegten Dateien und Ordnern. Daher ist die primaere Gruppe "besonders" und direkt in der passwd drin. Gruppenzugehoerigkeiten in /etc/group sind dagegen typischerweise im Dateisystem relevant.

Zur zweiten Frage: Das wuerde heissen, dass in der passwd die primaere Gruppe ebenfalls auf 1004 gesetzt ist. Stimmt das?

Gruss Cae
If universal surveillance were the answer, lots of us would have moved to the former East Germany. If surveillance cameras were the answer, camera-happy London, with something like 500,000 of them at a cost of $700 million, would be the safest city on the planet.

—Bruce Schneier

Benutzeravatar
pangu
Beiträge: 1400
Registriert: 15.11.2011 20:50:52
Lizenz eigener Beiträge: GNU General Public License
Wohnort: /proc/1

Re: adduser --gid --ingroup Frage

Beitrag von pangu » 10.03.2013 10:41:13

Ja, siehe oben. Der User max1 hat ja die primäre Gruppenzuordnung zu 1004

Code: Alles auswählen

# cat /etc/passwd

[...]
testgruppe2:x:1004:max1
Und nachdem ich ihn manuell in die Gruppe 1004 hinzugefügt habe, damit er auch mit "cat /etc/groups" auftaucht, läßt mich das System ihn nicht mehr entfernen. Ich kann mir keinen Reim darauf machen.
Man gibt Geld aus, das man nicht hat, um damit Dinge zu kaufen, die man nicht braucht, um damit Leute zu beeindrucken, die man nicht mag.

Antworten