sudo make me a sandwich 1

Posted by kAworu Thu, 29 Jan 2009 16:41:00 GMT

pffff

Je me retrouve souvent confronté devant ce problème:

% sudo some_command > /etc/some/other/file

Le problème c’est que l’utilisateur courant n’a pas les droit sur le fichier, et que le fichier est ouvert par le shell courant (qui n’est pas en root). Par exemple, si je veux mettre un serveur OpenDNS dans mon resolv.conf:

% sudo echo 'nameserver 208.67.222.222' > /etc/resolv.conf

Ne marche évidement pas. Il faut aller l’éditer avec, par exemple, un sudo $EDITOR /etc/resolv.conf (remarquez le subtile subterfuge afin d’éviter un inutile nième troll ee VS nano).

encore un peu de tee?

sur un random-{forum,irc-chan,ml,cabaret} j’ai trouvé cette perl (non bapt, non.) e :

% echo 'nameserver 208.67.222.222' | sudo tee /etc/resolv.conf

Et comme tout bon lecteur pourra RTFM dans man tee l’option -a permet de faire des sorts très puissants (et de remplacer >>):

% echo 'nameserver 208.67.222.220' | sudo tee -a /etc/resolv.conf