如何防止用户使用linux权限更改文件

如何防止用户使用linux权限更改文件

使用Linux权限方案是否可以允许用户创建文件但以后不能编辑或删除它们?我的意思是,我们有一个交付文件夹,用户将工件放在那里,我们不希望这些工件在交付后被修改,即编辑或删除。

答案1

你不能这样做:如果用户可以创建文件,这些文件将归他所有,并且他将能够修改和删除它们。

我打算提出一个简单的方案,有一个暂存目录(用户可以在其中执行他想要的操作)和一个传入目录(用户无法访问),并使用一个小型特权程序将文件从暂存目录移动到传入目录目录。但正确执行实际上很棘手:除其他事项外,您需要注意特权程序不会移动其他目录中的文件(注意竞争条件、符号链接../),不会覆盖现有文件(rename(3)是原子的,但可以删除目标),不会让用户保持文件描述符打开并在移动后修改文件(因此您最好复制而不是移动)。相反,我建议采用现有的、强大的解决方案:

  • 让用户通过 HTTP 上传文件。
  • 让用户承诺使用版本控制系统。他也将能够提交新版本。

答案2

使用Linux权限方案是否可以允许用户创建文件但以后不能编辑或删除它们?

但是您还有@Fredrik 在对您的问题的评论中建议的其他选择。看这里。

答案3

从理论上讲,这是一种可行的方法。即使是开发一个概念验证,对我来说也需要付出太多的努力;您可能会出于同样的原因拒绝它。而且,严格来说,这并不是“使用 Linux 权限方案”。

  • 获取开源文件服务器。
  • 修改它以强制执行您想要的规则(即,用户可以在他们具有写访问权限的目录中创建文件,并且可以在创建文件后立即写入文件,但是此后,除了 root 之外,没有人可以打开文件进行写入或取消链接它)。
  • 设置运行修改后的服务器软件的服务器主机。理论上它可能是您的本地主机;只需确保它正在工作的目录不可公开访问。
  • NFS 挂载您的文件/mnt/delivery并告诉您的用户将他们的文件放在那里。

答案4

简单的答案是按照您选择的给定时间间隔(例如每 15 分钟)运行一个脚本,将“upload”目录中所有文件的所有权重新分配给预定的“admin”用户,并将权限设置为“644”。这将允许所有用户对上传目录中的所有文件(包括他们自己上传的文件)进行只读访问。当然,您可以在第一次运行后优化脚本,以仅搜索上次运行脚本后(例如最近 17 分钟)创建日期的文件。

相关内容