我在皇家破坏Linux机器后问这个问题。让我给您一些背景,以便您知道我来自哪里。
我目前(确实有)拥有一个运行Apache的RedHat Linux框,并添加了Phusion Passenger以便在Apache下运行Ruby Apps。该应用程序可作为一项服务,定期将缓存的文件提供给辛辛那提地区的自助服务终端。该Web应用程序运行良好,剩下的唯一工作是设置cron任务,以检索所有需要缓存的信息,并将其打包到几个不同的更新包中,以提供给信息亭。为此,我编写了一个Ruby脚本来处理数据的获取和打包。要设置cron任务,我只使用了内置的crontab。该脚本如下所示:
#!/bin/bash
cd ../lib
ruby pdf_cache.rb
ruby pdf_prepare.rb
ruby rss_cache.rb
ruby nightly-pack.rb
cd ..
chown -R www.www *
该脚本位于cron文件夹中,目录结构如下所示:
.
|-- cron
|-- feeds
|-- lib
| `-- trash
|-- logs
|-- nightly-packs
|-- pdf
| `-- tank
|-- public
`-- tmp
我crontab -e
按照root
以下内容运行:
0 3 * * * /usr/local/apache2/ruby_projects/kiosk/cron/schedule_job
哪个应该每天凌晨3点执行脚本。在安排了这项cron任务后的第二天,我感到非常不幸。cron任务是在根目录中执行的,我假设大多数命令都失败了,只是命令chmod -R www.www *
更改了www
用户对系统中所有内容的所有权。
我的问题是;实现cron任务的正确方法是什么?cron任务从什么上下文运行?现在,我意识到我可能不应该在该root
帐户下运行此程序,并且我不确定如何在该www
帐户下运行该程序,因为该用户没有外壳程序,并且您无法成功su
地对该www
用户使用。
我敢打赌,您可以给用户提供一个shell,仅限制对其进行远程访问的权限及其权限。
Cron任务在创建Cron任务的用户下运行,所以这就是为什么它以方式运行root
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句