In diesem Fall überspringt der Linux-Kernel die ACL-Prüfung vollständig, da ACL_MASK überhaupt keine Bits enthält (und daher die ACL keine Berechtigungen erteilen kann). Die Operation führt dazu, dass nur die "anderen" Berechtigungsbits (die den Zugriff erlauben) geprüft werden.
Dies könnte ein Fehler sein, der 2004 beim Umschreiben der "generischen ACL-Unterstützung" (Commit 42017c2e
in tglx / history, dc4ceab7
vereinheitlicht) eingeführt wurde. Sie können es in der Funktion acl_permission_check () in sehen fs/namei.c
(beachten Sie, dass die ' mask' -Variable nicht auf ACL_MASK, sondern auf die gewünschten Zugriffsbits verweist):
statisch int acl_permission_check (struct inode * inode, int-Maske) { unsigned int mode = inode-> i_mode; if (wahrscheinlich (uid_eq (current_fsuid (), inode-> i_uid))) ... sonstiges if (IS_POSIXACL (Inode) && (Modus & S_IRWXG)) { int error = check_acl (Inode, Maske); if (Fehler! = -EAGAIN) Rückgabefehler; } ...
Als Randbemerkung gilt : Wenn Sie verwenden sh /file1
, gilt für file1 nur die Berechtigung + r, da Sie nicht vom Kernel aufgefordert werden, die Datei auszuführen sh
. Sie werden nur ausgeführt .