Форум русскоязычного сообщества Ubuntu


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Опять не работает CRON от root (проблема авторизации по ssh) [РЕШЕНО]  (Прочитано 5314 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Вazilio

  • Автор темы
  • Новичок
  • *
  • Сообщений: 20
  • Kubuntu user
    • Просмотр профиля
    • www.xBazilio.ru
Здравствуйте!
Есть Ubuntu server 12.04
Задача: выполнять бэкап.
Используется rdiff-backup и работает, если запускать из командной строки.
(Настраивался по этой статье: http://www.hilik.org.ua/rdiff-backup/)

Вот как настроен крон (редактором nano):
root@svk-server:~# crontab -l
# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command
MAILTO=""
54 11 * * * /bin/date > /tmp/backup.log && /root/bin/rdiff-backup.sh >> /tmp/backup.log && /bin/date >> /tmp/backup.log
Пустая строка в конце есть.

Вот что в скрипте /root/bin/rdiff-backup.sh
#!/bin/bash
#Определяем имя сервера который бекапим, нужно для создания иерархии в бекап директории на удаленном сервере
HOST_NAME=`/bin/hostname -s`
#Адрес сервера на который будем бекапить
REMOTE_HOST='192.168.0.177'
#Пользователь от имени которого будем бекапить
USER='svkbackup'
#Директория на удаленном сервере в которой создаются бекапы
PREFIX='/storage/backup'
#Директории которые необходимо бекапить
#WHAT='/bin /boot /etc /home /ldaphome /lib /lib64 /opt /root /sbin /srv /usr /var'
WHAT='/bin /boot /etc /lib /lib64 /opt /sbin /srv /usr'
#Директории для исключения
EXCLUDE_DIRS='**smb4k** **.backup** **~ **/var/run **/var/lock **/root/svk-server'
EXCLUDE=''
for ex in $EXCLUDE_DIRS
do
        EXCLUDE=$EXCLUDE' --exclude '$ex
done
#Главный цикл бекапа
for i in $WHAT
do
        `/usr/bin/rdiff-backup --remote-schema '/usr/bin/ssh -i /home/$USER/.ssh/id_rsa -C %s /usr/bin/rdiff-backup --server' --create-full-path --exclude-device-files --exclude-fifos --exclude-sockets $EXCLUDE --preserve-numerical-ids -b $i $USER@$REMOTE_HOST::/$PREFIX/$HOST_NAME$i`
        echo "/usr/bin/rdiff-backup --remote-schema '/usr/bin/ssh -i /home/$USER/.ssh/id_rsa -C %s /usr/bin/rdiff-backup --server' --create-full-path --exclude-device-files --exclude-fifos --exclude-sockets $EXCLUDE --preserve-numerical-ids -b $i $USER@$REMOTE_HOST::/$PREFIX/$HOST_NAME$i"
done

Скрипт выполняется, создаётся файл /tmp/backup.log
примерно с таким содержимым:
Thu Oct 25 11:54:01 MSK 2012
/usr/bin/rdiff-backup --remote-schema '/usr/bin/ssh -i /home/svkbackup/.ssh/id_rsa -C %s /usr/bin/rdiff-backup --server' --create-full-path --exclude-device-files --exclude-fifos --exclude-sockets  --exclude **smb4k** --exclude **.backup** --exclude **~ --exclude **/var/run --exclude **/var/lock --exclude **/root/svk-server --preserve-numerical-ids -b /bin svkbackup@192.168.0.177:://storage/backup/svk-server/bin
/usr/bin/rdiff-backup --remote-schema '/usr/bin/ssh -i /home/svkbackup/.ssh/id_rsa -C %s /usr/bin/rdiff-backup --server' --create-full-path --exclude-device-files --exclude-fifos --exclude-sockets  --exclude **smb4k** --exclude **.backup** --exclude **~ --exclude **/var/run --exclude **/var/lock --exclude **/root/svk-server --preserve-numerical-ids -b /boot svkbackup@192.168.0.177:://storage/backup/svk-server/boot
/usr/bin/rdiff-backup --remote-schema '/usr/bin/ssh -i /home/svkbackup/.ssh/id_rsa -C %s /usr/bin/rdiff-backup --server' --create-full-path --exclude-device-files --exclude-fifos --exclude-sockets  --exclude **smb4k** --exclude **.backup** --exclude **~ --exclude **/var/run --exclude **/var/lock --exclude **/root/svk-server --preserve-numerical-ids -b /etc svkbackup@192.168.0.177:://storage/backup/svk-server/etc
/usr/bin/rdiff-backup --remote-schema '/usr/bin/ssh -i /home/svkbackup/.ssh/id_rsa -C %s /usr/bin/rdiff-backup --server' --create-full-path --exclude-device-files --exclude-fifos --exclude-sockets  --exclude **smb4k** --exclude **.backup** --exclude **~ --exclude **/var/run --exclude **/var/lock --exclude **/root/svk-server --preserve-numerical-ids -b /lib svkbackup@192.168.0.177:://storage/backup/svk-server/lib
/usr/bin/rdiff-backup --remote-schema '/usr/bin/ssh -i /home/svkbackup/.ssh/id_rsa -C %s /usr/bin/rdiff-backup --server' --create-full-path --exclude-device-files --exclude-fifos --exclude-sockets  --exclude **smb4k** --exclude **.backup** --exclude **~ --exclude **/var/run --exclude **/var/lock --exclude **/root/svk-server --preserve-numerical-ids -b /lib64 svkbackup@192.168.0.177:://storage/backup/svk-server/lib64
/usr/bin/rdiff-backup --remote-schema '/usr/bin/ssh -i /home/svkbackup/.ssh/id_rsa -C %s /usr/bin/rdiff-backup --server' --create-full-path --exclude-device-files --exclude-fifos --exclude-sockets  --exclude **smb4k** --exclude **.backup** --exclude **~ --exclude **/var/run --exclude **/var/lock --exclude **/root/svk-server --preserve-numerical-ids -b /opt svkbackup@192.168.0.177:://storage/backup/svk-server/opt
/usr/bin/rdiff-backup --remote-schema '/usr/bin/ssh -i /home/svkbackup/.ssh/id_rsa -C %s /usr/bin/rdiff-backup --server' --create-full-path --exclude-device-files --exclude-fifos --exclude-sockets  --exclude **smb4k** --exclude **.backup** --exclude **~ --exclude **/var/run --exclude **/var/lock --exclude **/root/svk-server --preserve-numerical-ids -b /sbin svkbackup@192.168.0.177:://storage/backup/svk-server/sbin
/usr/bin/rdiff-backup --remote-schema '/usr/bin/ssh -i /home/svkbackup/.ssh/id_rsa -C %s /usr/bin/rdiff-backup --server' --create-full-path --exclude-device-files --exclude-fifos --exclude-sockets  --exclude **smb4k** --exclude **.backup** --exclude **~ --exclude **/var/run --exclude **/var/lock --exclude **/root/svk-server --preserve-numerical-ids -b /srv svkbackup@192.168.0.177:://storage/backup/svk-server/srv
/usr/bin/rdiff-backup --remote-schema '/usr/bin/ssh -i /home/svkbackup/.ssh/id_rsa -C %s /usr/bin/rdiff-backup --server' --create-full-path --exclude-device-files --exclude-fifos --exclude-sockets  --exclude **smb4k** --exclude **.backup** --exclude **~ --exclude **/var/run --exclude **/var/lock --exclude **/root/svk-server --preserve-numerical-ids -b /usr svkbackup@192.168.0.177:://storage/backup/svk-server/usr
Thu Oct 25 11:54:03 MSK 2012
Всё проходит за 2 секунды и ни чего не бэкапится.

Но если выполнить из коммандной строки, то всё бэкапится так как надо.

я гуглил, пробовал настраивать крон в /etc/crontab (с указание пользователя root перед командой)
Всё тоже самое. команды запускаются, но не выполняются.

в syslog пишет просто:
Oct 25 11:54:01 svk-server CRON[15654]: (root) CMD (/bin/date > /tmp/backup.log && /root/bin/rdiff-backup.sh >> /tmp/backup.log && /bin/date >> /tmp/
backup.log)

Прошу прощения за такую тему, так как в гугле видел, что их сотни, но везде решения не помогающие мне.
Помогите, пожалуйста!

UPD 26.10.2012
Выяснилось, что не работает из-за проблем с авторизацией.
На бэкап-сервере такое в auth.log:
Oct 25 19:01:02 svk-backup sshd[16123]: Failed password for svkbackup from 192.168.0.155 port 59061 ssh2
Oct 25 19:01:02 svk-backup sshd[16123]: Failed password for svkbackup from 192.168.0.155 port 59061 ssh2
Oct 25 19:01:02 svk-backup sshd[16123]: Connection closed by 192.168.0.155 [preauth]
Почему из командной строки проблем нет, а из CRON есть? Как это исправить?

Решение:
https://forum.ubuntu.ru/index.php?topic=205072.msg1555339#msg1555339
« Последнее редактирование: 26 Октября 2012, 12:05:19 от Вazilio »

Оффлайн victor00000

  • Старожил
  • *
  • Сообщений: 15568
  • Глухонемой (Deaf)
    • Просмотр профиля
Re: Опять не работает CRON от root, прошу помощи
« Ответ #1 : 25 Октября 2012, 14:24:43 »
папробуй 1 минут каждый
*/1 * * * * /bin/date >> /tmp/date.txt


cat /tmp/date.txt
Wars ~.o

Оффлайн Вazilio

  • Автор темы
  • Новичок
  • *
  • Сообщений: 20
  • Kubuntu user
    • Просмотр профиля
    • www.xBazilio.ru
Re: Опять не работает CRON от root, прошу помощи
« Ответ #2 : 25 Октября 2012, 14:58:32 »
victor00000, спасибо за ответ!
root@svk-server:~# crontab -e
crontab: installing new crontab
root@svk-server:~# date
Thu Oct 25 14:55:59 MSK 2012
root@svk-server:~# date
Thu Oct 25 14:56:00 MSK 2012
root@svk-server:~# cat /tmp/date.txt
Thu Oct 25 14:56:01 MSK 2012

С этим проблем нет.
Да и в /tmp/backup.log всё пришется.
Просто команды, которые записаны в файле не выполняются. echo работает, а остальное нет.
и ошибок в логах нет.

Попробовал даже удалить обратные кавычки из скрипта /root/bin/rdiff-backup.sh
Тот же эффект: из командной строки работает, из cron нет.
« Последнее редактирование: 25 Октября 2012, 15:08:08 от Вazilio »

Оффлайн xeon_greg

  • Активист
  • *
  • Сообщений: 981
    • Просмотр профиля
Re: Опять не работает CRON от root, прошу помощи
« Ответ #3 : 25 Октября 2012, 18:21:21 »
покажи-ка ls -la /home/svkbackup/.ssh/id_rsa

Оффлайн Вazilio

  • Автор темы
  • Новичок
  • *
  • Сообщений: 20
  • Kubuntu user
    • Просмотр профиля
    • www.xBazilio.ru
Re: Опять не работает CRON от root, прошу помощи
« Ответ #4 : 25 Октября 2012, 18:24:26 »
root@svk-server:~# ls -la /home/svkbackup/.ssh/id_rsa
-rw------- 1 svkbackup svkbackup 1679 Oct 22 11:23 /home/svkbackup/.ssh/id_rsa

даже если дать всем чтение, не работает.
« Последнее редактирование: 25 Октября 2012, 18:26:54 от Вazilio »

Оффлайн xeon_greg

  • Активист
  • *
  • Сообщений: 981
    • Просмотр профиля
Re: Опять не работает CRON от root, прошу помощи
« Ответ #5 : 25 Октября 2012, 18:32:51 »
ну а
.
.. чего не показал, я же не зря просил
ls -la

Пользователь решил продолжить мысль 25 Октября 2012, 18:34:30:
покажи
ls -la /home/svkbackup только полный вывод
« Последнее редактирование: 25 Октября 2012, 18:34:30 от xeon_greg »

Оффлайн Вazilio

  • Автор темы
  • Новичок
  • *
  • Сообщений: 20
  • Kubuntu user
    • Просмотр профиля
    • www.xBazilio.ru
Re: Опять не работает CRON от root, прошу помощи
« Ответ #6 : 25 Октября 2012, 18:36:04 »
xeon_greg, благодарю за готовность помочь!

прямо ваш код скопировал и выполнил, в предыдущем посте вставил результат

root@svk-server:~# ls -la /home/svkbackup
total 32
drwxr-xr-x 3 svkbackup svkbackup 4096 Oct 22 11:15 .
drwxr-xr-x 6 root      root      4096 Oct 22 11:10 ..
-rw------- 1 svkbackup svkbackup  118 Oct 22 11:23 .bash_history
-rw-r--r-- 1 svkbackup svkbackup  220 Oct 22 11:10 .bash_logout
-rw-r--r-- 1 svkbackup svkbackup 3485 Oct 22 11:10 .bashrc
-rw-r--r-- 1 svkbackup svkbackup  412 Oct 22 11:15 id_rsa.pub
-rw-r--r-- 1 svkbackup svkbackup  674 Oct 22 11:10 .profile
drwx------ 2 svkbackup svkbackup 4096 Oct 22 11:15 .ssh

Оффлайн xeon_greg

  • Активист
  • *
  • Сообщений: 981
    • Просмотр профиля
Re: Опять не работает CRON от root, прошу помощи
« Ответ #7 : 25 Октября 2012, 18:39:51 »
в простейшем случае сделать :
sudo chmod o+x /home/svkbackup/.ssh
sudo chmod o+r /home/svkbackup/.ssh/id_rsa
 и проверить. бэкап должен сработать

Пользователь решил продолжить мысль 25 Октября 2012, 18:45:41:
это если крон-задание выполняется от root или любого другого отличного от svkbackup пользователя
« Последнее редактирование: 25 Октября 2012, 18:45:41 от xeon_greg »

Оффлайн Вazilio

  • Автор темы
  • Новичок
  • *
  • Сообщений: 20
  • Kubuntu user
    • Просмотр профиля
    • www.xBazilio.ru
Re: Опять не работает CRON от root, прошу помощи
« Ответ #8 : 25 Октября 2012, 18:47:50 »
xeon_greg,
попробовал и для группы, и для всех
root@svk-server:~# ls -al /home/svkbackup/.ssh/
total 20
drwx--x--x 2 svkbackup svkbackup 4096 Oct 22 11:15 .
drwxr-xr-x 3 svkbackup svkbackup 4096 Oct 22 11:15 ..
-rw-rw-r-- 1 svkbackup svkbackup  412 Oct 22 11:15 authorized_keys
-rw-r--r-- 1 svkbackup svkbackup 1679 Oct 22 11:23 id_rsa
-rw-r--r-- 1 svkbackup svkbackup  412 Oct 22 11:23 id_rsa.pub

Бэкап не делается.
echo срабатывает, бэкап - нет.

Доавлю:
даже если на чтение для /home/svkbackup/.ssh/ добавить все права, не делается.
в логах по-прежнему ошибок нет, только строка
Oct 25 18:46:01 svk-server CRON[27949]: (root) CMD (/bin/date > /tmp/backup.log && /root/bin/rdiff-backup.sh >> /tmp/backup.log && /bin/date >> /tmp/backup.log)
« Последнее редактирование: 25 Октября 2012, 18:50:59 от Вazilio »

Оффлайн xeon_greg

  • Активист
  • *
  • Сообщений: 981
    • Просмотр профиля
Re: Опять не работает CRON от root, прошу помощи
« Ответ #9 : 25 Октября 2012, 18:58:22 »
проверь лог авторизации на сервере svkbackup@192.168.0.177 что там пишет

Оффлайн Вazilio

  • Автор темы
  • Новичок
  • *
  • Сообщений: 20
  • Kubuntu user
    • Просмотр профиля
    • www.xBazilio.ru
Re: Опять не работает CRON от root, прошу помощи
« Ответ #10 : 25 Октября 2012, 19:02:43 »
xeon_greg,
мы на верном пути :)

Oct 25 19:01:02 svk-backup sshd[16123]: Failed password for svkbackup from 192.168.0.155 port 59061 ssh2
Oct 25 19:01:02 svk-backup sshd[16123]: Failed password for svkbackup from 192.168.0.155 port 59061 ssh2
Oct 25 19:01:02 svk-backup sshd[16123]: Connection closed by 192.168.0.155 [preauth]

Как же так?

Оффлайн xeon_greg

  • Активист
  • *
  • Сообщений: 981
    • Просмотр профиля
Re: Опять не работает CRON от root, прошу помощи
« Ответ #11 : 25 Октября 2012, 19:05:19 »
запустить cron от имени svkbackup
54 11 * * * svkbackup /bin/date > /tmp/backup.log && /root/bin/rdiff-backup.sh >> /tmp/backup.log && /bin/date >> /tmp/backup.log
Пользователь решил продолжить мысль 25 Октября 2012, 19:06:25:
только скрипт запуска перемеcтить в директорию доступную для svkbackup

Оффлайн Вazilio

  • Автор темы
  • Новичок
  • *
  • Сообщений: 20
  • Kubuntu user
    • Просмотр профиля
    • www.xBazilio.ru
Re: Опять не работает CRON от root, прошу помощи
« Ответ #12 : 25 Октября 2012, 19:24:44 »
именно такой запуск не сработает, так как svkbackup не может запустить /root/bin/rdiff-backup.sh
а если заменить на /home/svkbackup/bin/rdiff-backup.sh то ситуация опять не меняется.
но на 192.168.0.177 уже нет ошибок авторизации.

Вобщем понятно одно: проблема с авторизацией.
Только не понятно, почему из командной строки этой проблемы нет, а из cron - есть...

Оффлайн xeon_greg

  • Активист
  • *
  • Сообщений: 981
    • Просмотр профиля
Re: Опять не работает CRON от root, прошу помощи
« Ответ #13 : 25 Октября 2012, 19:45:14 »
из ком. строки наверное ж выполняется от имени svkbackup , а в кроне от root, а рут не может получить доступ к ключам для авторизации
, вобщем проблема с правами

Оффлайн Вazilio

  • Автор темы
  • Новичок
  • *
  • Сообщений: 20
  • Kubuntu user
    • Просмотр профиля
    • www.xBazilio.ru
Re: Опять не работает CRON от root, прошу помощи
« Ответ #14 : 25 Октября 2012, 22:14:00 »
xeon_greg,
из командной строки тоже от рут.
root активен, у него установлен пароль и крон настраивается от него.

 

Страница сгенерирована за 0.022 секунд. Запросов: 21.