# ACLs und kopierte Dateien – Berechtigungen falsch

## l3u

Hallo :-)

Ich hantiere gerade (erstmals) mit ACLs herum. Ziel ist: auf einem NAS soll es einen Ordner geben, wo alle User einer Gruppe Lese- und Schreibrechte haben sollen, also für alle Dateien und Ordner darin automatisch Zugriffsrechte gesetzt werden.

Das sollte ja über ACLs gehen. Irgendwie.

Wenn ich jetzt einen Ordner anlege und die ACLs folgendermaßen setze:

```
$ mkdir test

$ setfacl -dm g:users:rwx test

$ setfacl -m d:g:users:rw test
```

Und dann einen Ordner erstelle, dann werden die Berechtigungen richtig gesetzt:

```
$ mkdir test/foo

$ ls -l test

drwxrwxr-x+ 2 tobias users 4,0K 14. Mai 23:08 foo
```

Auch mit einer neu angelegten Datei klappt es:

```
$ touch test/bar

$ ls -l test/bar

-rw-rw-r--+ 1 tobias users 0 14. Mai 23:09 test/bar
```

Aber wenn ich eine Datei in den Ordner kopiere, dann werden die Berechtigungen nicht gesetzt (aber ein "+" steht dahinter …):

```
$ cp /usr/src/linux/README test/

$ ls -l test/README

-rw-r--r--+ 1 tobias users 19K 14. Mai 23:09 test/README
```

Hab ich da was falsch verstanden? Bzw. was muss ich tun, damit auch kopierte Dateien die richtigen Berechtigungen bekommen?

----------

## l3u

Bzw. brauche ich überhaupt ACLs dafür? Wenn ich in einem Verzeichnis die umask auf 0002 stelle, dann haben neue Verzeichnisse auch 0775 und neue Dateien 0664 – aber kopierte genauso wie mit ACLs nicht …

----------

## py-ro

Neue Dateien, was auch auf kopien zutrifft, bekommen immer Berechtigungen die durch die umask des anlegenden Prozesses festgelegt werden, also in deinem Fall cp bzw. der Shell oder der Anwendung die zum kopieren verwendet wird. Einen Vererbungsmechanismus wie du Ihn suchst gibt es nicht.

ACL brauchst dafür in der Tat nicht.

Bye

Py

----------

## schmidicom

Vielleicht entspricht das hier ja eher dem was du suchst: http://de.wikipedia.org/wiki/Setgid#Wirkung_des_gesetzten_Bits_auf_Verzeichnisse

Damit sollte die Gruppe des übergeordneten Verzeichnisses auf alle darin erstellten Objekte vererbt werden, aber getestet habe ich das bis jetzt nur mit einer Samba Freigabe.

----------

## l3u

Okay, aber dadurch kann ich ja nur eine Gruppe erzwingen, keine Berechtigung. Ich dachte, da gibt es was wie bei einem FTP-Server … mit neu angelegten Dateien geht es ja, aber eben leider nicht mit kopierten …

----------

## py-ro

Setze einfach die "richtige" umask in der ENV der Prozesse, notfalls in profile.

----------

## l3u

Wie mach ich das? Also wie gesagt, es sollen einfach alle Dateien in einem Ordner für eine Gruppe nicht nur les- sondern auch schreibbar sein, egal, wer sie da erstellt/reinkopiert hat.

----------

## Jean-Paul

Wenn coreutils (cp, mv, ...) ohne acl-Unterstützung gebaut wurde (USE) geht cp wahrscheinlich auch nicht.

Hier ein Link http://wiki.ubuntuusers.de/ACL

Interessant dürfte sein was unter "Maske" und "Dateien ins Zielverzeichnis verschieben und kopieren" steht - das andere natürlich auch  :Smile: 

----------

## l3u

Also entweder bin ich zu doof dazu, oder es funktioniert einfach nicht.

 *Quote:*   

> Kopieren: cp Datei VERZEICHNIS 
> 
> oder durch Drag&Drop z.B. in Nautilus mit Strg -Taste gedrückt. Die ACL wird durch die Default-ACL bestimmt, da die Zieldatei neu angelegt wird. Ausnahme: Die Maske der Zieldatei entspricht dem Gruppenrecht bzw. Maske der Quelldatei.

 

