如何在Django中更改上传文件的所有者和组?

3
当我把文件上传到Django服务器时,文件的权限似乎是这样的
-rw-r--r-- 1 bangtest nobody 5198 May  2 00:37 image.jpg

但是我希望以root用户身份上传这些文件,如何在Django应用程序中使用Python实现?
我尝试过使用这个方法
import pwd
import grp
import os

uid = pwd.getpwnam("root").pw_uid
gid = grp.getgrnam("root").gr_gid
path = '/home/bangtest/alpha/media/products/image_2081.jpg'
os.chown(path, uid, gid)

我遇到了以下错误:

OSError: [Errno 1] Operation not permitted: '/home/bangtest/alpha/media/products/image_2081.jpg'

请为我提供解决方案。

谢谢。


你为什么要将它更改为root用户? - François Constant
你好@François,之前我在访问mod_wsgi apache中保存的图像时遇到了问题,这是我的问题链接:https://dev59.com/jX_aa4cB1Zd3GeqPzCBb。在将文件所有者从bangtest更改为root后,我能够访问这些文件。正因为这个原因,我想将其更改为root用户。 - Ramakrishna
1
有什么以root身份运行的进程想要访问它们?这不可能是Apache,因为当它处理请求时,它会以不同的用户身份运行,并且永远不会以root身份运行。任何其他以root身份运行的进程都应该能够无视权限来访问这些文件。 - Graham Dumpleton
1个回答

1
你有几种选择,我通常尝试以下两种方法:
  1. 简单方式:在您需要进行交互的文件夹中将权限设置为775,或者如果需要保存信息(不安全),则为777。
  2. 困难方式:将www/nobody或您apache的用户名添加到您的用户组,并使该文件夹对该组用户可写和可读(或仅在该文件夹中为www或您的apache/nginx用户添加权限)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接