操作系统错误 - 错误号 13 权限被拒绝

问题描述 投票:0回答:9

我正在尝试通过管理页面上传图像,但它一直显示:

[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 某些东西吗?

python django apache unix
9个回答
48
投票

您需要更改目录权限,以便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
    

24
投票

如果文件夹名称前有斜杠,也可能会发生这种情况:

path = '/folder1/folder2'

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

出现错误,但这个运行正常:

path = 'folder1/folder2'

1
投票

当通过 base.py 文件中的 Maybe_download 函数调用发出下载请求时,您可能会遇到问题。

临时文件的权限存在冲突,我自己无法找到更改权限的方法,但能够解决该问题。

执行以下操作...

  • 从链接下载 MNIST 数据集的四个 .gz 文件(http://yann.lecun.com/exdb/mnist/
  • 然后创建一个名为 MNIST_data 的文件夹(或者您在tensorflow xamples 文件夹中的工作目录/站点包文件夹中选择)。
  • 直接将文件复制粘贴到文件夹中。
  • 复制文件夹的地址(可能是 ( C:\Python\Python35\Lib\site-packages ensorflow xamples utorials\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) )

然后一切就完成了。 希望它对你有用。


1
投票

另一个选项是确保该文件不会在计算机上的其他任何地方打开。


1
投票

补充@falsetru的答案:在终端中运行 id 来获取您的 user_id 和 group_id

转到您面临挑战的目录/分区。 打开终端,输入 id 然后按 Enter。 这将显示您的 user_id 和 group_id

然后输入

chown -R user-id:group-id .

替换用户 ID 和组 ID

最后的

.
表示当前分区/存储库

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


0
投票

只需尝试:

sudo cp /source /destination

0
投票

如果文件在后台打开,只需关闭该文件即可。错误自行消失


0
投票

当我使用 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 和开发社区。向开发者致敬。


0
投票

确保您输入的路径正确,如果没有尝试使用“//”两次而不是“/”一次,它对我有用,

抱歉,如果还是没找到,请尝试继续寻找。

© www.soinside.com 2019 - 2024. All rights reserved.