【问题标题】:Python gets 'permission denied' to a file in LinuxPython 获得对 Linux 中文件的“权限被拒绝”
【发布时间】:2018-11-28 16:51:31
【问题描述】:

我有一种记录 json 文件操作的方法:

def log(self, action, data):
    import json
    import os

    current_directory = os.path.dirname(os.path.realpath(__file__))

    try:
        with open(current_directory+'/logs/log_'+str(data['id'])+'.json', 'a+') as outfile:
            log_data = {
                str(datetime.today()): {
                    'action': action,
                    'data': data
                }
            }
            json.dump(log_data, outfile, indent=2)
    except Exception as e:
        print('\033[91m'+"Couldn't access log file to log changes in Reservation model: [{}]".format(str(e))+'\033[0m')
        print('Current directory is {}'.format(os.path.dirname(os.path.realpath(__file__))))

它在我的 Mac 上本地工作,但它总是在 Linux 服务器中返回 permission deniedlogs 目录权限设置为755chmod,但我仍然遇到同样的错误:

[Wed Nov 28 16:27:23.551207 2018] [wsgi:error] [pid 18955:tid 139905951835904] [remote 189.149.229.31:63243] \x1b[91mCouldn't access log file to log changes in Reservation model: [[Errno 13] Permission denied: '/home/axel/IntellibookProject/Intellibook/ReservationsManagerApp/logs/log_43.json']\x1b[0m
[Wed Nov 28 16:27:23.551346 2018] [wsgi:error] [pid 18955:tid 139905951835904] [remote 189.149.229.31:63243] Current directory is /home/axel/IntellibookProject/Intellibook/ReservationsManagerApp

【问题讨论】:

  • logs 目录是否存在?如果不创建它。
  • 是的,确实如此。如果没有,我会得到一个不同的错误代码
  • 日志目录的权限呢?你能在里面手动创建一个文件吗?
  • @Jean-François Fabre 是的,我可以,
  • 为什么是“a+”模式?试试“a”。并在写入文件之前检查文件是否不存在。可能文件不能被覆盖

标签: python django linux apache


【解决方案1】:

运行 python 脚本的用户似乎缺乏访问目录的权限 - 看看使用 chown 设置目录的所有者是否可以解决您的问题。

例如:'sudo chown -R someuser /path/to/the/directory'

“-R”选项表示将所有者设置为目录及其中的所有内容

在 CentOS 和 RHEL 类系统上,您可能需要设置 SE Linux 上下文以允许写入特定目录。要暂时禁用 SE Linux 以检查是否是 SE Linux 问题,请输入“sudo setenforce 0”(仅适用于使用 SE Linux 的系统,如 RHEL、CentOS、Fedora、Oracle Linux、SUSE、OpenSUSE 等)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-21
    • 1970-01-01
    • 2022-01-08
    • 2011-09-11
    • 2011-07-29
    • 1970-01-01
    相关资源
    最近更新 更多