いくつかのデータ ドライブをマウントし、noexec
パラメーターを使用しました。データだけなので必要ないと考えていましたexec
。現在、アクセス許可の問題が発生しており、これを原因として除外し、オプションをよりよく理解したいと思います。
exec
パラメータは、マウント/etc/fstab
されたシステム内のすべてのディレクトリとファイルに実行権限を与えるのと同じ効果がありますか?
.exe
Samba 共有またはその他のネットワーク プロトコル経由でアクセスされるWindows 実行可能ファイル ( ) にはどのような影響がありますか?
aufs
マウントされたドライブは、またはでプールされmhddfs
、の中央マウント ポイントを介してアクセスされます/mnt/virtual
。その後、ネットワーク (現在は samba) を介してアクセスされます。ローカル アクセスもいくつかあります ( xbmc
)。ファイルへの直接リンクまたは samba リンクのどちらを提供すればよいかわかりません。
この場合のベストプラクティスは何でしょうか?
答え1
manページを見る
mount.cifs
にリストされている共有をマウントするために何が使用されるかのマニュアル ページを見ると、/etc/fstab
について言及している注記がありますnoexec
。
このコマンドは、setuid でインストールされていない限り、root のみが使用できます。setuid でインストールされている場合、noeexec および nosuid マウント フラグが有効になります。setuid プログラムとしてインストールされると、プログラムは、ユーザー マウント用のマウント プログラムによって設定された規則に従います。ただし、マウント ポイントにマウントするには、マウント前にユーザーがマウント ポイントに chdir() できなければならないという追加の制限があります。
smbclient(8) のような一部の samba クライアント ツールは、smb.conf にあるクライアント側の設定パラメータを尊重します。これらのクライアント ツールとは異なり、mount.cifs は smb.conf を完全に無視します。
これを考慮すると、マウント試行に exec/noexec オプションが含まれている場合は、そのオプションが尊重されると考えられます。さらに、mount.cifs
使用方法を確認すると、そのオプションがどのように使用されるかがわかります。
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
マニュアル ページを見ると、fstab
exec/noexec の本来の目的は説明されていますが、それがすべての実行可能ファイル用か、Unix 用だけかは明記されていません。
実行 / 非実行
exec を使用すると、そのパーティションにあるバイナリを実行できますが、noexec ではそれができません。noexec は、/var のようにバイナリが含まれていないパーティションや、システムで実行したくないバイナリが含まれているパーティション、または Windows パーティションのようにシステムで実行することすらできないバイナリが含まれているパーティションに役立ちます。
exec/noexec はすべてを実行可能にしますか?
いいえ、exec/noexec 属性は、権限ビットを通じて実行可能としてマークされたものの許可を制御するだけであり、権限に直接影響を与えるものではありません。
Windows のバイナリはどうですか?
ただし、exec/noexec の設定では、Windows 実行可能ファイルは制御されず、これらの共有上に存在できる Unix 実行可能ファイルのみが制御されます。
また、CIFS/Samba 共有を 経由でマウントする場合、これらがどのように機能するのか/etc/fstab
、このシナリオで Windows OS がいつ登場するのかについてもわかりません。Windows は、この共有を直接マウントし、Linux を経由する必要さえありません。
テストしてみる
Unixからの例次のようにコマンドラインから直接使用してこれをテストできますmount.cifs
。次のように CIFS/Samba 共有にファイルがあると仮定します。
$ cat cmd.bash
#!/bin/bash
echo "hi"
$ chmod +x cmd.bash
次のようにマウントして、スクリプトを実行してみますcmd.bash
。
$ mount.cifs //server/cifsshare /path/to/cifsmnt -o user=joeuser,noexec
$ cd /path/to/cifsmnt
$ ./cmd.bash
bash: ./cmd.bash: Permission denied
そのオプションを省略すると、次のようになりますnoexec
。
$ mount.cifs //server/cifsshare /path/to/cifsmnt -o user=joeuser
$ cd /path/to/cifsmnt
$ ./cmd.bash
hi
Windowsから
ここで私が考えられる唯一のシナリオは、Virtualbox のようなものを使用していて、Windows VM が利用できるディレクトリ内に CIFS/Samba 共有をマウントした場合です。
.exe
これをテストしたところ、このマウント設定を通じてファイルを正常に実行できました。
注記:Virtualbox の共有メカニズムを使用して\\vboxsrv
、システム上のローカル ホーム ディレクトリをマウントしました。/home/saml
次に、このコマンドを実行して、CIFS/Samba 共有を 内のディレクトリとしてマウントしました/home/saml
。
$ mkdir /home/saml/cifsmnt
$ mount //server/cifsshare cifsmount -o user=joeuser,noexec
結論
上記の操作を行うと、exec/noexec が Windows のファイルへのアクセスを制限しないことが示されるようです。