我的服务器主目录中有一个名为 stock 的文件夹,即 /home/stock。第三方应用程序正在此文件夹中进行 ftp 数据转储。添加到这些文件夹中的文件具有权限 644 和所有权 stock.users。
我还有一个 cron 脚本,需要访问这些文件,解压缩它,然后采取进一步的操作。我的 cron 将以 web.users 身份运行。
问题是我的脚本无法访问文件,因为它的权限设置为 644。有没有办法将文件夹的权限永久设置为 664。在该文件夹上执行命令 chmod 664,只会更改当时文件夹的内容,但未来日期转储的文件仍然具有 644 的权限。
手动更改文件夹的权限也是不可行的,并且设置 cron 作业来完成这项工作似乎也不是一个好选择。
有人可以帮忙吗?
提前致谢。
答案1
从您的描述来看,cron 作业只需要读取文件,它应该能够做到这一点。问题是您尝试就地解压缩文件吗?您可以将它们解压缩到临时文件夹中吗?
为了修改 FTP 上传的新文件的权限,您需要将 FTP 守护进程的 umask 更改为 002。如何执行此操作取决于 FTP 服务器和 Linux 发行版。
答案2
使目录归web
用户所有,并使用户组可写ftp
。设置setuid
目录上的位,以便其中的所有文件都归运行 cron 作业的用户所有。
答案3
sudo chmod 664
只要您修改以允许无需密码/etc/sudoers
即可执行,您的脚本就可以执行。chmod
web.users
您可以将其添加到/etc/sudoers
web.users localhost = (root) chmod
编辑
请注意,目前缺乏安全感你有使其适应您的需求,并在执行此类操作之前确保其安全。一个建议是为您的脚本指定一个特殊用户。
答案4
您还可以在脚本中添加此 chmod 行(以 root 身份运行或(更安全)以用于 ftp 传输的用户身份运行):
#!/bin/sh
chmod -R 664 /home/stock
tar -zxvf /home/stock/file.tar.gz for instance
+ treatments