313 votes

Comment ajouter à un fichier en tant que sudo ?

Je veux le faire :

echo "something" >> /etc/config_file

Mais, comme seul l'utilisateur root a le droit d'écrire sur ce fichier, je ne peux pas le faire. Mais ce qui suit ne fonctionne pas non plus.

sudo echo "something" >> /etc/config_file

Existe-t-il un moyen d'ajouter des données à un fichier dans cette situation sans avoir à l'ouvrir au préalable à l'aide d'un logiciel de traitement de texte ? sudo et ensuite ajouter le nouveau contenu à la main ?

0 votes

J'utilise Ubuntu 9.04 et je suis capable d'utiliser sudo pour toutes les commandes dont j'ai eu besoin jusqu'à présent. La création d'un sub-Shell a fonctionné.

3voto

Joe Points 2507

Il y a peut-être un problème avec le sudo ici et la redirection. Utilisez plutôt un éditeur de texte de votre choix pour ajouter la ligne.

sudo nano /etc/profile

Ou, vous pouvez essayer su à la place

su
echo ‘JAVA_HOME=/usr/lib/jvm/java-6-sun’ >> /etc/profile
exit

0 votes

Malheureusement, cela a donné le même résultat.

1 votes

su -c 'echo "JAVA_HOME=/usr/lib/jvm/java-6-sun" >> /etc/profile' devrait fonctionner. Comme il n'y a rien que le Shell puisse développer par erreur dans l'arg pour faire écho, mettez la commande globale entre guillemets.

0 votes

C'est fantastique. Maintenant, faites-le dans le cadre d'un script.

2voto

Mark K Cowan Points 101

C'est très simple et cela met sudo d'abord, car c'est courant.

sudo sed -i '$a something' /etc/config_file

$a signifie ajouter à la fin du fichier.

0voto

jms Points 318

Cela ne fonctionnera pas si vous essayez de rediriger (à l'aide de >> ) la sortie de sudo. Ce que vous voulez vraiment faire, c'est rediriger la sortie de echo . Je vous suggère d'utiliser votre éditeur favori et d'ajouter cette ligne manuellement dans le fichier /etc/profile . Cela présente l'avantage supplémentaire de vous permettre de vérifier si /etc/profile a déjà fixé JAVA_HOME .

0voto

kenorb Points 22006

Utilice ex - chemin :

sudo ex +'$put =\"FOO\"' -cwq /etc/profile

et remplacer FOO avec votre variable à ajouter.

Dans certains systèmes (tels que OS X), l'option /etc/profile a des permissions 444, donc si vous obtenez toujours permission refusée Vérifiez et corrigez d'abord l'autorisation :

sudo chmod 644 /etc/profile

puis réessayez.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X