如何自动更改目录中每个文件的所有权

How to automatically change the ownership of every files in a directory

有一个外部服务器将一些文件存放在我计算机的文件夹中。 我需要自动更改在该文件夹中创建的每个文件的用户所有权。

我看到很多回答说我可以通过 setfacl 更改 GROUP 所有权(根据我的研究,不可能通过 setfacl 更改 USER 所有权)。

在这种情况下,我不能,因为用户 A(不是 root)拥有的脚本将要 chmod 用户 B 拥有的这个存放的文件,而你只能 chmod 一个文件,你拥有。

而不是这个(在脚本中):

chmod 777 /folder/file.txt

我试过这个:

sudo chmod 777 /folder/file.txt

但是要求输入密码,砰!

你对如何处理这个有什么想法吗?

我是不是漏掉了什么?

一种方法可能是在父目录上使用组粘滞位。这确保在创建文件时,文件被赋予与其所在目录相同的组所有权。

在大多数情况下,这就足够了,因为您可以确保文件创建者和用户都是该组的成员,因此他们都可以访问文件。

您可以粘贴目录的用户 ID,但这在组织中几乎总是错误的做法,因为它只会让那个人离开,目录就会溢出。

我不确定你想要实现什么,所以这里有一些建议:

  • 如果目标只是让文件具有特定的权限设置,所有权更改是次要的,您可以在源计算机上正确设置权限,然后使用保留权限的传输方法( scp -p 或类似的)

  • 请注意,如果 A 拥有 的脚本,B 仍然可以 运行正确设置权限(组和其他可执行位)。当 B 运行s A 的脚本时,它 运行s 具有 B 的权限,因此更改 B 文件的权限位将起作用

  • 如果必须更改所有权,您可以将文件传输给 B,确保 A 具有读取权限(见上文),然后让 A 将文件复制到 A 自己的目录中使用 cp 命令。该副本将归 A 所有,因此 A 可以更改副本的权限。之后,运行 一些常规进程清理 B 的目录以保存 space 如果这是一个问题

  • 或者,您可以让源计算机上的 B 登录接收计算机上 A 的帐户,然后文件最终归 A 所有。如果你不想给 B A 的密码,你可以使用 ssh 证书来做到这一点。但是当然这还有其他的安全隐患,所以上面的cp方式比较安全

  • 最后,在 unix 上,让 "other" 的文件可写通常不是一个好主意,通常甚至 "group" 也不行,所以权限设置为 775 或 755更安全和更受欢迎。否则,同一台计算机上的任何人都可以修改该文件或将其设为空文件。即使在私人计算机上,这也是一种很好的做法,因为这些文件中的一个迟早会被复制到多用户系统中,没有人会记得检查权限

希望其中一些提示有用。

chown owner:group directory -R

示例:

chown root:root sysadmin -R

试试这个。