Ich kann der erstellten Datei kein X-Bit zuweisen.
archemar@foobar:~/D> echo echo hello world > v.sh
archemar@foobar:~/D> ls -l v.sh
-rw-rw-r--+ 1 archemar group1 17 Apr 12 08:12 v.sh
kein x-bit, schauen wir uns acl an
archemar@foobar:~/D> getfacl v.sh
# file: v.sh
# owner: archemar
# group: group1
user::rw-
group::rwx #effective:rw-
group:group1:rwx #effective:rw-
mask::rw-
other::r--
Gruppe1 ist rwx
in ACL!!
Schauen wir uns die ACL für das lokale Verzeichnis an
archemar@foobar:~/D> getfacl .
# file: .
# owner: FTP_D_adm
# group: admin
user::rwx
group::rwx
group:group2:rwx
group:admin:rwx
group:group1:rwx
mask::rwx
other::r-x
default:user::rwx
default:group::rwx
default:group:group1:rwx
default:mask::rwx
default:other::r-x
Ich gehöre zur Gruppe1:
archemar@foobar:~/D> id
uid=1001(archemar) gid=1001(group1) groups=1001(group1),16(dialout),33(video)
Versuchen wir auszuführen
archemar@foobar:~/D> ./v.sh
-bash: ./v.sh: Permission denied
Das Setzen von g+x ist trivial, aber die eigentliche Datei kommt per FTP. Gibt es eine Möglichkeit, Bit x zu setzen?
Das Betriebssystem ist Suse 11.4, das Verzeichnis ist NFS 3 gemountet, die ACL ist auf dem Dateisystem festgelegt.
Antwort1
Ich glaube nicht, dass Sie ACLs verwenden können, umSatzein Berechtigungsbit.
Verwendung derLinux ACL-Manpageals Referenz wird die Standard-ACL in die Berechtigungen der Datei kopiert, aber
- Die den Dateiberechtigungsbits entsprechenden Zugriffs-ACL-Einträge werden so geändert, dass sie keine Berechtigungen enthalten, die nicht in den durch den Modusparameter angegebenen Berechtigungen enthalten sind.
open()
[ gegeben ancreat()
usw.].
Da die Berechtigungsbitmaske den Gruppenberechtigungsbits entspricht, ist sie hier betroffen.
Wenn keine Standard-ACL vorhanden ist, umask
wird stattdessen diese verwendet, aber die gleiche Maskierung wird trotzdem durchgeführt.
Dies entspricht natürlich der üblichen Vorgehensweise, dass ein Programm die Berechtigungen auf diejenigen beschränken kann, die es open
beim Erstellen der Datei übergibt, sei es durch Ausschließen von Ausführungsberechtigungen mit dem Modus 0666
oder durch Ausschließen anderer Benutzer vom Zugriff auf die Datei mit dem Modus 0600
.
Antwort2
Dies wurde am Rande in diesen beiden Fragen beantwortet:
Welchen Einfluss hat umask auf ACLs?
https://superuser.com/questions/180545/setting-differing-acls-on-directories-and-files
Die relevanten Teile stammen im Allgemeinen von man setfacl
:
Das Feld „perms“ ist eine Kombination von Zeichen, die die Berechtigungen angeben: Lesen (r), Schreiben (w), Ausführen (x),nur ausführen, wenn die Datei ein Verzeichnis ist oder bereits über die Ausführungsberechtigung für einen Benutzer (X) verfügt. Alternativ kann das Perms-Feld eine Oktalziffer (0-7) sein.
(Hervorhebung von mir)
Der relevante Abschnitt aus der ersten Frage in der Antwort von@slm♦ist das Folgende:
Zusammenfassen
Dateien erhalten keine Ausführungsberechtigung (maskierend oder effektiv). Es spielt keine Rolle, welche Methode wir verwenden: ACL, Umask oder Maske & ACL.
Verzeichnisse können Ausführungsberechtigungen erhalten, dies hängt jedoch davon ab, wie das Maskierungsfeld festgelegt ist.
Die einzige Möglichkeit, Ausführungsberechtigungen für eine Datei festzulegen, die über ACL-Berechtigungen verfügt, besteht darin, sie manuell mit chmod festzulegen.
Das bedeutet im Grunde, dass Sie mit ACL scheinbar nicht tun können, was Sie möchten, da nur sehr wenige Programme tatsächlich explizit angeben, dass sie eine ausführbare Datei erstellen möchten.