web-dev-qa-db-ja.com

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

私は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マウントされた共有上に作成された同じファイルは、実行可能ビットを設定せずに正しい権限をセットアップします。

なぜこうなった?どうすれば修正できますか?

14
vivekian2

NFSはUnixの世界で発明されたので、箱から出してすぐに従来のUnixの権限を理解します。 (最近のUNIXシステムのACLは別の問題ですが、NFSの最近の実装はそれらに対処する必要があります。)

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

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

[global]
unix extensions = yes

これは、タイトルが付けられた問題のように聞こえます: コピーされたファイルは、Samba/CIFSで実行ビットを獲得します

抜粋

CIFSマウントされたボリュームにrw-r -----でファイルをコピーした後、コピーはrwxr -----を取得します。したがって、実行ビットが増えています。

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

抜粋

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

なぜこれは、Samba WebサイトのMS-DOSおよびUnixでのファイル権限と属性の下の次の説明から発生しているのかを見つけることができますセクション:

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

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

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

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

ただし、smb.confでは、次の共有を使用してこのマッピングをオフにすることができます。

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

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

force create mode = 0660
4
Stacey Richards

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

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

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

ユーザーとグループはIDであり、テキストエイリアスではなく数値です。これらのオプションにより、読み取り/書き込みアクセス権、アクセス許可がサーバーなしのマウント、特にfile_mask=0664は、ファイルが実行可能でないことを確認します。さらに、samba共有をローカルディレクトリとして使用できます。

4
MaKR

私は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 
1
layolayo