【问题标题】:Is it possible to use the 'whenever' ruby gem while not having permission to use crontab?是否可以在无权使用 crontab 的情况下使用 'whenever' ruby​​ gem?
【发布时间】:2012-10-26 12:41:50
【问题描述】:

我即将编写一个脚本,它以预定的方式执行一些 ruby​​ 脚本。 生产环境:企业集群运行 debian,用户权限受限,因此我无权编辑 cron 表文件。我可以在任何时候使用红宝石宝石吗? 红宝石 1.9.1 谢谢你的回答。

【问题讨论】:

  • “我可以在任何时候使用 ruby​​ gem 吗?”是什么意思?如果脚本没有遇到权限问题,我不明白你为什么不能使用它们
  • "Whenever" 是一个 Ruby gem,可让您在 Ruby 中编写 cronjobs。 OP 的标题看起来就像他在一个句子中随机使用了“无论何时”连词,这可能解释了反对意见。
  • 没有人“欠”任何人任何东西,但如果人们解释了他们的反对票,尤其是在新用户提出的问题上,系统会更好地运行,新用户可能更倾向于来返回。

标签: ruby gem debian crontab whenever


【解决方案1】:

gem whenever 使用 crontab [CRONTAB FILE] 来编写它的 crontabs。如果配置为为另一个用户设置 crontab,它使用crontab -u [USER] [CRONTAB FILE]。以下来自lib/whenever/command_line.rb 的摘录显示了该命令的生成方式。

def write_crontab(contents)
  …
  command = ['crontab']
  command << "-u #{@options[:user]}" if @options[:user]
  command << tmp_cron_file
  …
end

因此,如果执行whenever 命令的用户帐户无法执行上面列出的命令,我很确定whenever 无法按预期工作。

用户选项可以这样给出:whenever --user someone

【讨论】:

  • 感谢您的努力,这完全解决了我的担忧。
【解决方案2】:

您想从 crontab 运行的脚本必须以某些用户身份运行才能正常工作。如果您有权以该用户身份运行脚本,那么您还应该有权访问该用户的 crontab,而不是 root 的 crontab。只要你有这个,你应该能够使用when gem 为该用户的crontab 创建和编辑cron 作业。

如果没有这个限制,那么您将能够通过其他用户的 crontab 运行脚本来获得 root 权限,当然您不希望这种情况成为可能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-13
    • 1970-01-01
    • 1970-01-01
    • 2014-06-16
    • 2020-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多