我设法从发送到某个电子邮件的电子邮件中提取所有附件到我的linux服务器上的公共文件夹(使用postfix-> procmail-> uudeview)。不幸的是,文件本身被保存,其权限仅限于发送文件的系统用户(称为“扫描”)。
如何在我的设置中构建“chmod 777 /path/to/folder/*.pdf”,以便文件(来自我的扫描仪)可供任何人使用?
有更好的方法吗?
此致 弗兰克
答案 0 :(得分:2)
无论您正在做什么,chmod 777
都被误导为失去您的计算机驾驶执照。 严重的安全问题使文件可以写入并可执行。
您可能正在寻找Procmail的UMASK
变量。如果权限太紧,请在投放前设置更宽松的UMASK
。例如:
:0
* some conditions
{
UMASK=003
:0
| uudeview --whatever
}
umask
系统调用只能删除权限,而不能添加权限。通常,C程序尝试使用模式0666
创建数据文件,然后应用umask
,通常会产生类似0644
的内容(意味着有效umask
就像0022
或0033
)。在Linux上,directory's permissions also somewhat influence the permissions新创建的文件。但我们在这里冒险在Procmail之外。也许您可以通过将Procmail的UMASK
工具与目录权限相结合来实现您所需的最终结果。
如果您要解压缩的“附件”不是MIME附件,而是实际uuencode
,请注意编码specifies permissions for every encoded file。如果begin
行显示644
,那么您可能需要更改它。 Procmail再次救援!
:0
* some conditions
{
UMASK=003
| sed 's/^begin [0-7][0-7][0-7][0-7]* /begin 664 /' | uudeview --whatever
}
最后,即使这样做没有帮助,也可以归结为修改uudeview
,可能是通过调整其来源,或者创建一个在写入后修复权限的包装器。