首页 > 解决方案 > 强制文件移动(未复制)继承同一文件系统上父文件夹的权限

问题描述

我希望mv在同一个文件系统中从共享目录(“源”)到处理目录(“目标”)并最终到贮存。这些文件来自我们网络上的各种来源,但通常与将执行任务的用户 ( www-data) 没有自动对文件具有写入权限。

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

我有(在 Ubuntu 上):

我知道:

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

webapp 在 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-

我的脑袋要融化了……

标签: pythonbashpermissionschmod

解决方案


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

假设这是正确的,而不仅仅是移动文件,那么 move 和 set writable 怎么样?喜欢:

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

推荐阅读