Hosts dosyasına bir satır ekleme, sudo kullanırken izin reddedildi - Mac


14

Terminalde bir satır komutu yürüterek Mac bilgisayarımdaki hosts dosyasına bir satır eklemeye çalışıyorum.

Bu sudo kullanarak kolay olacağını düşündüm, ama >>hosts dosyasına eklemek çalıştığınızda "izin reddedildi" döndürür , ancak >ana bilgisayar içeriğini değiştirmeye çalışırsanız çalışır .

sudo echo test >> /etc/hosts
-bash: /etc/hosts: Permission denied
$

sudo echo test > /etc/hosts
Password:
$ 

İşletim sistemi güncel.


/ etc / hostlarınızı değiştirmek için bir metin editörü ( sudo ile başlayan ) kullanın
MrSmith42

1
Ben bu durumda bir metin editörü yardımcı olmaz, bu yüzden otomatikleştirmek yardımcı olacak bir komut dosyası yapmak istiyorum.
Nane

Yanıtlar:


17

Çünkü echokök olarak çalıştırılıyor, ancak kabuk aslında yeniden yönlendirmeyi gerçekleştiriyor. Bunun çalışması için yeni bir kabuk oluşturmalısınız:

sudo -- sh -c "echo test >> /etc/hosts"

Düzenleme: Ben >yeniden yönlendirme çalışıyor aslında görmedim ; Bunu açıklayamam.


Yardımcı programın dikkat teeçekmeye değer olduğunu düşünüyorum, çünkü bir alt kabuk yürütülmesine izin vermek sudo, çoğu üretim ortamında güvenlik nedeniyle engellenir ve engellenmelidir.
Steve Buzonas

9

Daha sonra, yankı örneğinizde yankı çalıştırıldığı için değil, geçerli kullanıcı olarak çalıştırılacak bir yönlendirme yoluyla yankı çalıştırmak, Steve Buzonas'ın önerdiği gibi tee kullanın

 echo 'test' | sudo tee -a /etc/hosts

Sudo şimdi tee komutuna uygulanır. '-A' dosyaya eklenir

Bu ayrıca tee'yi standart çıktıya verir. Terminalinizde 'test'i görmek istemiyorsanız > /dev/null, o satırın sonuna şunu da ekleyin:


1

Önce yeni bir satırın oluşturulmasını sağlamak için şunu kullandım:

sudo -- sh -c "echo  \ \ >> /etc/hosts";sudo -- sh -c "echo 127.0.0.1  testdomain.com >> /etc/hosts"
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.