-1

所以我在服务器 A 上有一个 Samba 共享。我将该共享安装到另外两个服务器 B 和 C。这个想法是 B 和 C 需要将临时文件写入一个位置,以便多个后台处理作业(也在 B 和 C 上运行)可以访问相同的文件池。

当后台进程完成后,他们会删除他们正在处理的文件。当我在删除文件后对共享进行目录列表时,原始文件名现在类似于cifs79cifs78。它们占用的空间与原始文件相同,因此我假设它们原始文件,只是重命名了.

问题是这些文件不会消失,除非我重新启动 samba(我不打算这样做)。我是否缺少一个会立即删除文件的简单配置参数?

我用这个命令创建了我的共享:

mount -t cifs //10.251.251.251/uploads ./uploads -o username=samba_user,noexec

文件以原样进入共享,-rw-------并在更改名称后保持原样。

这是完整smb.conf文件: http: //gist.github.com/172474和运行结果:http smbstatus: //gist.github.com/172478


更多信息:

如果我从安装了共享的框中手动创建一个文件,我可以创建、编辑、删除没有问题。如果我启动 IRB(交互式 ruby​​)会话,我可以使用 Ruby 创建/删除文件没有问题。似乎是应用程序本身创建了具有奇怪权限的文件。虽然应用程序和我的 IRB 会话作为同一个用户运行,但他们应该有相同的权限来做任何事情。

谢谢你的帮助!

4

3 回答 3

0

Basicaly i think it is a problem of permissions, the config file seems fine. Have you tried looking at the /var/log/samba/* logs?

About your smb.conf file:

[global]
force create mode = 0644
force directory mode = 0744 

0744 isn't a common mode for "force directory mode", probably a typo, usually if you give read permissions to folders you want to give flag the execution bit too, use 755 or 750, or 700. This options makes all folders have at least those bits set. "force create mode" its fine.

[uploads]
create mask = 0655
directory mask = 755

Since you mounting it with noexec, i guess that a correct value for your "create mask" would be 666 or 644 and for "directory mask" would be 755.

I would ssh to the server and run something like this too:

find /tmp/uploads -type f -print0 | xargs -0 chmod 644
find /tmp/uploads -type d -print0 | xargs -0 chmod 755
chown "$SMBUSER:$SMBUSER_GROUP" -r /tmp/uploads/
于 2009-12-23T05:29:27.173 回答
0

您是否有权访问 samba 服务器的完整配置?我知道一个常见的习惯用法是将 samba 配置为执行其他操作,而不是从服务器删除命令上的文件以删除,以便在网络上实现“垃圾箱/回收站”样式的功能。重命名原始目录中的文件有点不寻常,但仍有可能。

于 2009-08-21T22:25:37.197 回答
0

R/W 列确实说 RDONLY 但在我的配置中我只读 = 否

这并不意味着不允许客户端使用 fopen(file, "r"),即以只读方式打开文件,即使它们被允许写入。

看起来 Samba 必须保留 B 删除的文件,因为 A 仍然对它们有 oplock。oplock 应该在不久之后过期,之后 samba 可能会删除重命名的文件。

这与 NFS 为实现 fd = open/create temp file delete file use temp file (因为你还没有关闭它) 的语义所做的非常相似 close fd

您会在目录中获得 .nfs... 文件。

于 2009-12-08T19:48:47.907 回答