Rails 6应用程序由于缓存目录将所有权更改为根而失败

兰德斯特

我有一个在Debian Buster上运行的Rails 6应用程序。在一个地方,我使用“低级”缓存。以下是相关代码:

# Get the value.
def self.ae_enabled?()
  Rails.cache.fetch("ae_enabled", expires_in: 1.hour)
end

# Change the value.
def self.ae_toggle()
  ac = AdminConfiguration.find_by(name: "ae-enabled")                    

  ac.value = ! ac.value
  ac.save()                        

  # Invalidate the cache.
  Rails.cache.delete("ae_enabled")        

  return ac
end

这工作正常...一段时间。出于某种原因,由于某种原因,我无法弄清楚,用于缓存tmp/cache/3F1/上述值的缓存目录会将所有权从www-data:www-data(运行Apache的用户)更改为root:root一旦发生这种情况,Apache将无法再读取此缓存的值,并且应用程序将引发错误。

奇怪的是没有在其他目录中tmp/cache/有他们的权限变化,这是只有这种低级别的缓存相关联的一个。

为什么那个特定的缓存目录会更改所有权?

技术细节:Rails 6.0.3.3版。

Vasfed

Apache通常与Rails缓存无关,除非您使用的是乘客,在这种情况下,可能是乘客的错误/配置错误,请检查用户沙箱是否已启用并正确配置。

典型的Rails部署通常具有多个过程:

  1. 一个处理静态文件并将请求代理到Rails的Web服务器(通常是nginx,您已经提到过apache)
  2. Rails Web服务器(如果是乘客,则在前一个“内部”,但实际上仍然有一个子进程)
  3. 一些后台工作程序或进程从cron运行

文件所有权混乱很可能是由于在不同的os用户下运行时上述写入磁盘之一引起的。

研究如何启动流程。首先怀疑是某些cron作业,该作业可能在系统范围内配置,这些作业在root下运行。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将文件夹所有权从根更改为用户

将应用程序更改为多语言应用程序时,Rails中的路由失败

具有docker和文件所有权的Rails脚手架

拖放DMG应用程序捆绑包的根所有权

将Rails应用程序更改为生产

在多对多关系中记录的Rails所有权

Rails安全性-在模型级别执行所有权

Rails-破坏用户组中的成员资格/所有权

更改目录的所有权

如何将已安装程序的所有权更改为我的帐户?

由于设计,来自模板的新 Rails 应用程序失败

Perl更改目录路径的所有权

仅更改目录的权限和所有权

更改Linux目录的所有权

将整个操作系统的所有权更改为root:root

Docker-由Docker启动的容器-将文件所有权更改为root

sudo tar将提取的文件所有权更改为未知用户

sudo cp -a将所有权更改为root(而不是保留原始用户)

docker-compose postgres卷将所有权更改为gitlab-runner

如何将Scalpel恢复的文件的所有权更改为exfat分区?

Ruby on Rails错误:无法在另一个目录中初始化新的Rails应用程序,请首先更改为非Rails目录

如何将Facebook应用程序所有权迁移到业务管理器?

由于“无法将所有权更改为 uid 3434”,无法将 CircleCI 工作区从 Windows 附加到 Linux

如何获得现有 Ubuntu 软件中心应用程序的所有权?

将家中所有文件和文件夹的所有权错误地更改为“ root”

如何将 .config 文件的权限/所有权从“root”更改为我(“用户名”)?

Rails 4将所有未找到的请求记录到应用程序

将所有子域路由到我的Heroku Rails应用程序

我的Rails应用程序的规格由于默认区域设置错误而随机失败