Всем привет!Существует скрипт рестора базы, который можно запускать только через sudo.
Не так давно команда sudo /ibrestore.sh стала выдавать ошибку "доступ запрещен" с указанием номера строки где произошла ошибка и выполнение скрипта на этом заканчивалось. Начал разбираться. Оказывается через mc все прекрасно работает если имя скрипта и имя базы вставлять через "Esc - Enter".Собственно сам скрипт:
#!/bin/sh
#. ibsettings
ErrorCode=0gbak -r -user "$IBUSER" -pass "$2" -p 8192 -v "/base/$1.gbk" "$1.gdbnew" 2>&1 | tee /gb/restore.log
#echo | mail -s "Restore End " 79184632889@smsmail.ru
if [ $? -ne 0 ]; then
echo -e "...... .............. ..... ..."
ErrorCode=1
else
echo -e "*** .... ...... $1 .............!"
fiif [ ! -z "$3" ]; then
Pause
fiexit $ErrorCode
А вот часть файла ibsettings с параметрами, который подключается к первому скрипту и в котором обнаруживается ошибка:#!/bin/sh
## .... . ........ Firebird . ......... ......
PATH=$PATH:/opt/firebird/bin:/gb
export PATH# .... . .......
ARCPATH=/home/gbuser
export ARCPATH# .... . .....
BASEPATH=/gb
export BASEPATHИнтерпретатор указывает на строку "ARCPATH=/home/gbuser". Кстати этой директории не существует. Но я так понимаю она и ни где не используется в первом скрипте (главном) да и в mc все работает.
Что это может быть?
>[оверквотинг удален]
>BASEPATH=/gb
>export BASEPATH
>
>Интерпретатор указывает на строку "ARCPATH=/home/gbuser". Кстати этой директории не существует. Но я
>так понимаю она и ни где не используется в первом скрипте
>(главном) да и в mc все работает.
>
>Что это может быть?
>
>Скрипт в кроне не запускается или ручной?
выполняйте этого и покажите нам аутпут =)
./ibrestore.sh >> output
>
>выполняйте этого и покажите нам аутпут =)
>
>./ibrestore.sh >> outputВыполняется скрипт вручную не из под рута.
Попробовал выполнить из подрута через судо, но выдает ту же ошибку:ibrestore: line 15: ibsettings: Нет такого файла или каталога
В output ничего не пишет.
Что интересно раза с 3 та же команда сработала...Доступ к файлу "ibsettings" у НЕ рута есть, причем полный, видеть он его видит и файл существует.
>ibrestore: line 15: ibsettings: Нет такого файла или каталога. /full_path_to_ibsettings
>>ibrestore: line 15: ibsettings: Нет такого файла или каталога
>
>. /full_path_to_ibsettingsПрописать полный путь к скрипту? А попроще ничего нет, ведь такой скрипт не один.
И опять же, в mc почему работает тот же самый скрипт, в чем отличие?
>>>ibrestore: line 15: ibsettings: Нет такого файла или каталога
>>
>>. /full_path_to_ibsettings
>
>Прописать полный путь к скрипту? А попроще ничего нет, ведь такой скрипт
>не один.
>И опять же, в mc почему работает тот же самый скрипт, в
>чем отличие?или попробуй выполнить скрипт с помошю csh или bash
#!/bin/csh
#!/usr/local/bin/bash
>
>#!/bin/csh
>#!/usr/local/bin/bashНе срабатывает.
>[оверквотинг удален]
>Выполняется скрипт вручную не из под рута.
>Попробовал выполнить из подрута через судо, но выдает ту же ошибку:
>
>ibrestore: line 15: ibsettings: Нет такого файла или каталога
>
>В output ничего не пишет.
>Что интересно раза с 3 та же команда сработала...
>
>Доступ к файлу "ibsettings" у НЕ рута есть, причем полный, видеть он
>его видит и файл существует.эсли файл существуется и в скрипте показано верный пут для файла конфигурации явно тут видно это из за привилегии.
сделай chown ЮЗЕР:ГРУПП ibsettings или chmod 664 ibsettings
потом sudo ./ibrestore.sh >> output
>сделай chown ЮЗЕР:ГРУПП ibsettings или chmod 664 ibsettings
>потом sudo ./ibrestore.sh >> outputНе срабатывает, в output ничего не пишет.
Вообще мне тут подсказывают, что якобы с помощью sudo вообще нельзя запускать шелл скрипты, можно только бинарники.. Поэтому через mc все запускается. Якобы это имеет отношение к безопасности системы.
По крайней мере факт остается фактом - через mc все работает.
Кто может подтвердить опровергнуть?
debian lenny можно и работает. Проверяется аж за одну минуту, что мешало это вам сделать самому непонятно. Также непонятно, что мешает сделать sudo bash(или что вы там предпочитаете) и уже из полученного рутового шелла исполнить скрипт.
То, что в убунту работает, совсем не означает того, что работает вообще. И для этого даже не надо проверять в течение одной минуты. Если мне нужно запустить скрипт из под рута я запущу его из под рута, сейчас мне нужно запустить скрипт через sudo, а не запустить через sudo bash.Может кто попробует у себя запустить похожий скрипт на баше и посмотреть как он через sudo отработает? Проверит в mc.
>То, что в убунту работает, совсем не означает того, что работает вообще.
>И для этого даже не надо проверять в течение одной минуты.
>Если мне нужно запустить скрипт из под рута я запущу его
>из под рута, сейчас мне нужно запустить скрипт через sudo, а
>не запустить через sudo bash.
>
>Может кто попробует у себя запустить похожий скрипт на баше и посмотреть
>как он через sudo отработает? Проверит в mc.полный скрипт в студию)))