首页 > 解决方案 > 不允许的 Chown 操作:

问题描述

os.chown主要问题是shutil.chown我还没有重新启动计算机

我从 api 下载了一个 zip 文件并使用以下方法保存它:

with urllib.request.urlopen(req) as response, \
        open(out_folder, 'wb') as out_file:
    shutil.copyfileobj(response, out_file)

我想允许其他用户访问此文件。但是,我无法这样做。我试过了:

process = subprocess.Popen(['chown', '-R', f"{user}:{user}", out_folder],
                           stdout=subprocess.PIPE)
process.communicate()

对于每条告诉我不允许该操作的语句,它都失败了。

接下来,我尝试添加sudo到命令列表中,但这只会导致该process.communicate()行永远挂起。

接下来,我尝试了:

shutil.chown(out_folder, user=user)

这也没有奏效。我想如果我将它写到我和其他用户都属于的共享组中,也许它会起作用:

shutil.chown(out_folder, group=shared_group)

这也失败了,再次出现权限错误。

我的想法很新鲜,不知道该怎么做。是否可以立即将文件写入正确的用户?

标签: pythonchown

解决方案


可以随时执行 a 的用户chownroot。我建议您以root用户身份(或使用sudo)启动您的程序/脚本。

chown也可以使用,当您要更改其权限的文​​件与您在同一个组中时,或者如果两个组都已链接(请参阅/etc/groups,对不起,我不知道语法)。


推荐阅读