OSError - 错误13 权限被拒绝

60 投票
9 回答
430709 浏览
提问于 2025-04-18 07:36

我在管理员页面上传图片时遇到问题,总是提示:

[Errno 13] Permission denied: '/path/to/my/site/media/userfolder/2014/05/26'

文件夹 userfolder/2014/05/26 是在上传时动态创建的。

在错误追踪中,我发现错误发生在这条命令上:

在 /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)吗?

9 个回答

1

补充一下@falsetru的回答:在终端里输入id可以获取你的用户ID和组ID。

首先,进入你遇到问题的文件夹或分区。打开终端,输入id,然后按回车。这时会显示你的用户ID和组ID。

接着输入

chown -R 用户ID:组ID .

把用户ID和组ID替换成你刚才查到的值。

.表示当前的文件夹或分区。

// 例如:chown -R 1001:1001 .(这是我的情况)

1

另一个选择是确保这个文件在你电脑上的其他地方没有被打开。

1

你可能在使用base.py文件中的maybe_download函数时遇到了下载请求的问题。

这个问题是因为临时文件的权限发生了冲突,我自己也没找到改变权限的方法,但我找到了一种解决办法。

你可以按照以下步骤操作...

  • 从这个链接下载四个MNIST数据集的.gz文件( http://yann.lecun.com/exdb/mnist/
  • 然后在你的工作目录或tensorflow\examples文件夹中创建一个名为MNIST_data的文件夹(你也可以选择其他名字)。
  • 直接把下载的文件复制粘贴到这个文件夹里。
  • 复制这个文件夹的地址(它可能是 ( C:\Python\Python35\Lib\site-packages\tensorflow\examples\tutorials\mnist\MNIST_data ))。
  • 把地址中的“\”换成“/”,因为“\”在这里是用作转义字符的,换成“/”才能正确访问文件夹。
  • 最后,如果你在跟着教程,你的调用函数应该是 ( mnist = input_data.read_data_sets("MNIST_data/", one_hot=True) );把"MNIST_data/"这个参数改成你的文件夹地址。比如在我的情况下应该是 ( mnist = input_data.read_data_sets("C:/Python/Python35/Lib/site-packages/tensorflow/examples/tutorials/mnist/MNIST_data", one_hot=True) )

这样就完成了。希望这对你有帮助。

24

如果你在文件夹名字前面加了一个斜杠,也可能会出现这个问题:

path = '/folder1/folder2'

OSError: [Errno 13] Permission denied: '/folder1'

这样会报错,但下面这个就没问题:

path = 'folder1/folder2'
48

你需要更改目录的权限,这样网络服务器的程序才能访问这个目录。

  • 要更改目录的拥有者,可以使用 chown 命令:

    chown -R user-id:group-id /path/to/the/directory
    
  • 要查看哪个用户拥有网络服务器的程序(根据需要更改 httpd):

    ps aux | grep httpd | grep -v grep
    

    或者

    ps -efl | grep httpd | grep -v grep
    

撰写回答