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

3 投票
1 回答
2181 浏览
提问于 2025-04-18 05:05

当我把文件上传到Django服务器时,文件的权限看起来是这样的:

-rw-r--r-- 1 bangtest nobody 5198 May  2 00:37 image.jpg

但是我想以根用户的身份上传这些文件,我该如何在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] 操作不允许: '/home/bangtest/alpha/media/products/image_2081.jpg'

请给我一个解决这个问题的建议。

谢谢

1 个回答

1

你有几个选择,我通常会尝试这两种方法:

  1. 简单的方法:把你需要操作的文件夹权限设置为775,如果你需要保存信息,可以设置为777(不过这样不太安全)。
  2. 复杂的方法:把www/nobody或者你的Apache用户名加入到你的用户组,然后让这个文件夹对这个用户组的成员可读可写(或者直接给www或者你的Apache/nginx用户在这个文件夹里添加权限)。

撰写回答