免責事項:私はシステム管理者の初心者です。
私はAWS EC2インスタンスでポート転送を設定しようとしていますが、これはコマンドラインで実行する必要があります。何も行って何も編集したくないので、自動にする必要があります(ビルドプロセスの一部です) )。
Sudo echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
アクセス拒否
奇妙なことに、Sudo
特権を必要とするほとんどすべてのコマンドでsu
を(成功して)使用しています。私が行った場合 Sudo su
コマンドの前に(ssh
セッションで手動で試してみてください)、それが機能します。
この背後にある理由は?含まれない可能な解決策Sudo su
または手動で編集しますか?
Sudo
を使用して出力リダイレクトに影響を与えることはできません。 >
および>>
(そして、完全を期すために、<
)は、リダイレクトが呼び出されたサブプロセスではなく、呼び出し元のシェルによって行われるため、呼び出し元のユーザーの権限で実行されます。
どちらか
cp /etc/sysctl.conf /tmp/
echo "net.ipv4.ip_forward = 1" >> /tmp/sysctl.conf
Sudo cp /tmp/sysctl.conf /etc/
または
Sudo /bin/su -c "echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf"
このコマンドを使用する方が簡単な場合があります。
echo net.ipv4.ip_forward = 1 | Sudo tee -a /etc/sysctl.conf
Sudo
は、リダイレクトではなくコマンドのみをrootとして実行します。すべてをrootとして実行するコマンドですべてをラップする必要があります。
Sudo sh -c 'echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf'
コマンドSudo echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
は次のように解釈されますyo(nonroot)Sudo echo "net.ipv4.ip_forward = 1"
の結果を/etc/sysctl.confに書き込みます。
走る
Sudo -s 'echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf'
または
Sudo su -c 'echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf'
rootとしてecho "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
を実行します。
Sudo sed -i "$ a <text>" <file>
-i
:ファイルを編集します。$ a
:最終行にテキストを追加しますsed
コマンドを使用すると、リダイレクトやパイプラインの煩わしさを回避できます。
あなたの場合:Sudo sed -i "$ a net.ipv4.ip_forward = 1" /etc/sysctl.conf