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

时间:2019-04-26 17:57:16

标签: linux chown

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

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

在这种情况下,我不能执行此操作,因为用户A(不是root)拥有一个脚本,该脚本将对用户B拥有的此存放文件进行chmod,并且您只能chmod您拥有的文件。

代替这个(在脚本内):

chmod 777 /folder/file.txt

我尝试过:

sudo chmod 777 /folder/file.txt

但是要求输入密码和BAM!

您对此有什么想法吗?

我想念什么吗?

3 个答案:

答案 0 :(得分:0)

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

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

您可以粘贴目录的用户ID,但这在组织中几乎总是错误的事情,因为它只会使该人离开并且目录溢出。

答案 1 :(得分:0)

我不确定您要实现什么目标,因此有一些建议:

  • 如果目标只是为了使文件具有特定的权限设置,而所有权更改是次要的,则可以在源计算机上正确设置权限,然后使用保留权限的传输方法(scp -p或一些这样的

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

  • 如果必须更改所有权,则可以将文件传输到B,确保A具有读取权限(请参见上文),然后让A使用cp命令将文件复制到A自己的目录中。该副本将由A拥有,因此A可以更改副本的权限。之后,如果有问题,请运行一些常规过程清理B的目录以节省空间

  • 或者,您可以让源计算机上的B登录到接收计算机上的A帐户,然后该文件最终归A拥有。如果不想给B密码A,则可以使用ssh证书进行。但这当然还有其他安全隐患,因此上述cp方法更安全

  • 最后,在UNIX上,使文件可写为“其他”(通常甚至不能写为“组”)通常不是一个好主意,因此775或755权限设置更为安全和可取。否则,同一台计算机上的任何人都可以修改该文件或将其设置为空文件。即使在私人计算机上,这也是一个好习惯,因为这些文件中的一个迟早会被复制到多用户系统中,没有人会记得检查权限

希望其中一些提示有用。

答案 2 :(得分:0)

chown owner:group directory -R

示例:

chown root:root sysadmin -R

尝试一下。