Festlegen des „x“-Bits (ausführbare Datei) mithilfe der ACL

Festlegen des „x“-Bits (ausführbare Datei) mithilfe der ACL

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 rwxin 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

  1. 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 an creat()usw.].

Da die Berechtigungsbitmaske den Gruppenberechtigungsbits entspricht, ist sie hier betroffen.

Wenn keine Standard-ACL vorhanden ist, umaskwird 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 openbeim Erstellen der Datei übergibt, sei es durch Ausschließen von Ausführungsberechtigungen mit dem Modus 0666oder 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.

verwandte Informationen