Отказ от ответственности: я довольно новичок в материалах сисадмина.
Я пытаюсь настроить переадресацию портов в экземпляре AWS EC2, это должно быть сделано в командной строке, потому что я не хочу входить и редактировать что-либо, это должно быть автоматическим (это часть процесса сборки ).
sudo echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
В доступе отказано
Странная вещь, которую я (успешно) использовал sudo
почти для каждой команды, которая требовала su
привилегий. Если я делаю sudo su
перед командой (пробуя это вручную в ssh
сеансе), то это работает.
Причины этого? Возможные решения, которые не включают sudo su
или ручное редактирование?
ubuntu
ssh
amazon-ec2
sudo
bevacqua
источник
источник
sudo -i
Ответы:
Вы не можете использовать,
sudo
чтобы повлиять на перенаправление вывода;>
и>>
(и, для полноты<
), выполняются с привилегией вызывающего пользователя, потому что перенаправление выполняется вызывающей оболочкой, а не вызываемым подпроцессом.Либо сделать
или
источник
Возможно, вам будет проще использовать эту команду:
источник
sudo
запускает только вашу команду, а не редирект, как root. Вам нужно будет обернуть все это в команду, где все работает как root:источник
Команда
sudo echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
интерпретируется так, что вы (не root) записываете результатsudo echo "net.ipv4.ip_forward = 1"
в /etc/sysctl.conf.Бегать
или
запускать
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
от имени root.источник
-i
: редактировать файл на месте.$ a
: добавить текст в последнюю строкуИспользование
sed
команды позволяет избежать хлопот перенаправлений и конвейеров.В твоем случае:
sudo sed -i "$ a net.ipv4.ip_forward = 1" /etc/sysctl.conf
источник