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 outside
und inside
Dateien haben unterschiedliche Berechtigungen. Insbesondere hat die outside
Datei -rw-r--r--
die Standardeinstellung für diesen Benutzer und die inside
Datei unter -rw-rw----
Berücksichtigung der Standard-ACLs, die ich dem storage
Verzeichnis 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 getfacl
zeigt auch die Standard-ACLs an, selbst wenn sie nicht verwendet werden, -d
wie dies bei FreeBSD nicht der Fall ist, aber ich denke nicht, dass die tatsächlichen ACLs für storage
unterschiedlich sind.)
Hier haben die outside
und inside
-Dateien auch unterschiedliche Berechtigungen, aber die inside
Datei verfügt nicht über die Gruppenschreibberechtigung, die die Debian-Version besitzt, wahrscheinlich weil die Maske in Debian die beibehalten hat, w
während die Maske in FreeBSD die verloren hat w
.
Warum hat FreeBSD die w
Maske verloren, aber Debian hat sie behalten?
g+s
) verwenden?
getfacl
Informationen anzuzeigen .
storage
, ls
sollte dies zeigen+
, würde ich erwarten, dass die getfacl
Ausgabe ähnlich ist wie auf dem Debian-System. Hat der setfacl
Erfolgs-Exit-Code zurückgegeben?
getfacl storage
zeigt sich auf beiden Systemen?