我正在尝试通过管理页面上传图像,但它一直显示:
[Errno 13] Permission denied: '/path/to/my/site/media/userfolder/2014/05/26'
文件夹
userfolder/2014/05/26
是在上传时动态创建的。
在Traceback中,我发现这个命令期间发生了错误:
在 /usr/lib64/python2.6/os.py 第 157 行。调用时
mkdir(name, mode)
意思是,它无法创建任何文件夹,因为它没有执行此操作的权限
我在服务器中使用 OpenSuse 作为操作系统。在 httpd.conf 中,我有这个:
<Directory /path/to/my/site/media>
Order allow,deny
Allow from all
</Directory>
我必须 chmod 或 chown 某些东西吗?
您需要更改目录权限,以便Web服务器进程可以更改目录。
要更改目录的所有权,请使用
chown
:
chown -R user-id:group-id /path/to/the/directory
查看哪个用户拥有 Web 服务器进程(相应地更改
httpd
):
ps aux | grep httpd | grep -v grep
或
ps -efl | grep httpd | grep -v grep
如果文件夹名称前有斜杠,也可能会发生这种情况:
path = '/folder1/folder2'
OSError: [Errno 13] Permission denied: '/folder1'
出现错误,但这个运行正常:
path = 'folder1/folder2'
当通过 base.py 文件中的 Maybe_download 函数调用发出下载请求时,您可能会遇到问题。
临时文件的权限存在冲突,我自己无法找到更改权限的方法,但能够解决该问题。
执行以下操作...
然后一切就完成了。 希望它对你有用。
另一个选项是确保该文件不会在计算机上的其他任何地方打开。
补充@falsetru的答案:在终端中运行 id 来获取您的 user_id 和 group_id
转到您面临挑战的目录/分区。 打开终端,输入 id 然后按 Enter。 这将显示您的 user_id 和 group_id
然后输入
chown -R user-id:group-id .
替换用户 ID 和组 ID
最后的.
表示当前分区/存储库
// chown -R 1001:1001 . (这就是我的情况)
只需尝试:
sudo cp /source /destination
如果文件在后台打开,只需关闭该文件即可。错误自行消失
当我使用 python 3 os 包在一个目录上执行操作时,我在这里找到了解决方案,在该目录中我没有足够的权限和访问权限,通过使用 sudo (root)运行 python 文件来解决,即:
sudo python python_file_name.py
您可能还计划用于 chmod 或 chown 该目录的任何其他实用程序也仅在使用 sudo 运行时才有效。
# file_name.py
base_path = "./parent_dir/child_dir/"
user = os.stat(base_path).st_uid # for getting details of the current user owner of the dir
group = os.stat(base_path).st_gid # for getting details of the current group owner of the dir
print("Present owner and group of the specified path")
print("Owner:", user)
print("Group:", group)
os.chown(base_path, user, group) # change directory permissions
print("\nOwner id of the file:", os.stat(base_path).st_uid)
print("Group id of the file:", os.stat(base_path).st_gid)
os.mkdir(base_path+file_name,mode=0o666)
使用 sudo 运行上述文件。
sudo python file_name.py
希望这个答案对您有用。
永远感谢 stackoverflow 和开发社区。向开发者致敬。
确保您输入的路径正确,如果没有尝试使用“//”两次而不是“/”一次,它对我有用,
抱歉,如果还是没找到,请尝试继续寻找。