我正在使用 Debian 6,所有版本都已修补,但是当我尝试以 root 身份访问 crontab 时,却收到权限被拒绝的提示:
root@server:~# crontab -e
-bash: /usr/bin/crontab: Permission denied
请注意,这不是作为用户,而是作为根。
如果 root 无权访问 crontab,我甚至不知道该如何解决这个问题。
有任何想法吗?
编辑:答案正确
a) 是的,确实有恶作剧(至少我怀疑是这样)
b) 我对 crontab 的权限有问题:
root@server:~# ls -lha /usr/bin/crontab
---------- 1 root crontab 30K Dec 19 2010 /usr/bin/crontab
因此尝试 chmod 答案:
root@server:~# chmod 2755 /usr/bin/crontab
chmod: changing permissions of '/usr/bin/crontab': Operation not permitted`
并重新安装软件包:
root@server:~# apt-get install --reinstall cron
Reading package lists... Done
Building dependency tree
Reading state information... Done
0 upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 0 not upgraded.
Need to get 93.2 kB of archives.
After this operation, 0 B of additional disk space will be used.
Get:1 http://ftp.debian.org/debian/ squeeze/main cron i386 3.0pl1-116 [93.2 kB]
Fetched 93.2 kB in 0s (164 kB/s)
(Reading database ... 86601 files and directories currently installed.)
Preparing to replace cron 3.0pl1-116 (using .../cron_3.0pl1-116_i386.deb) ...
Stopping periodic command scheduler: cron.
Unpacking replacement cron ...
dpkg: error processing /var/cache/apt/archives/cron_3.0pl1-116_i386.deb (--unpack):
unable to make backup link of `./usr/bin/crontab' before installing new version: Operation not permitted configured to not write apport reports
chown: changing ownership of `root': Operation not permitted
chmod: changing permissions of `root': Operation not permitted
Starting periodic command scheduler: cron.
Processing triggers for man-db ...
Errors were encountered while processing:
/var/cache/apt/archives/cron_3.0pl1-116_i386.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
现在是否需要完全重新安装系统才能使其重新启动并运行?
编辑:这不是一个重复的问题 - 我怀疑服务器受到了损害,但我不会在没有证据的情况下摧毁实时服务器并重建它。
我最初的问题是关于作为 root 用户的权限被拒绝,因为我确信这是不可能的,而且我可以向你保证,我确实首先搜索过这个问题。
感谢这里热心帮助的人,我现在对权限有了更多的了解,如果这件事发生在其他人身上,他们也能够缩小发生的事情的范围。
答案1
好的,您已经有了部分答案,找到了 /usr/bin/crontab 的权限。
现在 chmod 说它无法修改这些权限。尝试lsattr /usr/bin/crontab
检查文件属性是否被弄乱,chattr -i /usr/bin/crontab
如果确实是问题所在,请修复它。
如果这是恶意行为,那么我猜有人试图阻止您查找和修复 crontab 数据文件中的某些内容。这些文件通常位于 /var/spool/cron/crontabs/ 中。如果有更多的权限或文件属性阻止您的路径,我不会感到惊讶,但您想进入并巧妙地审核这些文件。您可能还想查找其他文件属性设置奇怪的文件(特别是不可变位)。
我确信系统可以重新运行,但很难说要花多少功夫才能做到这一点,这取决于造成的破坏程度。而且,您可能永远也不会知道您是否真的消除了所有破坏。完全重新安装或恢复备份可能是个好主意。
我注意到,在我手边最新的(比如现在使用 LTS 的)debian 6 系统上,我的 /usr/bin/crontab 大小为 35k,而不是 30k。因此,请怀疑该文件的内容,不要运行它。复制一份,然后从发行版中替换它。
答案2
Bash 告诉您您没有 /usr/bin/crontab 二进制文件的执行权限。
它应该匹配以下权限
# ls -la /usr/bin/crontab
-rwxr-sr-x 1 root crontab 35880 Jul 4 2012 /usr/bin/crontab
您可以通过以 root 身份运行来修复此问题
chmod 2755 /usr/bin/crontab
或者你可以运行以下命令强制完全重新安装 cron
apt-get install --reinstall cron
答案3
尝试chmod 0755 /usr/bin/crontab
再次执行 crontab 二进制文件。也许有人或某事更改了可执行文件本身的权限。
编辑:更新后,似乎你的根文件系统由于某种原因变为只读。无论如何,这是我的猜测。原因可能是
- 您的系统遇到了某种硬件故障(硬盘故障、硬盘电缆损坏、RAM 损坏,以及导致 Linux 内核认为最好以只读方式重新挂载文件系统的某些因素)。请查看
dmesg
输出以查看是否有任何线索。 - 您实际上已将根文件系统安装为只读,请查看那里
/etc/fstab
是否ro
设置了标志。 - 您的系统是某种实时启动,无需实际安装。不过我相信您会意识到这一点。:-)
- 您的根文件系统已因非正常关机 / 愤怒精灵 / 土星位置而损坏,需要修复。在尝试进行彻底的 fsck 之前,请确保您有可靠的备份(无论如何您都应该有)。