cron chmod脚本不会更改所有者

时间:2013-12-02 21:32:54

标签: bash cron chown

我需要运行更改所选文件的所有者和组的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”。

任何想法如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

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

使用find代替:

find /tmp ! -name '*zend*' ! -name '*textfile*' -user www-data \
    -exec chown -R tm:tm {} \;

答案 1 :(得分:0)

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

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

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