0

我需要运行更改所选文件的所有者和组的 cron 作业。

我有一个脚本:

#!/bin/bash
filez=`ls -la /tmp | grep -v zend | grep -v textfile | awk '$3 == "www-data" {print $8}'`
for ff in $filez; do
        /bin/chown -R tm:tm /tmp/$ff
done

如果我手动运行它 - 它可以完美运行。如果我将它添加到 root 的 cron

* * * * *               /home/scripts/do_script

它不会更改所有者/组。文件具有权限“-rwsr-xr-x”。

知道如何解决这个问题吗?

4

2 回答 2

0

在我的系统上,字段$8是小时/年,而不是文件名。也许您的 root 用户也是如此。这就是为什么你永远不应该尝试解析 ls。即使你解决了这个问题,未来还会有六个以上的人破坏系统。

使用 find 代替:

find /tmp ! -name '*zend*' ! -name '*textfile*' -user www-data \
    -exec chown -R tm:tm {} \;
于 2013-12-02T21:44:42.547 回答
0

如果您要添加到 root 的 cron (/etc/crontab),请注意语法与普通用户的 crontab 不同。

# m h dom mon dow user      command
  * *  1   *   *  root      /usr/bin/selfdestruct --immediately

还要给出你的命令的完整路径:Cron 并没有真正丰富的环境。确保脚本中的命令也具有完整路径并且不使用环境变量。

于 2013-12-02T22:31:45.270 回答