Ошибка получения разрешения запрещена

Я написал один скрипт bash, и он запускается в фоновом режиме, внутри этого скрипта я использую следующую команду:

sshpass -p prakash123 ssh -t -p $1 prakash@localhost './update_script.sh > /update.out 2> /update.err < /dev/null | echo $! > /update.pid &'

Работает нормально. Но я хочу изменить местоположение /update.out,/update.err а также /update.pid Итак, модифицированная команда для этого:

sshpass -p prakash123 ssh -t -p $1 prakash@localhost './update_script.sh > /pra/log/update.out 2> /pra/log/update.err < /dev/null | echo $! > /pra/log/update.pid &'

Теперь я получаю ошибку "Отказано в разрешении".

Потому что я изменил путь к выходным файлам. Я не уверен, но я думаю, что я должен дать разрешение супер пользователя, как su или же sudo перед sshpass

Так как я могу изменить путь /update.out, /update.err а также /update.pid этот файл из приведенной выше команды.

1 ответ

Решение

В первой команде вы записываете выходные данные в место, к которому у вас есть права на запись, так что все в порядке.

Теперь /pra Каталог не существует по умолчанию, поэтому я предполагаю, что вы создали его, используя root-доступ. Таким образом, чтобы написать в него, вы должны также использовать root-доступ. Просто добавь sudo на команду как,

sudo sshpass -p prakash123 ssh -t -p $1 prakash@localhost './update_script.sh > /pra/log/update.out 2> /pra/log/update.err < /dev/null | echo $! > /pra/log/update.pid &'

Но вместо того, чтобы делать это, я бы предложил вам написать в каталог в $HOME Дир и дай это rwx------ разрешение (т.е. чтение / запись / выполнение для вас и никаких разрешений для других). Таким образом, вам не придется использовать sudo.

Другие вопросы по тегам