kAworu's avatar

sudo make me a sandwich

publié par kAworu
il y a plus de trois ans

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
deux commentaires

écrire un commentaire

  1. Migou il y a onze mois Migou's avatar

    moi, je fais ceci sudo bash # qui permet d'obtenir un shell super-utilisateur, puis somecommand > /somepath/somefile

  2. kAworu il y a onze mois kAworu's avatar

    Oui évidement avec un shell root, ça marche. Le but du truc c'est de justement ne pas en ouvrir un.

écrire un commentaire:


(utilisé pour gravatar, ne sera pas affiché)



tu peux utiliser la syntaxe markdown :)