【问题标题】:How to set right permission to Linux file?如何为 Linux 文件设置正确的权限?
【发布时间】:2015-05-12 21:33:49
【问题描述】:

我想知道如何为我的文件/log/production.log 设置正确的权限?每个人都说只使用chmodchown,但没有人解释我在这些命令之后应该写什么。我是初学者,如果您能解释一下,将不胜感激。

在我的特定示例中,我在生产服务器上有 rails 应用程序,我需要在 /var/www/my_app/log/ 目录中设置对 production.log 文件的权限。

这是文档对我的要求:

默认情况下,Phusion Passenger 以所有者身份运行 Rails 应用程序 配置.ru。因此,只有在该用户拥有 对日志文件的写权限。请 chmod 或 chown 您的日志文件 相应地。

希望您能提供帮助。谢谢。

【问题讨论】:

  • 如何部署您的应用程序? config.ru 文件的所有者是什么? ls -l /var/www/my_app/config.ru。 ?
  • 我在 DigitalCloud droplet 上使用Passenger + Nginx。 -rw-r--r-- 1 root root 153
  • 好的,我会考虑改变它,因为以 root 身份运行可能很危险。 (如果发生妥协,他们已经运行了服务器..)
  • 为什么它很危险?你是说黑客?
  • 以 root 身份运行是危险的,因为如果进程受到威胁,它可以访问整个机器。虽然以非 priv'd 用户身份运行,但当它受到威胁时,它只能访问它。我猜它实际上不是以 root 身份运行,而是作为非 priv 运行的 www

标签: ruby-on-rails ruby linux passenger


【解决方案1】:

尝试chmod 0660 production.log 并查看this chmod 的解释/图表。

【讨论】:

  • 这实际上是一个非常糟糕的主意,尤其是在共享服务器上,因为从那时起世界就可以 RW 访问您的日志。
  • 那么 0660 怎么样?
  • 取决于很多因素。应用用户拥有的目录日志,共享服务器上的模式 700。所以其他用户无法写入。 0660 仅在应用用户与文件所有者属于同一组时才有效。
【解决方案2】:

chmod 允许更改文件或目录的权限。存在三个不同组(所有者、组、其他)的三个基本权限(读、写、执行)。

chown 允许更改文件或目录的所有者。

我建议您使用chmod 640。在这里查看chmod 的语法,您定义了production.log 的所有者(通常是root)可以读取和写入此文件。如果需要,您可以为所有者的同一组的所有用户授予读取权限。但是您不应该为其他人提供权限,在生产环境中更是如此。

【讨论】:

    【解决方案3】:

    我会为您的应用程序创建一个部署用户,例如myapp(名称是什么并不特别重要)。使用此用户来部署/管理您的应用程序。假设用户名 myapp

     chown -R myapp:myapp /var/www/my_app  
    

    然后重启 nginx/passenger。这将导致乘客以myapp 用户身份运行,并允许它在日志目录下写入日志。 (还要确保您没有 /var/www 作为 docroot,在乘客之外可以访问,因为它可能导致信息泄露)

    如果服务器未共享,另一种选择是您可以以 www 用户身份运行。所以

    chown -R www:www /var/www/my_app
    

    这应该允许进程写入您的日志。

    【讨论】:

    • 第一:我怎么知道 /var/www 是否是 docroot?如果是怎么解决呢?第二:如何注册新用户(我运行你的命令,但现在我有权限被拒绝错误。
    • adduser myapp ,通常是您添加用户的方式,但我不太了解数字海洋的水滴,或者它们运行的​​内容等。抱歉
    猜你喜欢
    • 2013-11-30
    • 2013-05-16
    • 2019-07-09
    • 1970-01-01
    • 2021-04-29
    • 2017-05-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多