创建文件时更改所属用户和组

创建文件时更改所属用户和组

我有一个问题,我想将一个非常旧的系统 (UNIX) 连接到一台新机器。这台旧机器scp使用硬编码用户登录oldsystemaccess,并将文件复制到新服务器 webroot 的子目录中/var/www/newserver/test/import。新机器正在运行 Ubuntu 18 LAMP 堆栈,没有对 apache 进行高级配置,就像www-data在同一组中一样运行。

在新服务器上,我将此用户添加oldsystemaccesswww-data组中sudo usermod -aG www-data oldsystemaccess,并将目录的权限更改为rwxrwxr-xwith sudo chmod 775 /var/www/newserver/test/import。进行此更改后,文件已成功复制到新系统。

现在,我正在尝试解决的实际问题是:当文件归oldsystemaccess我的 PHP 脚本所有时,无法正确读取或处理文件,并且因为我无法更改从旧服务器复制文件的方式,也无法在文件被复制时运行其他命令。我正在寻找一种方法来将目录中创建的文件更改importwww-data创建时由用户和组拥有。

现在我添加了一个每分钟crontab运行的条目chown -R www-data:www-data /var/www/newserver/test/import,但我觉得这是一个非常糟糕的解决方案。我正在寻找类似umask但文件所有权的东西。

答案1

在某些系统上(比如 FreeBSD,如果你相信维基百科),setuid目录上的位将具有我想要的行为(关联)。但由于它不是我正在运行的 Ubuntu 上的默认行为,我发现我遇到的问题的解决方案如下:

使用设置该setgidchmod,以便新文件归该组所有www-data

sudo chmod 2775 /var/www/newserver/test/import

显然,复制文件的脚本有一个umaskof007集,这导致使用权限创建文件rwxrwx---,但在提出问题时我忽略了这一点。

如果您需要在目录内的文件上设置写权限位,则可以设置 ACL 以自动使文件可由拥有它们的组写入:

sudo setfacl -d -m group:www-data:rwx /var/www/newserver/import

相关内容