2015-12-06 60 views
0

我作出一个POST请求给一个Python脚本,然后我想保存图像文件到服务器,在这里的HTML文件夹是我在做什么保存文件的Python - IO错误权限被拒绝

fh = open("/var/www/html/images/logo.png", "wb") 
fh.write(image_data.decode('base64')) 
fh.close() 

但后来我得到这个错误,IOError: [Errno 13] Permission denied:我发现它意味着这个文件有权限保存图像,我可以通过执行chmod到777来解决它,但这是危险和不好的,所以我怎么能保存文件但不让任何人编辑该文件?

感谢

回答

1

您既可以更改权限或运行该脚本具有正确权限的用户。我没有看到很多其他的选择。您可以让脚本编辑权限,编写权限,然后将权限更改回来,尽管它仍然可以编辑一段时间,而这看起来似乎是一个糟糕的主意。该脚本可能因某种原因失败,并保留允许任何人编辑的权限。编辑:如果你可以改变你应该能写的权限,使我的最后一个想法毫无意义。

+0

感谢您的回复,我打电话给一些JavaScript的帖子请求脚本,所以如何设置用户? – spenf10

+0

对不起,我没有使用javascript的经验。我添加了一个JavaScript标记。希望有人会前来帮忙 – Shatnerz

0

它可能显得有些复杂,但我建议您可能要调查/ etc/sudoers文件。
出于您的目的,您可以使用名为sudoersCmnd_Alias的脚本将文件创建到您具有/ tmp权限,然后move/var/www/html/images/的位置。
您仍然需要使用sudo来启用Cmnd_Alias脚本,但是如果您声明了NOPASSWD,那么它应该只是在不询问密码sudo的情况下运行。

始终可以访问使用visudo
该文件中的条目的一个例子的/etc/sudoesrs文件:

# Cmnd alias specification 
Cmnd_Alias WEB = /home/test.s 

再后来在文件中:

# User privilege specification 
root ALL=(ALL:ALL) ALL 
rolf ALL=(ALL:ALL) NOPASSWD:WEB 

与此相关,/home/test.sh将执行无论用户rolf如何设置它,例如将文件从/tmp移动到/var/www/html/images/时,命令行,sudo /home/test.sh发出,而不要求输入密码。