Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux Golang os。创建权限被拒绝_Linux_File_Go_Permission Denied - Fatal编程技术网

Linux Golang os。创建权限被拒绝

Linux Golang os。创建权限被拒绝,linux,file,go,permission-denied,Linux,File,Go,Permission Denied,我正在尝试在linux/var/log目录下创建日志文件,但权限被拒绝。在不必更改目录所有权的情况下,是否有任何最佳做法 f, _ := os.Create("/var/log/go_server.log") defer f.Close() log.SetOutput(f) 您所拥有的是一个标准的UNIX权限问题。鉴于该目录的特殊性质,您有三种选择: 将该目录的权限更改为更混乱。坏主意,因为它打开了一个肮脏的蠕虫安全明智的罐 使用sysV、upstart或systemd运行go程序,以使该程序

我正在尝试在linux/var/log目录下创建日志文件,但权限被拒绝。在不必更改目录所有权的情况下,是否有任何最佳做法

f, _ := os.Create("/var/log/go_server.log")
defer f.Close()
log.SetOutput(f)

您所拥有的是一个标准的UNIX权限问题。鉴于该目录的特殊性质,您有三种选择:

  • 将该目录的权限更改为更混乱。坏主意,因为它打开了一个肮脏的蠕虫安全明智的罐
  • 使用sysV、upstart或systemd运行go程序,以使该程序在有权限的用户(通常是root)的情况下运行。更好,因为只有一个进程得到了升级,您可以使用upstart或systemd获得良好的启动/停止/监视例程和基本的自我修复。事实上,如果你还没有准备好的话,你可能会想尝试使用其中的一种
  • 使用并配置本地syslogd将其日志保存到该文件中。最好,因为您只是将日志发送到套接字,并让服务为您处理日志
  • 另外请注意,如果配置正确,systemd可以将stdout/err保存到文件中,然后可以使用journalctl进行浏览。实际上,让您的程序愚蠢地将诊断打印到标准输出/错误,而不自行分叉是最明智的做法,因为systemd为您做了所有这些事情(这样,您可以专注于您的程序所做的事情,而不必重新发明wheel wrt daemonization和logging)


    尽管systemd得到了很多好处,但它实际上在这个用例中表现得相当出色。

    您所拥有的是一个标准的UNIX权限问题。鉴于该目录的特殊性质,您有三种选择:

  • 将该目录的权限更改为更混乱。坏主意,因为它打开了一个肮脏的蠕虫安全明智的罐
  • 使用sysV、upstart或systemd运行go程序,以使该程序在有权限的用户(通常是root)的情况下运行。更好,因为只有一个进程得到了升级,您可以使用upstart或systemd获得良好的启动/停止/监视例程和基本的自我修复。事实上,如果你还没有准备好的话,你可能会想尝试使用其中的一种
  • 使用并配置本地syslogd将其日志保存到该文件中。最好,因为您只是将日志发送到套接字,并让服务为您处理日志
  • 另外请注意,如果配置正确,systemd可以将stdout/err保存到文件中,然后可以使用journalctl进行浏览。实际上,让您的程序愚蠢地将诊断打印到标准输出/错误,而不自行分叉是最明智的做法,因为systemd为您做了所有这些事情(这样,您可以专注于您的程序所做的事情,而不必重新发明wheel wrt daemonization和logging)


    尽管systemd得到了所有的支持,但它实际上在这个用例中表现得相当出色。

    从具有足够权限的用户帐户运行一个程序。机器在AWS云中运行,具有go环境,代码通过BeanStalk部署。因此,没有终端用户控制机器或程序用户。认为有更好的方法。从具有足够权限的用户帐户运行程序。机器在AWS云中旋转,go环境和代码通过BeanStalk部署。因此,没有终端用户控制机器或程序用户。我认为有更好的方法。机器在AWS云中旋转,go环境和代码通过BeanStalk部署。因此,没有终端用户控制机器或程序用户。我认为有更好的方法。机器在AWS云中旋转,go环境和代码通过BeanStalk部署。因此,没有终端用户控制机器或程序用户。我觉得有更好的办法。