Назад | Перейти на главную страницу

root + crontab: в доступе отказано

Я использую Debian 6, все исправлено, но когда я пытаюсь получить доступ к crontab как root, я просто получаю отказ в разрешении:

root@server:~# crontab -e
-bash: /usr/bin/crontab: Permission denied

Обратите внимание, это не как пользователь, а как корень.

Я даже не имею ни малейшего понятия, как решить эту проблему, если root не имеет доступа к crontab.

Любые идеи?


изменить: ответы верны в

а) да, шалость была (по крайней мере, это мое подозрение)

б) что мои разрешения на 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)

Требуется ли сейчас полная переустановка системы, чтобы вернуть ее в рабочее состояние?

edit: Это не повторяющийся вопрос - у меня были подозрения о взломанном сервере, но я не собираюсь сглаживать работающий сервер и восстанавливать его без доказательств.

Мой первоначальный вопрос касался отказа в разрешении как пользователю root, поскольку я был уверен, что это невозможно, и могу заверить вас, что я сначала искал этот вопрос.

Благодаря полезным людям здесь я теперь лучше понимаю разрешения, и если это произойдет с кем-то еще, они также смогут сузить то, что произошло.

Хорошо, у вас уже есть часть ответа, найдя разрешения на / usr / bin / crontab.

Теперь chmod сообщает, что не может изменять эти разрешения. Пытаться lsattr /usr/bin/crontab чтобы проверить, не были ли испорчены атрибуты файла, и chattr -i /usr/bin/crontab чтобы исправить это, если это действительно проблема.

Если это нечестная игра, то я предполагаю, что кто-то пытается помешать вам найти и исправить что-то в файлах данных crontab. Обычно они находятся в / var / spool / cron / crontabs /. Я не удивлюсь, если у вас будет больше разрешений или атрибутов файлов, блокирующих ваш путь, но вы хотите войти и проверить эти файлы с умом. Вы также можете поискать другие файлы, атрибуты которых установлены странно (в частности, неизменяемый бит).

Я уверен, что можно будет снова запустить систему, но сложно сказать, сколько для этого потребуется, в зависимости от того, сколько вреда было нанесено. Также вероятно, что вы никогда не узнаете, действительно ли вы исправили все зло. Полная переустановка или восстановление резервной копии, вероятно, является хорошей идеей.

Замечу, что на современной (такой, как сейчас используется LTS) системе debian 6, которая у меня есть, мой / usr / bin / crontab имеет размер 35 КБ, а не 30 КБ. Так что считайте содержимое этого файла подозрительным и не запускайте его. Возьмите копию, затем замените ее из дистрибутивной версии.

Пытаться chmod 0755 /usr/bin/crontab а затем снова выполните двоичный файл crontab. Возможно, кто-то или что-то изменило разрешения для самого исполняемого файла.

РЕДАКТИРОВАТЬ: После обновления кажется, что ваша корневая файловая система по какой-то причине стала доступной только для чтения. Во всяком случае, это мое предположение. Причины этого могут быть

  • В вашей системе произошел какой-то аппаратный сбой (отказ жесткого диска, плохой кабель HD, плохая оперативная память, что-то, что заставило ядро ​​Linux подумать, что лучше перемонтировать файловую систему только для чтения). Видеть dmesg вывод, если есть какие-то зацепки.
  • Фактически вы смонтировали корневую файловую систему как доступную только для чтения, см. /etc/fstab если ro там установлен флаг.
  • Ваша система представляет собой своего рода "живую" загрузку без фактической установки. Хотя я уверен, что вы об этом знали. :-)
  • Ваша корневая файловая система была повреждена из-за нечистого отключения / разгневанных эльфов / положения Сатурна и требует исправления. Перед тем, как пытаться выполнить полную fsck, убедитесь, что у вас есть достойные резервные копии (которые в любом случае должны быть у вас).

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