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

Не удается установить предохранитель sshfs при запуске Cron на FreeBSD 9.0

У меня есть файловая система удаленного сервера, которую я пытаюсь смонтировать локально на машине FreeBSD 9 через FUSE sshfs и Cron для процедуры резервного копирования. У меня есть ssh-ключи между настройками ящиков, чтобы разрешить беспарольный вход в качестве пользователя root на локальном компьютере.

Cron настроен на запуск следующего скрипта (в crontab Root):

#!/bin/sh

echo "Mounting Share"

/usr/local/bin/sshfs -C -o reconnect -o idmap=user -o workaround=all <remote user>@<remote domain>.com: /mnt/remote_server

Как root, я могу запустить этот сценарий в командной строке без проблем, и без запроса пароля общий ресурс успешно монтируется. Тем не менее, при запуске Cron скрипт не работает. Путь к sshfs идентичен значению which sshfs

Вот корень электронной почты, который получает от Cron Daemon:

X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>

Mounting Share
fuse: failed to exec mount program: No such file or directory
fuse: failed to mount file system: No such file or directory

Я не понимаю, почему я получаю No such file or directory в этом случае. Это также кажется странным, учитывая, что пути кажутся правильными.

Я также попытался сравнить результат env на оболочке с env вставлен в скрипт. Я не вижу переменных среды, которые должны вызывать эту проблему. При загрузке FUSE сообщает свою версию как:

fuse4bsd: version 0.3.9-pre1, FUSE ABI 7.8

Помогите мне мастера ServerFault, вы моя единственная надежда!

Оказывается, причиной этой проблемы была переменная среды $ PATH. Измененный скрипт выше установил PATH идентично оболочке, и теперь он работает без проблем:

 PATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin:/‌​root/bin"   
 export PATH 

Думаю, урок состоит в том, чтобы никогда не делать никаких предположений о минимальной среде Cron.