GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Kann Acl-Verhalten nicht erklären?

Das ist also die Situation:
Habe einen Server für Web-Entwickler. Es gibt viele Entwickler. Alle developers + PHP + Apache gehört zu www Gruppe. Es gibt ein Entwicklungsverzeichnis – development .

Das Ziel ist, dass jede Datei in der development Verzeichnis hat 755 Berechtigungen und wann immer ein beliebiger Entwickler eine Datei in development erstellt, ändert Verzeichnis haben die Dateien immer noch 755 .

Also ich habe eine Reihe von acl gelesen Tutorials, Anleitungen und Anleitungen, aber ich kann immer noch nicht das gewünschte Ergebnis erzielen.

  1. meine Festplatte ist mit acl gemountet
  2. Ich habe chown -R www:www development
  3. chmod g+s development hinzugefügt
  4. Ich setze eine Reihe von acl Regeln zur development Verzeichnis und habe folgendes erhalten:

    $ getfacl development
    # file: development
    # owner: www
    # group: www
    # flags: -s-
    user::rwx
    user:www:rwx
    group::rwx
    group:www:rwx
    mask::rwx
    other::r-x
    default:user::rwx
    default:user:www:rwx
    default:group::rwx
    default:group:www:rwx
    default:mask::rwx
    default:other::r-x
    
    p.s. I know its messy, was doing a number of tests
    
  5. Nach meiner Vorstellung von ACL , wenn das Verzeichnis solche Regeln hätte, sollte meine Aufgabe erfüllt sein, aber wenn ich versuche, eine Datei in development zu erstellen dir, bekomme ich:

    -rw-rw-r--+ 1 www     www      0 Nov 21 09:14 newfile
    

Ich kann anscheinend nicht verstehen, warum es rw- erstellt statt rwx .

Es ist wahrscheinlich etwas Einfaches, das ich übersehen habe, oder ein allgemeines Konzept, das ich nicht verstehe.

Akzeptierte Antwort:

Ihre Standard-ACLs ersetzen die umask, die nicht default angibt Berechtigungen, aber maximal Berechtigungen zum Erstellen neuer Dateien. In diesem Fall rwxrwxr-x .

Dann ruft Ihre Anwendung open auf oder creat mit den gewünschten Berechtigungen. Fast alle Anwendungen fragen nach rw-rw-rw- für Dateien.

Sie können dies sehen, indem Sie strace ausführen , z. B.

$ strace -e trace=file touch newfile
...
open("newfile", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3

(0666 ist dasselbe wie rw-rw-rw- .)

Die beiden Berechtigungen werden mit bitweisem UND kombiniert, um rw-rw-r-- zu ergeben .

  rwxrwxr-x     # default ACL
  rw-rw-rw-     # permission requested (e.g. by touch, vim, etc.)
& _________
  rw-rw-r--     # effective permissions

Eine weitere Erklärung finden Sie unter POSIX-Zugriffskontrolllisten – „Standard-ACL-Beispiel“.

Die eigentliche Frage ist also:Warum müssen die Dateien ausführbar sein?


Linux
  1. Dateien finden, die ein Benutzer nicht lesen kann?

  2. Kann ein Skript ausführbar, aber nicht lesbar sein?

  3. Wie mache ich eine Datei unter Linux dauerhaft schreibgeschützt, sodass selbst Root sie nicht bearbeiten kann?

  4. Kann jemand im Detail erklären, was set -m tut?

  5. Wie behebt man updatedb:Kann Gruppe `mlocate' auf Entware nicht finden?

Hervorgehobener Text in Gedit im dunklen Modus nicht sichtbar? Folgendes können Sie tun

Debian – Kann Sftp-Benutzer nicht erstellen Debian 7?

Wie kann ich überprüfen, ob eine Datei vorhanden ist, und einen Befehl ausführen, wenn dies nicht der Fall ist?

Kann read(2) Null zurückgeben, wenn es nicht bei EOF ist?

Wie kann ich per Linux-Skript prüfen, ob PostgreSQL installiert ist oder nicht?

Woher weiß ich, ob die Option set -e aktiviert ist oder nicht?