🐧 Как использовать Sudo при использовании с перенаправлении вывода или Pipe |

🐧 Как использовать Sudo при использовании с перенаправлении вывода или Pipe

Мануал

В этом руководстве я покажу, как использовать команду sudo при использовании с перенаправлением или пайпом ( знак | ).

При использовании sudo с перенаправлением вывода (>) или пайпом (|) bash выводит сообщение об ошибке Permission denied.

Далее я покажу вам разные способы решения этой проблемы.

Используйте sudo с tree

Например, чтобы перенаправить вывод команды echo 1 в файл ip_forward, запустите:

$ sudo echo 1 > /proc/sys/net/ipv4/ip_forward
bash: /proc/sys/net/ipv4/ip_forward: Permission denied

Приведенная выше команда sudo привела к ошибке permission denied, поскольку перенаправление выполняется оболочкой, у которой нет разрешения на запись.

Мы можем использовать команду sudo с командой tee, чтобы устранить эту ошибку:

$ echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward

При использовании описанного выше подхода команда, выполняемая перед пайпом, не будет выполняться от имени пользователя root (echo 1).

Это полезно, если вам просто нужен вывод программы, для которой не требуются привилегии root.

Если для команды перед каналом требуется root, мы могли бы использовать sudo перед каждой командой, например:

$ sudo echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward > /dev/null

Аналогичный подход, который мы можем использовать для записи «1» в файл «ip_forward», как и в предыдущих примерах, заключается в повышении уровня процесса записи в файл.

Вот пример:

$ sudo tee /proc/sys/net/ipv4/ip_forward > /dev/null << EOF
1
EOF

Запустим оболочку с помощью sudo -c

Другой популярный подход – запустить другую оболочку от имени пользователя root с параметром -c.

Пример:

$ sudo sh -c 'echo 1 > /proc/sys/net/ipv4/ip_forward'

Запустим оболочку с помощью sudo -s

Другой способ – запустить оболочку с помощью sudo -s, а затем выполнить команду:

$ sudo -s
# echo 1 > /proc/sys/net/ipv4/ip_forward
# ^D
$

С помощью скрипта Bash

Есть еще один способ запустить sudo с перенаправлением или пайпом- создать скрипт bash со всеми вашими командами и запустить этот скрипт с помощью sudo.

Посмотрим, как мы можем это реализовать.

Во-первых, нам нужно создать новый файл с помощью любого текстового редактора, например nano, vim, gedit или любого другого.

Назовем его myscript.sh.

Затем вставьте следующие команды в myscript.sh и сохраните файл:

#!/bin/sh
echo 1 > /proc/sys/net/ipv4/ip_forward

Теперь вам просто нужно запустить файл myscript.sh с помощью команды sudo:

$ sudo myscript.sh

Заключение

Мы рассмотрели несколько способов использовать sudo с перенаправлением вывода или пайпом и избежать ошибок permission denied.

Если вы знаете другой способ сделать это или у вас есть какие-либо вопросы, опубликуйте их в разделе комментариев ниже.

Спонсор данной статьи – студия веб-дизайна

 

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий