嗯,我有以下场景:
- 在我的公司有一个 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
。