Linux:将所有权应用于在文件夹中创build的所有文件

我的第一个问题,所以要善良…

基本上,我有一个用户组可以访问的文件夹。 这个文件夹中有一个以root身份运行的程序(通过sudo),然后将结果文件(xml文件)输出到子目录。 现在,每当命令运行它输出结果的所有权的根(因为这是谁运行它)。 但我需要创build的任何结果被自动更改为拥有该文件夹已经拥有的组。 我尝试使用setgid位,但没有运气。 有任何想法吗?

编辑:只是一些额外的信息。 程序必须以root身份运行。 我知道我可以设置一个cronjob什么的,但我正在寻找一个更优雅的解决scheme。

提前致谢

添加g+s到目标dirdctory(假设完成)

 chown :usergroup target-directory chmod g+s target-directory 

通过以上所述,在目标目录内创build的所有文件都将具有gid用户组。

如果文件是在目标目录之外创build的,然后移入目标目录,这不起作用。 在这种情况下,gid 不会改变。

 touch <some-path>/test mv <some-path>/test <target-directory> 

在上面的情况下, test gid不会改变。

寻找临时文件夹

有问题的程序很可能是在另一个位置/临时文件夹中创build文件,以防止部分读取。 如果是这种情况,将g+s到该临时文件夹将解决问题。

但是,如果程序使用诸如/tmp/var/tmp等系统文件夹作为临时文件夹,则不要执行此操作。 首先更改临时文件夹位置。

如果你可以避开拥有root用户的文件,但你的用户是不同的用户组的成员,请检查命令“sg”和“newgrp”。 通过sg运行程序将允许它仍然是root用户,但使用不同的组。