Mit neuen Dateien geht es mittels einer Default-ACL:

```
$ mkdir test

$ setfacl -m d:g:users:rwx test

$ mkdir test/foo

$ touch test/bar

$ ls -l test

insgesamt 4,0K

-rw-rw-r--+ 1 tobias users    0 17. Mai 12:50 bar

drwxrwxr-x+ 2 tobias users 4,0K 17. Mai 12:50 foo
```

Aber nicht mit einer kopierten Datei (entgegen dem, was in dem Howto steht!):

```
$ cp /usr/src/linux/README ./test/

$ ls -l test

insgesamt 24K

-rw-rw-r--+ 1 tobias users    0 17. Mai 12:50 bar

drwxrwxr-x+ 2 tobias users 4,0K 17. Mai 12:50 foo

-rw-r--r--+ 1 tobias users  19K 17. Mai 12:51 README
```

Zwar wird eine ACL für die Datei angelegt, aber die Berechtigungen werden nicht vererbt …

----------

## Christian99

du solltest noch beachten, dass das was ls anzeigt (also zb -rw-rw-r-- ) nichts mit acls zu tun hat, das sind die standard unix dateirechte. wenn für eine datei eine acl vorhanden ist, hängt ls nur noch ein "+" an die unixdateirechte an. wie die acl dann aussieht musst du das extra mit "getfacl <datei>" abfragen. und acls haben (wenn vorhanden) vorrang vor unixrechten.

----------

## l3u

Okay, also da steht schon was von wegen Schreibrechten für die Gruppe users:

```
$ getfacl test/README 

# file: test/README

# owner: tobias

# group: users

user::rw-

group::r-x                      #effective:r--

group:users:rwx                 #effective:r--

mask::r--

other::r--
```

Aber löschen kann ich Datei z. B. als anderer User nicht:

```
rm: das Entfernen von „README“ ist nicht möglich: Keine Berechtigung
```

Bearbeiten geht auch nicht …

----------

## py-ro

Eine ACL gibt Dir nie mehr Rechte als die Posix Bits zulassen, deswegen sind ACLs in deinem Scenario so auch nicht wirklich nützlich oder nötig.

----------

## l3u

Na dann frage ich mal anders herum: was muss ich denn tun, um ein (per NFSv4 verteiltes) Verzeichnis zu bekommen, in dem alle User einer Gruppe Lese- und Schreibrechte auf alles haben? Sowohl auf neu angelegte Dateien, als auch auf kopierte? Man möchte doch denken, dass das geht?!

----------

## schmidicom

 *l3u wrote:*   

> Okay, also da steht schon was von wegen Schreibrechten für die Gruppe users:
> 
> ```
> $ getfacl test/README 
> 
> ...

 

Ich hatte zwar mit ACL's auch nie viel Glück aber vielleicht funktioniert es deswegen nicht weil die ACL-Gruppe die selbe ist wie die UNIX-Gruppe. Vielleicht klappt es wenn es so aussieht:

```
$ getfacl test/README 

# file: test/README

# owner: tobias

# group: users

user::rw-

group::r-x                      #effective:r--

group:aclusers:rwx                 #effective:r--

mask::r--

other::r--
```

und der User der versucht die Datei zu löschen in der ACL-Gruppe "aclusers" Mitglied ist.

----------

## Finswimmer

 *l3u wrote:*   

> Na dann frage ich mal anders herum: was muss ich denn tun, um ein (per NFSv4 verteiltes) Verzeichnis zu bekommen, in dem alle User einer Gruppe Lese- und Schreibrechte auf alles haben? Sowohl auf neu angelegte Dateien, als auch auf kopierte? Man möchte doch denken, dass das geht?!

 

Ich habe das bei Samba so gemacht, dass alle Nutzer über den gleichen lokalen Account angemeldet sind (forceUser oder sowas).

Keine Ahnung, ob sowas auch bei NFS geht.

----------

