【问题标题】:Permissions with sidekiq monit and capistranosidekiq monit 和 capistrano 的权限
【发布时间】:2018-09-05 07:56:36
【问题描述】:

我在使用 capistrano 和 sidekiq monit 时遇到问题。

我为 capistrano 设置了一个用户,在我安装 Sidekiq 之前一切都很顺利。

我的问题是当我尝试执行cap staging sidekiq:monit:config 时(sidekiq:monit:start 有同样的权限问题)。 每次我尝试过,它都会“冻结”,因为它要求输入密码。

然后我尝试将 sidekiq_monit_use_sudo 设置为 false。没关系,它不使用sudo,但是它没有权限将/tmp/monit.conf复制到/etc/monit/conf.d/文件夹中。

这是我第一次设置服务器,我有点迷路了=| 也许尝试手动配置sidekiq monit?

我正在使用 ruby​​ 2.5 和这些宝石:

  • capistrano 3.10
  • capistrano-sidekiq 1.0
  • 导轨 5.1

此外,我将 :pty 配置设置为 true,因为不使用密码我感觉不舒服。

谢谢!

【问题讨论】:

    标签: ruby-on-rails ruby sidekiq capistrano3 sidekiq-monitor


    【解决方案1】:

    您有几个选项,我将定义其中两个,正确的一个,以及简单/坏的一个。

    本地用户监控

    我个人对 Monit 的使用是在我没有 root 访问权限的共享服务器上。所以我以非 root 用户身份运行 Monit。

    为了做到这一点,我编译了 Monit 的前缀为$HOME/apps,这样配置文件就在$HOME/apps/etc 中。这避免了 sudo 问题。如果您有权访问包管理器并以这种方式安装了 Monit,您可以使用 -c 参数以您的用户身份运行 monit 来定义它应该在哪里查找配置文件:

    monit -c $HOME/config/monitrc
    

    为了让 Capistrano 识别本地监视器,您需要在 config/deploy.rb 中添加一些额外的参数:

    #set :monit_bin, '/usr/bin/monit' # Use this if you compile monit yourself.
    set :sidekiq_monit_conf_dir, '/home/myuser/config/monit.d' # Feel free to customize.
    set :sidekiq_monit_use_sudo, false
    

    在您使用-c 选项定义的monitrc 文件中,您需要确保您在:sidekiq_monit_conf_dir 中定义的任何文件夹都通过包括:

    include /home/myuser/config/monit.d/*.conf
    

    由于我没有 init 系统,我让 Cron 每 30 分钟启动一次 Monit,如果它已经在运行,这是一个 noop:

    # Restart monit if it dies
    */30 * * * * $HOME/apps/bin/monit > /dev/null
    

    如果您有 root 访问权限,则可以通过使用初始化脚本(或 systemd unit file)以本地用户身份启动 Monit 来改进这一点。

    错误的选择:让您的用户访问 conf 目录

    您可以编辑/etc/monit/monitrc 以包含您的本地用户配置目录,如上所述。同样,您可以允许您的用户写信给/etc/monit/conf.d。这些解决方案的主要缺点是您现在允许非 root 用户创建将以 root 身份执行的文件,从而打开权限提升漏洞。如果您的用户曾经被入侵,您当然不希望攻击者有一个简单的方法来获取 root。

    我之所以包含此选项,主要是因为它被普遍考虑,并且在绝大多数情况下都应避免使用(例如,当您关心安全性时)。但是,这在极少数情况下可能会很有用(例如,当您有一个短期服务器供内部使用时,仅在防火墙后面,只有受信任的用户,并且您需要快速设置它)。

    【讨论】:

      猜你喜欢
      • 2016-01-01
      • 2014-10-21
      • 2012-11-06
      • 1970-01-01
      • 1970-01-01
      • 2020-06-18
      • 2016-09-15
      • 2016-01-03
      • 2023-03-06
      相关资源
      最近更新 更多