在 Unix 中否决文件以仅允许 *.PDF

在 Unix 中否决文件以仅允许 *.PDF

嗯,我有以下场景:

  • 在我的公司有一个 Samba 共享文件夹\\10.0.0.1\pdfsonly
  • 该文件夹共享给公司中的每个人,其目的是存储 PDF 格式的扫描文档;
  • 允许人们在那里添加任何文件是(至少)不安全的,所以我们考虑禁止在那里添加不同于 *.PDF 的文件;
  • 在 Samba 上,您可以veto files仅将参数配置为将被禁止的通配符。

因此,我们的努力让我们得到以下veto files配置(为了更好的阅读,包含了一些换行符):

veto files = /*.a*/*.b*/*.c*/*.d*/*.e*/*.f*/*.g*/*.h*/*.i*/*.j*/*.k*
             /*.l*/*.m*/*.n*/*.o*/*.q*/*.r/*.s*/*.t*/*.u*/*.v*/*.w*
             /*.x*/*.y*/*.z*/*.0*/*.1*/*.2*/*.3*/*.4*/*.5*/*.6*/*.7*
             /*.8*/*.9*/*.pa*/*.pb*/*.pc*/*.pe*/*.pf*/*.pg*/*.ph*
             /*.pi*/*.pj*/*.pk*/*.pl*/*.pm*/*.pn*/*.po*/*.pp*/*.pq*
             /*.pr/*.ps*/*.pt*/*.pu*/*.pv*/*.pw*/*.px*/*.py*/*.pz*
             /*.p0*/*.p1*/*.p2*/*.p3*/*.p4*/*.p5*/*.p6*/*.p7*/*.p8*
             /*.p9*/*.pda*/*.pdb*/*.pdc*/*.pdd*/*.pde*/*.pdg*/*.pdh*
             /*.pdi*/*.pdj*/*.pdk*/*.pdl*/*.pdm*/*.pdn*/*.pdo*/*.pdp*
             /*.pdq*/*.pdr/*.pds*/*.pdt*/*.pdu*/*.pdv*/*.pdw*/*.pdx*
             /*.pdy*/*.pdz*/*.pd0*/*.pd1*/*.pd2*/*.pd3*/*.pd4*/*.pd5*
             /*.pd6*/*.pd7*/*.pd8*/*.pd9*/*.pdfa*/*.pdfb*/*.pdfc*/*.pdfd*
             /*.pdfe*/*.pdff/*.pdfg*/*.pdfh*/*.pdfi*/*.pdfj*/*.pdfk*
             /*.pdfl*/*.pdfm*/*.pdfn*/*.pdfo*/*.pdfp*/*.pdfq*/*.pdfr
             /*.pdfs*/*.pdft*/*.pdfu*/*.pdfv*/*.pdfw*/*.pdfx*/*.pdfy*
             /*.pdfz*/*.pdf0*/*.pdf1*/*.pdf2*/*.pdf3*/*.pdf4*/*.pdf5*
             /*.pdf6*/*.pdf7*/*.pdf8*/*.pdf9*/*.?/*.??

总而言之,它不允许服务器接收:

  • 文件扩展名包含 1 个或 2 个字符的文件;
  • 扩展名以[az]或[0-9]开头的文件,但以p开头的除外;
  • 扩展名以 p 开头的文件,后跟 [az] 或 [0-9],但 d 除外;
  • 扩展名以 p 开头的文件,后跟 d,后跟 [az] 或 [0-9],但 f 除外;
  • 扩展名以 p 开头的文件,后跟 d、f、([az] 或 [0-9]) 和更多字符。

但我们无法阻止以下文件类型:

  • 没有扩展名的文件;
  • 文件扩展名以“特殊字符”开头,或以 p 或 pd 或 pdf 开头(不是 [az] 也不是 [0-9])。

如果我们按原样使用,可能会出现以下问题:

  • 非超级用户可以添加没有扩展名或扩展名错误的 PDF 文件,因此其他非超级用户将无法找到或打开该文件;
  • 恶意软件/脚本/人们可以存储没有扩展名或错误扩展名的文件,作为某种攻击的一部分。

所以,请帮忙!

  • 优化当前veto files配置;
  • 添加配置以禁止没有扩展名或扩展名不同于 *.pdf 的文件

答案1

首先,您说这是用于存储扫描件 - 您不能只将其设置为只读,而是为扫描仪提供具有读/写权限的用户,这样每个人都会很高兴吗?

没有扩展名的文件;

目前似乎没有记录使用 samba 文件否决选项来实现此目的的方法。有趣的是,有人请求“反向否决文件”功能,并将其列入“待办事项”列表中...11年前!

文件扩展名以“特殊字符”开头,或以 p 或 pd 或 pdf 开头(不是 [az] 也不是 [0-9])。

您可能需要通过在\特殊字符前使用 来转义这些字符。但是,您确实应该考虑告诉用户不要这样做。

可以使用 cron 和 find 语句创建一个完全独立的解决方案,类似于

find -not -name "*.pdf" /directory -delete这将删除所有不以 结尾的文件.pdf

相关内容