Portál AbcLinuxu, 12. května 2025 15:41
Dobry den, chtel bych za pomoci prikazu nize pridat dns server do daneho souboru, ale haze mi to "bash: /etc/resolv.conf: Permission denied"
sudo echo "192.168.1.1" >> /etc/resolv.conf
Netusite prosim, cim by to mohlo byt?
Prava pro zapis na /etc/resolv.conf?
$ ls -la /etc/ | grep resolv -rw-r--r-- 1 root root 23 2008-12-01 12:51 resolv.conf
sudo sh -c "echo "192.168.1.1" >> /etc/resolv.conf"
Toto funguje
sudo sh -c "echo "192.168.1.1" >> /etc/resolv.conf"
Proc predchozi priklad nefungoval? Btw, ten nameserver tam samozrejme ma byt, nejak mi vypadnul
Protože pod rootem běželo jenom to echo, přesměrování do resolv.conf bylo pro příkaz sudo, který běží pod tvým uživatelem. Kdežto ve druhém případě je přesměrování součástí příkazu spuštěného v rámci sudo, tedy pod rootem.
sudo 'echo "192.168.1.1" >> /etc/resolv.conf'Každopádně do toho souboru nemůžete jen tak napsat 192.168.1.1, nemáte na mysli nameserver 192.168.1.1?
nevim jak u tebe, ale ja musim mit v /etc/resolv conf radek:
nameserver 192.168.1.1
Moje používané řešení je trochu jiné ... mam soubor /etc/resolv.conf.xxx a ten překopírovávám na /etc/resolv.conf, když dostanu IP adresu přes dhcp včetně dns serverů. Čili v Vašem případě by to bylo sudo cp /etc/resolv.conf.xxx /etc/resolv.conf.
přesně tohle dělám u notebooku taky. Mám záložní soubor resolv.conf, který přepíšu při připojení do místní sítě. Jinak edituji přes pico (pico /etc/resolv.conf)
Netusite prosim, cim by to mohlo byt?
Jenom pro upřesnění - přesměrování provádí bash, takže výstup příkazu sudo echo ...
(spuštěného pod rootem) je přesměrován do /etc/resolv.conf
, ale protože tohle probíhá pod původním uživatelem (v okamžiku provedení přesměrování nemá shell tušení, že se bude provádět nějaké žonglování s oprávněními), tak pochopitelně dojde k odmítnutí zápisu.
Čili priorita operátorů, závorek? Kdyby dělal autor sudo na skript, tak by mu to mělo proběhnout ok ...
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.