smbfsマウントされた共有内のファイルが実行可能ビットセットで作成されるのはなぜですか?


14

smbmountコマンドを使用して、samba共有をマウントしました。

$ sudo smbmount \\\\foo\\bar /mnt/bar -o user=tom

新しいファイルを作成すると、所有者、グループ、および世界の実行可能ビットが設定された状態で作成されます。例えば

$ touch hello.txt 
$ ls -la hello.txt
-rwxr-xr-x 1 root root 0 Dec  2 12:28 hello.txt

NFSマウントされた共有で作成された同じファイルは、実行可能ビットが設定されていない正しいアクセス許可を設定します。

なんでこんなことが起こっているの?どうすれば修正できますか?

回答:


10

NFSはUnixの世界で発明されたため、従来のUnixのアクセス権をそのまま使用できます。(最新のUNIXシステムのACLは別の問題ですが、NFSの最近の実装ではそれらに対処する必要があります。)

SambaはIBM / Microsoft PCの世界で発明され、読み取り専用/読み取り/書き込み以外の権限を持たないシステムとファイルを交換します。現在はWindowsにネイティブです。デフォルトでは、SambaはUnixパーミッションを送信しません。構成によっては、すべてのファイルが実行可能とマークされる(これは迷惑です)か、すべてのファイル(ディレクトリを除く)が非実行可能とマークされる(これが迷惑です)。

Samba / CIFSプロトコルには、Unixの使用により適したさまざまな拡張機能があります。サーバー構成でUnix拡張機能を有効にしてみてください。

[global]
unix extensions = yes

残念ながら、私の会社のイントラネットでは、サーバーを構成するためのアクセス権がありません。おそらく、NFSを使用してLinuxクライアントにマウントするのが最善でしょう。より大きな問題はWindowsクライアントであり、NFSの構成が苦痛です。
vivekian2

@ vivekian2実際、選択肢があれば、LinuxクライアントでNFSを使用し、WindowsクライアントでSMBを使用することをお勧めします。
ジル「SO-悪であるのをやめる」

10

これは、コピーされたファイルがSamba / CIFSで実行ビットを獲得するというタイトルの問題のようです。

抜粋

CIFSでマウントされたボリュームでrw-r -----を使用してファイルをコピーすると、コピーはrwxr -----を取得します。だから、実行ビットを獲得しています:

設定、ページのさらに下map archive = no/etc/samba/smb.conf

抜粋

  [Global]
  <snip>
  map archive = no
  <snip>

これにより、Windowsから保存されたファイルが実行フラグを取得する問題を確実に解決できます。ありがとう!別の狂ったデフォルト、過去20年間に誰かがアーカイブフラグを使用しましたか?:)
Rennex

4

あなたが試すかもしれません: mount -t cifs

Googleは「cifsをマウント」して使用します。理解するのは難しくありませんが、-oフラグを使用してオプションを設定する必要があります。

uid =、gid =、rw、noperm、dir_mask = 0775、file_mask = 0664

ユーザーとグループはIDです。数値の場合はテキストエイリアスではありません。これらのオプションにより、r / wアクセスが許可され、権限はサーバーのマウントによって制御され、特にfile_mask=0664ファイルが実行可能でないことが保証されます。これに加えて、ローカルディレクトリとしてsamba共有を操作できます。


サンバ1の最近のバージョンで使用する必要がありますfile_mode=0644,dir_mode=0755
Jokester

警告:CIFSマウントオプション「dmask」は非推奨です。代わりに「dir_mode」を使用してください。警告:CIFSマウントオプション 'fmask'は非推奨です。代わりに「file_mode」を使用してください。
ハビタス

4

これが発生している理由、MS-DOSおよびUnixセクションのファイル許可と属性のSamba Webサイトの次の説明からわかります。

https://www.samba.org/samba/docs/using_samba/ch08.html

これは、MS-DOSファイルシステムのシステム、非表示、およびアーカイブビットのマッピングに関係しています。

MS-DOSファイルシステムは実行可能ビットを使用しないため、UNIXファイルシステムの3つの実行可能ビットは、MS-DOSファイルシステムのシステム、非表示、およびアーカイブビットを表すために再利用されます。

したがってls -l、Unixでファイルのアクセス許可を表示すると、MS-DOS(またはWindows)に適したファイルのアクセス許可が表示されます。UNIXの3つの実行可能ビットは、MS-DOSのシステム、非表示、およびアーカイブビットを表していることに注意してください。

smb.conf、しかし、あなたと共有するために、このマッピングをオフにすることができます:

map archive = no
map system = no
map hidden = no

ファイルの作成時にモードを強制します:

force create mode = 0660

それはとても簡単であることが判明しました...説明をありがとう!
anton_rh

1

QNAP TS439を使用していますが、実行可能ファイルでこの問題が発生しました。

私は自分の/etc/fstabファイルで次のものを使用しなければならなかったが

//192.168.0.1/audio /media/audio cifs credentials=/home/cheese/.smbcredentials,uid=1000,file_mode=0664,iocharset=utf8  0  0 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.