mkdir Gruppe mitgeben oder Default-Gruppe ändern?

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
cardillac
Beiträge: 24
Registriert: 08.07.2007 16:09:04

mkdir Gruppe mitgeben oder Default-Gruppe ändern?

Beitrag von cardillac » 09.07.2007 19:26:04

Hallo,

Wie kann man beim Anlegen von Verzeichnissen mit mkdir gleich die Gruppe mitgeben, bzw. wie verstellt man die default gruppe staff auf z.B. smbusers o.ä.? so in etwa wie mit -m 0770 für die Rechte.

Lege ich als root Verzeichnisse an, gehören Sie grundsätzlich der Gruppe staff an, obwohl root kein Mitglied davon ist.

Ich will vermeiden jedes Verzeichnis dreimal (mkdir, chown, chgrp) anzufassen, wenn's geht. Faulheit siecht.. :wink:

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 09.07.2007 21:08:47

du kannst dir ja eine Shell-Funktion schreiben und in dein Profile einfügen, dafür darfst du aber nicht allzu faul sein :wink:

Code: Alles auswählen

gms1 ~ # mkownerdir() { local owner=$1; local group=$2; shift 2; mkdir ${@+"$@"};  chown "$owner:$group" ${@+"$@"}; }
gms1 ~ # mkownerdir gms audio "/tmp/test dir"
gms1 ~ # ls -ld /tmp/test*
drwxr-xr-x 2 gms audio 4096  9. Jul 21:06 /tmp/test dir
Gruß
gms

Benutzeravatar
KBDCALLS
Moderator
Beiträge: 22456
Registriert: 24.12.2003 21:26:55
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dortmund
Kontaktdaten:

Re: mkdir Gruppe mitgeben oder Default-Gruppe ändern?

Beitrag von KBDCALLS » 09.07.2007 22:41:13

cardillac hat geschrieben:Hallo,

Lege ich als root Verzeichnisse an, gehören Sie grundsätzlich der Gruppe staff an, obwohl root kein Mitglied davon ist.
Das liegt aber an den Rechten des Ordners indem du dich aufhälst. Das passiert dann wenn das GroupID Bit gesetzt ist.

Leg mal im Root Verzeichnis einen Ordner .

Code: Alles auswählen

mkdir test
Verpasse im als Owner:Gruppe mal

Code: Alles auswählen

chown root:users test
Und dann die Rechte

Code: Alles auswählen

chmod 2755 test
Wechsle in das Verzeichnis test.

Und lege da einen Ordner Test1 an.

Der gehört dann root:users

Nachprüfen kannst du das ganze mit ls -la

Und hier noch ein weitergehender Link.

HowTo -- chmod / chown / umask: Dateizugriffsrechte

Und alles im Heimatverzeichnis von root
Was haben Windows und ein Uboot gemeinsam?
Kaum macht man ein Fenster auf, gehen die Probleme los.

EDV ist die Abkürzung für: Ende der Vernunft

Bevor du einen Beitrag postest:
  • Kennst du unsere Verhaltensregeln
  • Lange Codezeilen/Logs gehören nach NoPaste, in Deinen Beitrag dann der passende Link dazu.

cardillac
Beiträge: 24
Registriert: 08.07.2007 16:09:04

Beitrag von cardillac » 11.07.2007 18:39:01

@gms
danke für deinen Scriptvorschlag! Ich bin tatsächlich alles andere als faul, nur vereinfachen der Arbeit wo geht ist mein Ziel.

Die Funktion hat sofort gemacht, was sie soll, genial. Ich mache viel PHP/MySql, mit Shellscripten/Perl bin ich eher gelegentlich zu gange.
Zum Verstehen deiner Funktion hab ich mir mal Kommentare dahinter geschrieben, könntest Du evtl die ${@+"$@"}-Syntax kurz kommentieren? Das krieg ich nicht auseinander..Danke!

mkownerdir() {
local owner=$1; // param 1
local group=$2; // param 2
shift 2; // alles was an ditter Stelle kommt -> param 3?
mkdir ${@+"$@"}; // rekursiv falls Pfad?
chown "$owner:$group" ${@+"$@"}; // rekursiv falls Pfad?
}

@KBDCALLS
auch Dir danke für die Ausführungen!
Habe ich nachvollziehen können. Ja, bei /home ist das GroupID Bit gesetzt.

Könnte man bedenkenlos das gesamte /home Verzeichnis der Gruppe smbuser zuweisen? Darin sind die homes der Nutzer des Sambas? Und ich müsste nur noch chown userxyz machen.

Das Minitut ist klasse, danke. Man denkt ja, man hat's bereits verstanden, aber bei jeder Abhandlung kommt nochmal was Neues dazu. Aber er geht nicht auf die 1. Stelle bei chmod 2755 z.B. ein. Werde ich sicherlich selbst finden. Ich wende chmod immer vierstellig an, ohne zuwissen was die erste bedeutet. Ich glaub, da bin ich nicht der Einzige?!

Gruß
c.

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 11.07.2007 22:00:46

cardillac hat geschrieben: Zum Verstehen deiner Funktion hab ich mir mal Kommentare dahinter geschrieben, könntest Du evtl die ${@+"$@"}-Syntax kurz kommentieren?
Mit dem Konstrukt "$@" können Argumente auch korrekt weitergegeben werden, daher wirst die dieses Konstrukt eventuell geläufig sein.
In manchen Bourne Shells liefert dieses Konstrukt aber, bei einer leeren Argumentliste, fälschlicherweise ein leeres Argument zurück. Dies kann durch ${@+"$@"} vermieden werden, welches bei einer leeren Argumentliste richtigerweise auch nichts zurückliefert.
In Worten bedeutet das, wenn $@ ( der erste Ausdruck) definiert ist ( einen Wert enthält ) dann liefere "$@" zurück, ansonsten nichts.

Gruß
gms

cardillac
Beiträge: 24
Registriert: 08.07.2007 16:09:04

Beitrag von cardillac » 13.07.2007 13:18:55

ok, danke!

Code: Alles auswählen

${@+"$@"};
bedeutet also sinngemäss (php)

Code: Alles auswählen

$@ = ($@)?$@:NULL;

Antworten