我将大部分文件保存在 Ubuntu 14.04 的 Samba 共享中,并从 Windows 7 客户端计算机访问它们。我使用 Ubuntu 11.10 时一切正常,但在移至 14.04 时不知何故出现了问题。服务器内有一个额外的间接层,通过 greyhole(通过 Samba 的 jbod 存储池),但它只是 Samba 的一个插件,不会更改权限。
问题:
- W7 客户端将 EXE 保存到 Samba 共享。
- 从服务器上的命令行看来权限是正确的
- 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 ../
因此我总是得到所有者=root,组=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 手动设置执行位并修复现有文件。任何关于去哪里检查的建议都会很有帮助。
答案1
在[global]
您的部分中/etc/samba/smb.conf
添加以下行:
[全球的] 仅限用户共享所有者 = false unix 扩展 = 无 跟随符号链接 = 是 宽链接 = 是 ntlm 身份验证 = 否 lanman 身份验证 = 否 客户端 ntlmv2 身份验证 = 是
另外,检查 NTFS 分区在文件中的安装方式/etc/fstab
。我必须将其添加default 0 0
到 NTFS 安装的末尾,这样它就会打开所有权限,使文件可以访问。我举了一个安装示例。
UUID=0A485DBF485DAA69 /media/500GB ntfs 默认 0 0 UUID=6AAA4323AA42EB61 /media/SGUSB ntfs 默认 0 0
希望这有帮助。
编辑: 我完全忘记了这个还处于打开状态,我错过了一些东西。事实证明,这是一个错误,可以通过以下几行来修复:
解决方法: – /etc/samba/local.conf [全球的] acl 允许始终执行 = True --
信息可以在错误报告中找到这里。