Ich versuche, den Unterschied im Verhalten zwischen FreeBSD-ACLs und Linux-ACLs zu verstehen. Insbesondere der Vererbungsmechanismus für die Standard-ACLs.
Ich habe sowohl unter Debian 9.6 als auch unter FreeBSD 12 Folgendes verwendet:
$ cat test_acl.sh
#!/bin/sh
set -xe
mkdir storage
setfacl -d -m u::rwx,g::rwx,o::-,m::rwx storage
touch outside
cd storage
touch inside
cd ..
ls -ld outside storage storage/inside
getfacl -d storage
getfacl storage
getfacl outside
getfacl storage/inside
umask
Ich erhalte die folgende Ausgabe von Debian 9.6:
$ ./test_acl.sh
+ mkdir storage
+ setfacl -d -m u::rwx,g::rwx,o::-,m::rwx storage
+ touch outside
+ cd storage
+ touch inside
+ cd ..
+ ls -ld outside storage storage/inside
-rw-r--r-- 1 aaa aaa 0 Dec 28 11:16 outside
drwxr-xr-x+ 2 aaa aaa 4096 Dec 28 11:16 storage
-rw-rw----+ 1 aaa aaa 0 Dec 28 11:16 storage/inside
+ getfacl -d storage
# file: storage
# owner: aaa
# group: aaa
user::rwx
group::rwx
mask::rwx
other::---
+ getfacl storage
# file: storage
# owner: aaa
# group: aaa
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::rwx
default:mask::rwx
default:other::---
+ getfacl outside
# file: outside
# owner: aaa
# group: aaa
user::rw-
group::r--
other::r--
+ getfacl storage/inside
# file: storage/inside
# owner: aaa
# group: aaa
user::rw-
group::rwx #effective:rw-
mask::rw-
other::---
+ umask
0022
Beachten Sie, dass die outsideund insideDateien haben unterschiedliche Berechtigungen. Insbesondere hat die outsideDatei -rw-r--r--die Standardeinstellung für diesen Benutzer und die insideDatei unter -rw-rw----Berücksichtigung der Standard-ACLs, die ich dem storageVerzeichnis zugewiesen habe .
Die Ausgabe des gleichen Skripts unter FreeBSD 12:
$ ./test_acl.sh
+ mkdir storage
+ setfacl -d -m u::rwx,g::rwx,o::-,m::rwx storage
+ touch outside
+ cd storage
+ touch inside
+ cd ..
+ ls -ld outside storage storage/inside
-rw-r--r-- 1 aaa aaa 0 Dec 28 03:16 outside
drwxr-xr-x 2 aaa aaa 512 Dec 28 03:16 storage
-rw-r-----+ 1 aaa aaa 0 Dec 28 03:16 storage/inside
+ getfacl -d storage
# file: storage
# owner: aaa
# group: aaa
user::rwx
group::rwx
mask::rwx
other::---
+ getfacl storage
# file: storage
# owner: aaa
# group: aaa
user::rwx
group::r-x
other::r-x
+ getfacl outside
# file: outside
# owner: aaa
# group: aaa
user::rw-
group::r--
other::r--
+ getfacl storage/inside
# file: storage/inside
# owner: aaa
# group: aaa
user::rw-
group::rwx # effective: r--
mask::r--
other::---
+ umask
0022
(Hinweis: Debians getfaclzeigt auch die Standard-ACLs an, selbst wenn sie nicht verwendet werden, -dwie dies bei FreeBSD nicht der Fall ist, aber ich denke nicht, dass die tatsächlichen ACLs für storageunterschiedlich sind.)
Hier haben die outsideund inside-Dateien auch unterschiedliche Berechtigungen, aber die insideDatei verfügt nicht über die Gruppenschreibberechtigung, die die Debian-Version besitzt, wahrscheinlich weil die Maske in Debian die beibehalten hat, wwährend die Maske in FreeBSD die verloren hat w.
Warum hat FreeBSD die wMaske verloren, aber Debian hat sie behalten?
g+s) verwenden?
getfaclInformationen anzuzeigen .
storage, ls sollte dies zeigen+ , würde ich erwarten, dass die getfaclAusgabe ähnlich ist wie auf dem Debian-System. Hat der setfaclErfolgs-Exit-Code zurückgegeben?
getfacl storagezeigt sich auf beiden Systemen?