web-dev-qa-db-ja.com

Windows 7クライアントで動作するSamba共有で実行ビットを取得できない

ほとんどのファイルをSamba共有のUbuntu 14.04ボックスに保存し、Windows 7クライアントマシンからアクセスします。私はこれをすべてUbuntu 11.10で動作させていましたが、14.04への移行時に何らかの理由でこれを壊しました。グレイホール(Sambaを介したjbodストレージプーリング)を介してサーバー内に追加の間接層がありますが、これはSambaのプラグインに過ぎず、権限は変更しません。

問題:

  1. EXEは、W7クライアントによってSamba共有に保存されます。
  2. サーバー上のコマンドラインから権限が正しく見える
  3. W7クライアントはファイルを実行できません(評判が低いため画像を投稿できません)。

「Windowsは\\ server\Software\Internet\WinApps\Multimedia\SetupProg.exeにアクセスできません。\\ server\Software\Internet\WinApps\Multimedia\SetupProg.exeにアクセスする権限がありません。」

Windowsは、EXEで次のアクセス許可を確認します。

Everyone: Read
root (Unix User\root): Read & Execute, Read, Write, Special
sambashare (Unix Group\sambashare): Read, Write

私は、グループ「sambashare」を、Samba共有を介してアクセスするすべてのユーザーの共通グループとして使用します。ここに見られるように粘着性があるビットを設定します:

drwsrwsr-x 31 root     sambashare 12288 Apr 25 20:11 ../

したがって、私は一貫してowner = root、group = sambashareを取得します。問題ありません。

サーバー側から見ると:

$ ls -l /mnt/lsi11/shares/Software/Internet/WinApps/Multimedia
lrwxrwxrwx  1 root sambashare    69 Apr 25 16:14 SetupProg.exe -> /mnt/lsi4/gh/Software/Internet/WinApps/Multimedia/SetupProg.exe

$ ls -l /mnt/lsi4/gh/Software/Internet/WinApps/Multimedia
-rwxrw-r--  1 root sambashare 11800240 Apr 25 15:23 SetupProg.exe

グループ実行ビットが設定されていません。

私が持っている共有のsmb.confを見る(@Terranceのアイテムを含む):

[Global]
   wide links = yes
   unix extensions = no
   workgroup = WORKGROUP
   server string = %h server (Samba, Ubuntu)
   wins support = yes
   dns proxy = no
   name resolve order = lmhosts Host wins bcast
   log file = /var/log/samba/log.%m
   max log size = 5000
   syslog = 0
   panic action = /usr/share/samba/panic-action %d
   security = user
   encrypt passwords = true
   server role = standalone server
   passdb backend = tdbsam
   obey pam restrictions = no
   unix password sync = yes
   passwd program = /usr/bin/passwd %u
   passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
   pam password change = yes
   map to guest = bad user
   printing = bsd
   printcap name = /dev/null
   usershare allow guests = yes

   follow symlinks = yes
   ntlm auth = no
   lanman auth = no
   client ntlmv2 auth = yes
   usershare owner only = no

[Software]
   comment = Software files
   browsable = yes
   path = /mnt/lsi11/shares/Software
   read only = no
   valid users = user1 user2
   guest ok = no
   inherit owner = yes
   inherit permissions = yes
   dfree command = /usr/bin/greyhole-dfree
   vfs objects = greyhole

Linuxから実行ビットを手動で設定し、既存のファイルを修正できます。どこに突っ込むか提案があれば役に立つでしょう。

4
Matthew Zaleski

[global]/etc/samba/smb.confセクションに、次の行を追加します。

[global] 
 
 usershare owner only = false 
 unix extensions = no 
 follow symlinks = yes 
 wide links = yes 
 
 ntlm auth = no 
 lanman auth = no 
 client ntlmv2 auth = yes 

また、/etc/fstabファイルでNTFSパーティションがマウントされる方法を確認します。 NTFSマウントの最後にdefault 0 0を追加する必要がありました。これにより、ファイルにアクセスできるすべてのアクセス許可が開かれました。私のマウントの例を示します。

UUID = 0A485DBF485DAA69/media/500GB ntfs default 0 0 
 UUID = 6AAA4323AA42EB61/media/SGUSB ntfs default 0 0

これがお役に立てば幸いです。

EDIT:これがまだ開いていたことを完全に忘れてしまい、何かを見逃しました。結局のところ、これはバグであり、次の行で修正できます。

回避策:
 
-/etc/samba/local.conf
[global]
 acl allow execute always = True 
-

情報はバグレポートにあります here

5
Terrance