Fstab exec noexecパラメータはSamba共有にどのように影響しますか

Fstab exec noexecパラメータはSamba共有にどのように影響しますか

いくつかのデータ ドライブをマウントし、noexecパラメーターを使用しました。データだけなので必要ないと考えていましたexec。現在、アクセス許可の問題が発生しており、これを原因として除外し、オプションをよりよく理解したいと思います。

execパラメータは、マウント/etc/fstabされたシステム内のすべてのディレクトリとファイルに実行権限を与えるのと同じ効果がありますか?

.exeSamba 共有またはその他のネットワーク プロトコル経由でアクセスされるWindows 実行可能ファイル ( ) にはどのような影響がありますか?

aufsマウントされたドライブは、またはでプールされmhddfs、の中央マウント ポイントを介してアクセスされます/mnt/virtual。その後、ネットワーク (現在は samba) を介してアクセスされます。ローカル アクセスもいくつかあります ( xbmc)。ファイルへの直接リンクまたは samba リンクのどちらを提供すればよいかわかりません。

この場合のベストプラクティスは何でしょうか?

答え1

manページを見る

mount.cifsにリストされている共有をマウントするために何が使用されるかのマニュアル ページを見ると、/etc/fstabについて言及している注記がありますnoexec

抜粋 - mount.cifs マニュアルページ

このコマンドは、setuid でインストールされていない限り、root のみが使用できます。setuid でインストールされている場合、noeexec および nosuid マウント フラグが有効になります。setuid プログラムとしてインストールされると、プログラムは、ユーザー マウント用のマウント プログラムによって設定された規則に従います。ただし、マウント ポイントにマウントするには、マウント前にユーザーがマウント ポイントに chdir() できなければならないという追加の制限があります。

smbclient(8) のような一部の samba クライアント ツールは、smb.conf にあるクライアント側の設定パラメータを尊重します。これらのクライアント ツールとは異なり、mount.cifs は smb.conf を完全に無視します。

これを考慮すると、マウント試行に exec/noexec オプションが含まれている場合は、そのオプションが尊重されると考えられます。さらに、mount.cifs使用方法を確認すると、そのオプションがどのように使用されるかがわかります。

抜粋 - 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

マニュアル ページを見ると、fstabexec/noexec の本来の目的は説明されていますが、それがすべての実行可能ファイル用か、Unix 用だけかは明記されていません。

fstab マニュアルページからの抜粋

実行 / 非実行

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 のファイルへのアクセスを制限しないことが示されるようです。

関連情報