python - 强制文件移动(未复制)继承同一文件系统上父文件夹的权限
问题描述
我希望mv
在同一个文件系统中从共享目录(“源”)到处理目录(“目标”)并最终到贮存。这些文件来自我们网络上的各种来源,但通常与将执行任务的用户 ( www-data
) 没有自动对文件具有写入权限。
源目录和目标目录位于 RAID 上,我正在运行 Ubuntu 16.04,将来可能会在 Mac 上运行。
我有(在 Ubuntu 上):
- 为源目录和目标目录设置 ACL,以便新文件获得 777 权限并将所有者/组设置为
www-data
. - 设置
mask
授予rwx
对创建的任何文件 chown
chgrp
源和目标www-data
我知道:
我可以使用
cp --no-preserve=all
我可以使用
rsync [...] chmod=ugo+rwx [...]
sudo chmod
每次我有需要转移的东西时,我都可以
但这里的重点是尽量避免复制这些巨大的文件。这些脚本主要在 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-
我的脑袋要融化了……
解决方案
如果我正确理解了您的问题和详细信息,那么当您将它们直接移动到目的地时,您似乎真的想确保它们具有 WRITE 访问权限。
假设这是正确的,而不仅仅是移动文件,那么 move 和 set writable 怎么样?喜欢:
$ chmod 664 "$file"
$ mv "$file" new folder/.
推荐阅读
- python - SUMO 的巴士站和路线
- mysql - Laravel Eloquent 查询两个表
- python - Python打印函数中的多个字符串参数
- elasticsearch - Logstash 索引错误“索引 -1 超出长度 0 的范围”
- amazon-web-services - 失去对 EC2 实例的访问权限
- sql - 逗号分隔值的大查询连接
- android - 单例对象内的observeForever
- erlang - 在 gen_statem 中自动更改状态
- azure - Azure synapse 中的两次复制(暂存复制 + 普通复制)如何比普通复制更优化
- python - 如何在更大的图上有效地找到成对的未连接边?