不允许进行 Chown 操作:
Chown Operation not permitted:
主要问题是我还没有重启电脑,重启后,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)
这也失败了,同样是权限错误。
我没有想法,不知道该怎么办。是否可以立即将文件写入正确的用户?
随时可以执行 chown
的用户是 root
。我建议您以 root
用户(或使用 sudo
)的身份启动 program/script。
chown
也可以使用,当您要更改其权限的文件与您在同一组中时,或者,如果两个组都已链接(请参阅 /etc/groups
,抱歉我不太清楚语法)。
我找到了可行的解决方案:
import pwd
import grp
import os
uid = pwd.getpwnam(usernmae).pw_uid
gid = grp.getgrnam(groupname).gr_gid
os.chown(out_folder, uid, gid)
奇怪的是,它并不适用于我所属的所有群组(这已通过重新启动我的计算机解决)
主要问题是我还没有重启电脑,重启后,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)
这也失败了,同样是权限错误。
我没有想法,不知道该怎么办。是否可以立即将文件写入正确的用户?
随时可以执行 chown
的用户是 root
。我建议您以 root
用户(或使用 sudo
)的身份启动 program/script。
chown
也可以使用,当您要更改其权限的文件与您在同一组中时,或者,如果两个组都已链接(请参阅 /etc/groups
,抱歉我不太清楚语法)。
我找到了可行的解决方案:
import pwd
import grp
import os
uid = pwd.getpwnam(usernmae).pw_uid
gid = grp.getgrnam(groupname).gr_gid
os.chown(out_folder, uid, gid)
奇怪的是,它并不适用于我所属的所有群组(这已通过重新启动我的计算机解决)