我们有一个 FTP,客户可以将文件放到上面。我们想运行一个脚本,每 15 分钟将文件从文件夹中清除一次。
当前权限和文件夹结构如下:
drwxr-xr-x 3 root ftpusers 4.0K Apr 12 20:45 client1
|-- drwxr-xr-x 3 client1 ftpusers 4.0K Apr 12 20:45 incoming
|-- drwxr-xr-x 3 client1 ftpusers 4.0K Apr 12 20:45 processed
drwxr-xr-x 3 root ftpusers 4.0K Apr 12 09:58 client2
|-- drwxr-xr-x 3 client2 ftpusers 4.0K Apr 12 20:45 incoming
|-- drwxr-xr-x 3 client2 ftpusers 4.0K Apr 12 20:45 processed
drwxr-xr-x 3 root ftpusers 4.0K Apr 12 07:06 client3
|-- drwxr-xr-x 3 client3 ftpusers 4.0K Apr 12 20:45 incoming
|-- drwxr-xr-x 3 client3 ftpusers 4.0K Apr 12 20:45 processed
我的第一个想法是创建一个没有密码的用户,并将其设为 ftpusers 组的一部分,然后授予 ftpusers 写访问权限,但这似乎会向不安全的客户端*帐户授予不必要的权限。此外,vsftp 禁止将 chroot jails 与对 root 以外的任何其他用户具有写访问权限的文件夹一起使用。
设置可以执行此类任务的 cron/用户的最佳做法是什么?它的工作是找到传入文件夹,将它们推送到 API,然后将它们移动到处理文件夹。它需要能够修改整个文件夹中的文件。
答案1
作为 root,当我们使用 mv 命令时,它不会改变所有权和权限。
如果您想复制文件,请使用 cp -p ,-p 将保留权限和所有权。
您可以在脚本中使用这两个命令,并将脚本放在 root 的 crontab 中。