"sudo echo" bla ">> / etc / sysctl.conf` izni reddedildi


16

Feragatname: Sisadmin eşyalarında oldukça acemi oldum.

Bir AWS EC2 örneğinde bağlantı noktası iletme ayarlamaya çalışıyorum, bu komut satırında yapılması gerekiyor çünkü içeri girip bir şey düzenlemek istemiyorum, otomatik olması gerekiyor (bu bir oluşturma işleminin parçası ).

sudo echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf

İzin reddedildi

Garip olan, ayrıcalıklar sudogerektiren hemen hemen her komut için (başarıyla) kullanıyorum su. Komuttan sudo suönce yaparsam (bir sshoturumda elle denemek ), o zaman çalışır.

Bunun nedenleri? sudo suDüzenleme içermeyen olası çözümler veya manuel düzenlemeler?


Burada aynı sorun: stackoverflow.com/questions/82256/… - Ayrıca, gerçekten riskli olmak istiyorsanız:sudo -i
MirroredFate

Yanıtlar:


46

sudoÇıktı yönlendirmesini etkilemek için kullanamazsınız ; >ve >>(ve bütünlük için <) çağıran kullanıcının ayrıcalığı ile gerçekleştirilir, çünkü yönlendirme çağıran alt süreç tarafından değil çağıran kabuk tarafından yapılır.

Ya da

cp /etc/sysctl.conf /tmp/
echo "net.ipv4.ip_forward = 1" >> /tmp/sysctl.conf
sudo cp /tmp/sysctl.conf /etc/

veya

sudo /bin/su -c "echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf"

15

Bu komutu kullanmak daha kolay olabilir:

echo net.ipv4.ip_forward = 1 | sudo tee -a /etc/sysctl.conf

12

sudoroot olarak yeniden yönlendirmeyi değil, yalnızca komutunuzu çalıştırır. Hepsini, her şeyin root olarak çalıştığı bir komutta sarmanız gerekir:

sudo sh -c 'echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf'

3

Komut sudo echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.confolduğu şeklinde yorumlanır size (nonroot) sonucunu yazma sudo echo "net.ipv4.ip_forward = 1"/etc/sysctl.conf içine.

Çalıştırmak

sudo -s 'echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf'

veya

sudo su -c 'echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf'

echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.confkök olarak çalıştırmak .


1
sudo sed -i "$ a <text>" <file>
  • -i : dosyayı yerinde düzenle.
  • $ a: son satıra metin ekle

sedKomutu kullanmak , yönlendirmelerin ve boru hatlarının zorluğunu önler.

Senin durumunda: sudo sed -i "$ a net.ipv4.ip_forward = 1" /etc/sysctl.conf

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.