Ich habe mehrere Datenlaufwerke gemountet und noexec
Parameter verwendet. Ich dachte, da es nur Daten sind, würde ich sie nicht brauchen exec
. Jetzt habe ich einige Berechtigungsprobleme und würde dies gerne als Ursache ausschließen und die Option besser verstehen.
Hat exec
der Parameter in /etc/fstab
dieselbe Wirkung wie die Erteilung von Ausführungsberechtigungen für alle Verzeichnisse und Dateien im gemounteten System?
Welche Auswirkungen hat es auf ausführbare Windows-Dateien ( .exe
), auf die über Samba-Freigaben oder andere Netzwerkprotokolle zugegriffen wird?
Gemountete Laufwerke werden mit aufs
oder gepoolt mhddfs
und über einen zentralen Mount-Punkt in aufgerufen /mnt/virtual
. Der Zugriff erfolgt dann über das Netzwerk (aktuell Samba). Es wird auch lokalen Zugriff geben ( xbmc
). Ich bin nicht sicher, ob ich einen direkten Link oder einen Samba-Link zu den Dateien bereitstellen soll?
Was ist in diesem Fall die beste Vorgehensweise?
Antwort1
Durchsehen der Manpages
Wenn Sie sich die Manpage ansehen, mount.cifs
die zum Mounten aller aufgelisteten Freigaben verwendet wird, /etc/fstab
finden Sie dort einen Hinweis, der erwähnt noexec
.
Dieser Befehl darf nur von root verwendet werden, es sei denn, es ist als Setuid installiert. In diesem Fall sind die Mount-Flags noeexec und nosuid aktiviert. Wenn das Programm als Setuid-Programm installiert wird, befolgt es die Konventionen, die vom Mount-Programm für Benutzer-Mounts festgelegt wurden, mit der zusätzlichen Einschränkung, dass Benutzer vor dem Mounten in der Lage sein müssen, chdir() in den Mountpoint zu verwenden, um dort mounten zu können.
Einige Samba-Client-Tools wie smbclient(8) berücksichtigen clientseitige Konfigurationsparameter, die in smb.conf vorhanden sind. Im Gegensatz zu diesen Client-Tools ignoriert mount.cifs smb.conf vollständig.
Angesichts dessen würde ich erwarten, dass die Option exec/noexec berücksichtigt wird, wenn sie bei Mount-Versuchen enthalten ist. Ein Blick auf die mount.cifs
Verwendung zeigt außerdem, wie diese Option verwendet würde.
Less commonly used options:
credentials=<filename>,guest,perm,noperm,setuids,nosetuids,rw,ro,
sep=<char>,iocharset=<codepage>,suid,nosuid,exec,noexec,serverino,
mapchars,nomapchars,nolock,servernetbiosname=<SRV_RFC1001NAME>
directio,nounix,cifsacl,sec=<authentication mechanism>,sign,fsc
Ein Blick auf die fstab
Manpage erklärt den beabsichtigten Zweck von exec/noexec, gibt aber nicht an, ob dies für alle ausführbaren Dateien oder nur für Unix-Dateien gilt.
exec / noexec
Mit exec können Sie Binärdateien ausführen, die sich auf dieser Partition befinden, während dies mit noexec nicht möglich ist. noexec kann für eine Partition nützlich sein, die keine Binärdateien enthält, wie z. B. /var, oder die Binärdateien enthält, die Sie nicht auf Ihrem System ausführen möchten oder die auf Ihrem System nicht einmal ausgeführt werden können, wie dies beispielsweise bei einer Windows-Partition der Fall sein könnte.
Macht exec/noexec alles ausführbar?
Nein, das exec/noexec-Attribut schränkt lediglich die Zulassung von Dingen ein, die über ihre Berechtigungsbits als ausführbar gekennzeichnet sind, es wirkt sich nicht direkt auf die Berechtigungen aus.
Was ist mit den Windows-Binärdateien?
Die Einstellung „exec/noexec“ hat jedoch keine Kontrolle über ausführbare Windows-Dateien, sondern nur über ausführbare Unix-Dateien, die sich ebenfalls auf diesen Freigaben befinden können.
Außerdem bin ich mir nicht einmal sicher, wie diese ins Spiel kommen würden, wenn Sie eine CIFS/Samba-Freigabe über mounten /etc/fstab
, wann würde in diesem Szenario überhaupt ein Windows-Betriebssystem ins Spiel kommen. Windows könnte diese Freigabe direkt selbst mounten und müsste sich nicht einmal die Mühe machen, über Linux zu gehen.
Ausprobieren
Beispiel aus Unixmount.cifs
Sie können dies direkt über die Befehlszeile testen . Angenommen, wir hätten eine Datei auf der CIFS/Samba-Freigabe wie folgt:
$ cat cmd.bash
#!/bin/bash
echo "hi"
$ chmod +x cmd.bash
Jetzt mounten wir es wie folgt und versuchen, das Skript auszuführen cmd.bash
:
$ mount.cifs //server/cifsshare /path/to/cifsmnt -o user=joeuser,noexec
$ cd /path/to/cifsmnt
$ ./cmd.bash
bash: ./cmd.bash: Permission denied
Wenn wir diese Option weglassen noexec
,:
$ mount.cifs //server/cifsshare /path/to/cifsmnt -o user=joeuser
$ cd /path/to/cifsmnt
$ ./cmd.bash
hi
Von Windows
Das einzige Szenario, das ich mir hier vorstellen kann, wäre, wenn ich etwas wie Virtualbox verwenden und eine CIFS/Samba-Freigabe in einem Verzeichnis mounten würde, das dann von einer Windows-VM verwendet werden könnte.
Als ich dies ausprobiert habe, konnte ich .exe
mit diesem Mount-Setup erfolgreich Dateien ausführen.
NOTIZ:Ich habe den \\vboxsrv
Freigabemechanismus in Virtualbox verwendet, um mein Home-Verzeichnis zu mounten, das sich lokal auf meinem System befindet. /home/saml
Anschließend habe ich diesen Befehl ausgeführt und eine CIFS/Samba-Freigabe als Verzeichnis darin gemountet /home/saml
.
$ mkdir /home/saml/cifsmnt
$ mount //server/cifsshare cifsmount -o user=joeuser,noexec
Schlussfolgerungen
Das oben genannte Vorgehen würde darauf schließen lassen, dass exec/noexec keinen Einfluss auf den Zugriff von Windows auf die Dateien hat.