我的 Centos 服务器上有一个脚本,用于删除新创建的日志文件。它包含以下内容:
cd /var/log/kloxo
rm maillog-* courier-* pureftp.log-* smtp.log-*
..该脚本具有以下所有权/权限:
-bash-3.2# ls -l /home/admin/cronscripts/logDeleteCronJob.sh
-rwxr-xr-x 1 root root 79 Jan 16 12:26 /home/admin/cronscripts/logDeleteCronJob.sh
..目标文件夹如下所示:
drwxr-xr-x 2 root root 4096 Jan 20 03:39 kloxo
.. 文件夹内容如下所示(这些权限在创建日志文件时由服务器自动设置):
-bash-3.2# ls -l /var/log/kloxo/
total 562064
-rw-r--r-- 1 root root 127423120 Jan 20 08:57 courier
-rw-r--r-- 1 root root 127145668 Jan 19 03:42 courier-1
-rw-r--r-- 1 root root 127375976 Jan 20 03:39 courier-2
-rw------- 1 root root 49875972 Jan 20 08:55 maillog
-rw------- 1 root root 49699233 Jan 19 03:42 maillog-1
-rw------- 1 root root 49857831 Jan 20 03:38 maillog-2
-rw------- 1 root root 7925642 Jan 20 08:58 pureftpd.log
-rw-rw-r-- 1 root root 11889944 Jan 20 08:57 smtp.log
-rw-r--r-- 1 root root 11842503 Jan 19 03:42 smtp.log-1
-rw-r--r-- 1 root root 11884360 Jan 20 03:39 smtp.log-2
问题是脚本按计划执行但无法删除文件,并且我收到来自 cron 守护程序的以下电子邮件:
rm: cannot remove `maillog-1': Permission denied
rm: cannot remove `courier-1': Permission denied
rm: cannot remove `pureftp.log-*': No such file or directory
rm: cannot remove `smtp.log-1': Permission denied
有人能告诉我如何正确执行此操作吗?谢谢
答案1
您以用户“admin”的身份运行 cron 脚本,而文件系统权限仅允许 root 写入文件。
以 root 身份运行 cron 作业,或者 chown+chmod 所有文件/文件夹,以便管理员可以写入/删除/等。
答案2
只要脚本可执行,其权限在这里并不重要。重要的是脚本执行的用户。
显示 cron 作业条目。这是用户 cron 作业还是系统范围的 cron 作业?
答案3
如果您查看脚本无法删除的文件的权限,您会发现对于用户 root,它们的权限为 600,这意味着只有 root 才能删除这些文件。
要么修复权限,要么以 root 身份运行脚本,而不是使用管理员用户,这样就可以了