今天发现普通用户oracle无法使用crontab,无权限编辑crontab内容,详细报错如下:
[oracle@SJYD-CS-2 ~]$ crontab -e
#sync table
35 10 * * * /u01/app/yangcj/sync.sh
10 15 * * * /home/oracle/test.sh
~
"crontab.XXXXCl0bLz" 3L, 82C written
crontab: installing new crontab
cron/tmp.XXXXfNm9ah: Permission denied
crontab: edits left in /tmp/crontab.XXXXCl0bLz
[oracle@SJYD-CS-2 ~]$
检查发现是 /usr/bin/crontab 的属性有问题,没有给予它s属性,
因此低权限有误就无法使用crontab来往/var/spool/cron下写入文件
(即使把/var/spool/cron的权限设置为777,也一样会提示 chown:没有权限操作)
解决办法:
进入目录/var/spool/cron/
[root@SJYD-CS-2 cron]# ls `which crontab` -al
-rwxrwxrwx 1 root root 208806 Jan 30 2009 /usr/bin/crontab
[root@SJYD-CS-2 cron]# chmod u+s /usr/bin/crontab
[root@SJYD-CS-2 cron]# su oracle
[oracle@SJYD-CS-2 ~]$ crontab -l
#sync table
35 10 * * * /u01/app/yangcj/sync.sh
0 13 * * * /home/oracle/test.sh
s权限是 sid ,和passwd 一样,虽然普通用户没有passwd 的读、写、执行权限,但是加入了sid,就可以继承该文件拥有者的权限,比如写 /etc/shadow 。
crontab也是一样