Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux Samba、CIFS和删除文件_Linux_Samba_Cifs - Fatal编程技术网

Linux Samba、CIFS和删除文件

Linux Samba、CIFS和删除文件,linux,samba,cifs,Linux,Samba,Cifs,因此,我在服务器a上有一个Samba共享。我将该共享装载到另外两个服务器B和C上。其思想是B和C需要将临时文件写入单个位置,以便多个后台处理作业(也在B和C上运行)可以访问同一个文件池 后台处理完成后,他们会删除正在处理的文件。当我在删除文件后列出共享的目录时,原始文件名现在是cifs79、cifs78等。它们占用的空间与原始文件相同,因此我假设它们是原始文件,只是重命名了 问题是这些文件不会消失,除非我重新启动samba(我不打算这样做)。我是否缺少一个可以立即删除文件的简单配置参数 我使用以

因此,我在服务器a上有一个Samba共享。我将该共享装载到另外两个服务器B和C上。其思想是B和C需要将临时文件写入单个位置,以便多个后台处理作业(也在B和C上运行)可以访问同一个文件池

后台处理完成后,他们会删除正在处理的文件。当我在删除文件后列出共享的目录时,原始文件名现在是
cifs79
cifs78
等。它们占用的空间与原始文件相同,因此我假设它们是原始文件,只是重命名了

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

我使用以下命令创建了我的共享:

mount -t cifs //10.251.251.251/uploads ./uploads -o username=samba_user,noexec
文件以
-rw------
的形式进入共享,并在更改名称后保持这种方式

下面是完整的
smb.conf
文件:以及运行
smbstatus
的结果:


更多信息:

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


谢谢你的帮助

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

R/W列确实表示RDONLY,但在我的配置中,我的read only=no

这并不意味着不允许客户端打开(文件“r”),即以只读方式打开文件,即使允许客户端写入文件

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

这与NFS实现 fd=打开/创建临时文件 删除文件 使用临时文件(因为您尚未关闭它) 闭合fd


你得到了.nfs。。。目录中的文件。

基本上我认为这是权限问题,配置文件似乎没问题。 您是否尝试过查看/var/log/samba/*日志

关于smb.conf文件:

[global]
force create mode = 0644
force directory mode = 0744 
0744不是“强制目录模式”的通用模式,可能是一种输入错误,通常如果您向文件夹授予读取权限,并且希望将执行位设为flag,则使用755、750或700。此选项使所有文件夹至少设置了这些位。“强制创建模式”很好

[uploads]
create mask = 0655
directory mask = 755
由于您使用noexec挂载它,我猜“创建掩码”的正确值应该是666或644,“目录掩码”的正确值应该是755

我将ssh连接到服务器,并运行类似以下内容:

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/

这属于serverfault,我已投票将其移到那里,但请检查smbstatus。我敢打赌,您的程序无法关闭该文件。以下是smbstatus的输出:R/W列确实显示RDONLY,但在我的配置中,我有
readonly=no
,并且正在连接(转换)的用户拥有samba服务器上的共享目录。。。