强制移动(未复制)的文件继承同一文件系统上父文件夹的权限

时间:2018-08-27 22:19:52

标签: python bash permissions chmod

我希望在同一文件系统中从共享目录(“源”)到处理目录中的mv个非常大的视频文件(高达TB的10s GB),以及成批的视频文件。 (“目标”)并最终存储。这些文件来自我们网络上的各种来源,但通常由执行任务的用户(www-data)对该文件没有自动的写权限。

源目录和目标目录都在RAID上,我正在运行Ubuntu 16.04,将来可能会在Mac上运行。

我有(在Ubuntu上):

  • 设置源目录和目标目录的ACL,以使 new 文件获得777权限并将所有者/组设置为www-data
  • mask设置为对创建的任何文件授予rwx
  • chown chgrp的来源和目标是www-data

我知道:

  • 我可以使用cp --no-preserve=all

  • 我可以使用rsync [...] chmod=ugo+rwx [...]

  • 每次有需要转移的物品时,我都可以sudo chmod

但是这里的重点是要避免复制这些大文件。这些脚本主要在Web应用程序之后运行(因此www-data用户)。 mv似乎没有办法在移动文件时更改文件的权限(我知道为什么您希望将其作为默认行为),但是我是否应该探索其他方法?

该Web应用程序位于python中(使用Flask),有没有我可能看不到的Python方法(os.chmod()被拒绝权限)?

谢谢!

编辑: 这是源目录上的getfacl

# file: raid_share/
# owner: root
# group: www-data
# flags: ss-
user::rwx
group::rwx
mask::rwx
other::rwx
default:user::rwx
default:user:myuser:rwx
default:group::rwx
default:group:www-data:rwx
default:mask::rwx
default:other::rwx

getfacl上是SFTP发送的目录(用户将文件发布到服务器的一种合理方式)到服务器的源目录:

# file: test_05034/
# owner: myuser
# group: www-data
# flags: -s-
user::rwx
user:myuser:rwx         #effective:r-x
group::rwx          #effective:r-x
group:www-data:rwx      #effective:r-x
mask::r-x
other::r-x
default:user::rwx
default:user:myuser:rwx
default:group::rwx
default:group:www-data:rwx
default:mask::rwx
default:other::rwx

然后在该目录中的文件上getfacl

# file: test_05034_r1.mov
# owner: myuser
# group: www-data
user::rw-
user:myuser:rwx         #effective:rw-
group::rwx          #effective:rw-
group:www-data:rwx      #effective:rw-
mask::rw-
other::rw-

我的大脑快要融化了...

1 个答案:

答案 0 :(得分:0)

如果我正确地理解了您的问题和详细信息,那么您似乎真的希望在将其直接移至目的地时确保它们具有WRITE访问权限。

假设这是正确的,而不仅仅是移动文件,那么移动和设置可写该怎么办?喜欢:

$ chmod 664 "$file"
$ mv "$file" new folder/.