/usr/bin/sudo: отказано в разрешении при вызове sudo из sh-скрипта через telegra-cli с помощью lua-скрипта

#lua #sh #telegram #sudo #permission-denied

#lua #sh #telegram #sudo #отказано в разрешении

Вопрос:

Я пытаюсь запустить свой .sh scipt status.sh через сообщение telegram:

Ubuntu 20.04.1 переводит серверную Telegram-cli с lua-скриптом в состояние действия.sh-скрипт

когда я отправляю сообщение «статус» на свой сервер через telegram, оно изменяет статус.sh-скрипт, в этом скрипте у меня есть куча вещей, которые собирают для меня информацию и отправляют ее обратно в telegram, чтобы я мог видеть, каков статус моего сервера, однако (я недавно сделал новую установку сервера) по какой-то причине, если в скрипте есть строка кода, начинающаяся сsudo я получаю: line 38: /usr/bin/sudo: Permission denied

если я запускаю скрипт из командной строки ./status .sh запускается без каких-либо проблем !? итак, я думаю, это потому, что он вызывается из telegram или lua !?

пример кода, который генерирует ошибку: sudo ifconfig enp0s25 >> file

с другой стороны, эта строка работает без проблем: sudo echo Time: $(date "%H:%M:%S") > file

для /usr/bin установлено разрешение 0755, для sudo установлено разрешение 4755

Ответ №1:

Следующая команда

 sudo ifconfig enp0s25 >> file
  

не будет работать, если file требуется изменить привилегию root.
sudo влияет ifconfig , но не перенаправление.

Чтобы исправить это:

 sudo sh -c 'ifconfig enp0s25 >> file'
  

Комментарии:

1. спасибо за ответ! к сожалению, это не сработало, результат тот же, и я могу записать в файл с или без sudo или root, файл 0776

Ответ №2:

Как упоминалось в ответе Егора Скриптунова, sudo это влияет только на запускаемую команду sudo , а не на перенаправление.

Возможно file , в вашем случае ничего не записывается, потому ifconfig что вывод, который вас интересует, записывается в stderr вместо стандартного вывода.

Если вы хотите добавить как stdout, так и stderr в file качестве root, используйте эту команду:

 sudo sh -c 'ifconfig enp0s25 >> file 2>amp;1'
  

Здесь sh вызывается через sudo , так что перенаправление на file будет выполняться как root.

Без 2>amp;1 ifconfig этого будет добавлен только стандартный file вывод . Командная 2>amp;1 оболочка перенаправляет stderr на стандартный вывод.

Если file может быть записан без root, это может упростить

 sudo ifconfig enp0s25 >> file 2>amp;1
  

Комментарии:

1. ура, проблема заключалась в том, что я запустил telegram в snap …. после того, как я установил telegram «нормально», он снова заработал.