保存在特定文件夹中时更改文件的所有者

保存在特定文件夹中时更改文件的所有者

我有一个 NAS,其中包含我家每个成员的目录。

我的用户名,是每个成员组的成员。所以我可以访问所有用户的文件夹。

我希望,当我将文件放入用户目录中时,该文件从父目录中获取所有权。或者获得特定的权限。

我妻子的目录是“zoe_folder”,所有权为zoe:zoe,权限为rwxrwx---。

touch file.txt当我在我妻子的目录(或子目录)中以 root 身份运行命令时,file.txt 拥有所有权 root:root 和权限 rw-r--r--。我想要所有权 zoe:zoe (或作为解决方法权限 rw-rw-rw-)。

当然,无需运行任何命令chmodchown。它是一个 NAS,客户端 PC 是 Windows。我无法每次使用控制台登录 NAS 并更改权限。

有任何想法吗?

答案1

我认为您正在寻找的是:

  1. 用一个设置gid在每个用户的目录上,以便该目录中的每个新文件都将具有相同的团体作为目录;和

  2. 将您的系统设置umask为 0002,因为它看起来是 0022。umask 删除现有的权限与默认权限不同,默认权限为 0777(目录)和 0666(文件)。使用新设置,文件的默认权限将从 0644 更改为 0664,目录的默认权限将从 0755 更改为 0775。我对您所提供的详细信息的理解是,它将适用于您的系统。

放一个设置gid在所有子目录上,使用find以下命令,确保您的起始目录位于用户目录之上,这样简单的ls就会列出它们,因为使用错误的起始目录可能会导致逆转所有已完成的操作有点痛苦

find ./ -type d -mindepth 1 -maxdepth 1 -exec chmod --preserve-root g+s '{}' \;

给定的选项执行以下操作:

-type d返回文件类型“目录”的所有内容;

-mindepth 1防止列出起始目录,使其权限不会改变;

-maxdepth 1列出第一级子目录,但不深入到它们自己的子目录;

-exec对每个通过测试的项目执行以下命令,这就是“{}”的代表;和

--preserve-root是 chmod 中的一种保护,用于防止权限更改意外应用于根目录(以及可能的整个文件系统)。

如果您不确定什么会受到影响,只需运行find不带-exec参数的命令,如下所示:

find ./ -type d -mindepth 1 -maxdepth 1,这将为您提供将传递给您与参数一起使用的任何命令的每个文件的列表-exec

可能重复

经过一番小搜索,我发现了这个问题 可能已(部分)在这里得到回答:

如何为目录中的所有文件夹/文件设置默认文件权限?

接受的答案是指有关如何设置的分步教程默认权限对于目录https://www.linuxquestions.org/questions/linux-desktop-74/applying-default-permissions-for-newly-created-files-within-a-specific-folder-605129/

请确认是否属于这种情况。

相关内容