Ich mache hierzu mal ein eigenen Beitrag auf um a) den Beitrag HDD Storage Verwaltung Strategie nicht zu überfluten und b) damit er später vielleicht als Tutorial dienen kann.
Vorab. Ich habe micht mit dem Wikieintrag beschäftigt und nach dem Muster auch alles zum Laufen bekommen. Nur das ich die 1005 durch 1000 ersetzt habe. Verstanden habe ich das ganze aber bei weitem nicht.
Also war ich weiter auf der Suche. Ich fand ein Beitrag hier im Forum Verständnisfragen zu unprivileged LXC und lxc.idmap für Schreibzugriff auf mp. Aber auch hiermit hat sich nicht alles an Fragen in meinem Kopf gelöst.
Hier mal meine bisherigen Erkenntnisse und meine offenen Fragen.
Erkenntnisse anhand des Beispiels vom Wiki:
# Teil 1
#
# uid map: from uid 0 map 1005 uids (in the ct) to the range starting 100000 (on the host), so 0..1004 (ct) → 100000..101004 (host)
# Das "u" und das "g" am anfang ist klar. User oder Group.
# 0 ist die Startid des Gastsystems von der jetzt ein Mapping zum Host passieren soll.
# 100000 ist dann die Startid auf dem Hostsystem, die die id auf dem Gast darstellt. Hier wird dann immer die ID des Gasts (0) auf die Startid des Hosts (100000) addiert.
# 1000 ist dann die ID des Gast bis wo hin das Mapping geschehen soll. Bis 1000, aber nicht inklusive. Also effektiv von 0 bis 999. Das wäre auf dem Host 100000 bis 100999
# Dieser Teil ist noch gut erklärt.
#
# Teil 2
#
# we map 1 uid starting from uid 1005 onto 1005, so 1005 → 1005
# "g" und "u" ist wieder klar.
# Die zweite Stelle, also die erste 1000, ist vermutlich wieder die Startid des Gasts.
# Die dritte Stelle dann die Start-ID auf die im Host gemappt wird???
# Die vierte Stelle gibt dann die Anzahl an IDs an, die ab der Start ID gemappt werden sollen. Bei 3 wären es dann 1000, 1001 und 1002
#
# Teil 3
#
# we map the rest of 65535 from 1006 upto 101006, so 1006..65535 → 101006..165535
#"g" und "u" ist wieder klar.
# Hier im Beispiel, weil wir nur die 1000 durchreichen, geht es bei 1001 (Gast) weiter. Darum der Start bei 1001. (zweite Stelle)
# Dann die Start ID vom Host. 101001 bei der er dann weiter geht (101001).
# Als letztes wieder die Anzahl von den Startids gesehen bis zum "Ende" des ID Bereichts. Wie ich gelesen hab müssen wir hier immer auf eine Summe von 65.535 kommen.
# Hier kann man 65535 - <Letzte benutzte ID> rechnen. In diesem Beispiel ist die letzte, und einzige, ID die 1000. Also 65535 - 1000 = 64535.
# Wenn man 3 IDs hätte, 1000, 1001, 1002 wäre es entsprechend 65.535 - 1002 = 64533
Was ich schon gar nicht verstehe ist der Inhalt von
und
In beiden Dateien habe ich folgendes eingetragen:
#Was bitte ist hier "root" Benutzer auf Gast oder Host?
#Was bitte ist hier die 1000? ID auf Gast oder auf Host?
#Die eins ist sicher wieder die "Anzahl". Bei 3 wäre es wieder entsprechend 1000, 1001 und 1002.
Drin stand schon:
Somit sehen beide Dateien jetzt wie folgt aus:
Als letztes habe ich dann auf dem Host system das Dataset per chown angepasst.
Jetzt können der root und der Benutzer mit der ID 1000 aus dem Gastsystem auf dem Bindmount schreiben.
Lege ich eine Datei mit dem Benutzer root an steht im Gast auch root:root und im Host 100000:10000.
Beim Benutzer "test" mit der ID 1000 (Gast) steht dann im Gastsystem test:test und im Host 1000:1000.
Versuche ich mit dem Benutzer "test2" mit der ID 1001 (Gast) eine Datei auf Shared anzulegen kommt eine Berechtigungsmeldung. Das passt ja auch und soll so sein.
Fragen:
1. Müssen in der
die Teile 1 und 3 überhaupt sein? Weil vor meinem Eintrag steht davon ja auch nichts in der conf. Eigentlich will ich ja nur user 1000 durchreichen. Oder muss das sein, weil ich einen versteckten default Wert überschreibe? Und irgendwo steht im hintergrund lxc.idmap = u 0 101001 65535??
2. Die beiden sub-dateien muss mir mal einer erklären.
3. Wie würde ein Beispiel aussehen wenn man auf dem Gast den Benutzer mit ID 1000 auf den den Host mit der ID 10000 mappen möchte? Vermute aber irgendwie das ist keine gute Idee. Hatte das nur als Idee falls man mal auf dem Host einen Benutzer anlegen sollte, warum auch immer, dann bekommt der auch die ID 1000 und das wäre dann blöd. Dann gehört dem ja gleich der Shared.
Oder wenn man mehrere Shared hat und mehrere Gastsysteme.
Oder kann man beim erstellen eines Benutzers irgendwie selber bestimmen welche ID der bekommt?
Vorab. Ich habe micht mit dem Wikieintrag beschäftigt und nach dem Muster auch alles zum Laufen bekommen. Nur das ich die 1005 durch 1000 ersetzt habe. Verstanden habe ich das ganze aber bei weitem nicht.
Also war ich weiter auf der Suche. Ich fand ein Beitrag hier im Forum Verständnisfragen zu unprivileged LXC und lxc.idmap für Schreibzugriff auf mp. Aber auch hiermit hat sich nicht alles an Fragen in meinem Kopf gelöst.
Hier mal meine bisherigen Erkenntnisse und meine offenen Fragen.
Erkenntnisse anhand des Beispiels vom Wiki:
Bash:
/etc/pve/lxc/<ID DES LXC>.conf
#
# uid map: from uid 0 map 1005 uids (in the ct) to the range starting 100000 (on the host), so 0..1004 (ct) → 100000..101004 (host)
# Das "u" und das "g" am anfang ist klar. User oder Group.
# 0 ist die Startid des Gastsystems von der jetzt ein Mapping zum Host passieren soll.
# 100000 ist dann die Startid auf dem Hostsystem, die die id auf dem Gast darstellt. Hier wird dann immer die ID des Gasts (0) auf die Startid des Hosts (100000) addiert.
# 1000 ist dann die ID des Gast bis wo hin das Mapping geschehen soll. Bis 1000, aber nicht inklusive. Also effektiv von 0 bis 999. Das wäre auf dem Host 100000 bis 100999
# Dieser Teil ist noch gut erklärt.
Code:
lxc.idmap = u 0 100000 1000
lxc.idmap = g 0 100000 1000
# Teil 2
#
# we map 1 uid starting from uid 1005 onto 1005, so 1005 → 1005
# "g" und "u" ist wieder klar.
# Die zweite Stelle, also die erste 1000, ist vermutlich wieder die Startid des Gasts.
# Die dritte Stelle dann die Start-ID auf die im Host gemappt wird???
# Die vierte Stelle gibt dann die Anzahl an IDs an, die ab der Start ID gemappt werden sollen. Bei 3 wären es dann 1000, 1001 und 1002
Code:
lxc.idmap = u 1000 1000 1
lxc.idmap = g 1000 1000 1
# Teil 3
#
# we map the rest of 65535 from 1006 upto 101006, so 1006..65535 → 101006..165535
#"g" und "u" ist wieder klar.
# Hier im Beispiel, weil wir nur die 1000 durchreichen, geht es bei 1001 (Gast) weiter. Darum der Start bei 1001. (zweite Stelle)
# Dann die Start ID vom Host. 101001 bei der er dann weiter geht (101001).
# Als letztes wieder die Anzahl von den Startids gesehen bis zum "Ende" des ID Bereichts. Wie ich gelesen hab müssen wir hier immer auf eine Summe von 65.535 kommen.
# Hier kann man 65535 - <Letzte benutzte ID> rechnen. In diesem Beispiel ist die letzte, und einzige, ID die 1000. Also 65535 - 1000 = 64535.
# Wenn man 3 IDs hätte, 1000, 1001, 1002 wäre es entsprechend 65.535 - 1002 = 64533
Code:
lxc.idmap = u 1001 101001 64535
lxc.idmap = g 1001 101001 64535
Was ich schon gar nicht verstehe ist der Inhalt von
Code:
/etc/subuid
Code:
/etc/subgid
Code:
root:1000:1
#Was bitte ist hier die 1000? ID auf Gast oder auf Host?
#Die eins ist sicher wieder die "Anzahl". Bei 3 wäre es wieder entsprechend 1000, 1001 und 1002.
Drin stand schon:
Code:
root:100000:65536
Somit sehen beide Dateien jetzt wie folgt aus:
Code:
root:1000:1
root:100000:65536
Als letztes habe ich dann auf dem Host system das Dataset per chown angepasst.
Code:
chown -R 1000:1000 /tank0/shared
Jetzt können der root und der Benutzer mit der ID 1000 aus dem Gastsystem auf dem Bindmount schreiben.
Lege ich eine Datei mit dem Benutzer root an steht im Gast auch root:root und im Host 100000:10000.
Beim Benutzer "test" mit der ID 1000 (Gast) steht dann im Gastsystem test:test und im Host 1000:1000.
Versuche ich mit dem Benutzer "test2" mit der ID 1001 (Gast) eine Datei auf Shared anzulegen kommt eine Berechtigungsmeldung. Das passt ja auch und soll so sein.
Fragen:
1. Müssen in der
Bash:
/etc/pve/lxc/<ID DES LXC>.conf
2. Die beiden sub-dateien muss mir mal einer erklären.
3. Wie würde ein Beispiel aussehen wenn man auf dem Gast den Benutzer mit ID 1000 auf den den Host mit der ID 10000 mappen möchte? Vermute aber irgendwie das ist keine gute Idee. Hatte das nur als Idee falls man mal auf dem Host einen Benutzer anlegen sollte, warum auch immer, dann bekommt der auch die ID 1000 und das wäre dann blöd. Dann gehört dem ja gleich der Shared.
Oder wenn man mehrere Shared hat und mehrere Gastsysteme.
Oder kann man beim erstellen eines Benutzers irgendwie selber bestimmen welche ID der bekommt?