如何在 Linux 中永久设置目录的文件权限?

如何在 Linux 中永久设置目录的文件权限?

我的服务器主目录中有一个名为 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即可执行,您的脚本就可以执行。chmodweb.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

相关内容