Avertissement: je suis assez novice dans le domaine des administrateurs système.
J'essaie de configurer la redirection de port dans une instance AWS EC2, cela doit être fait dans la ligne de commande parce que je ne veux pas entrer et éditer quoi que ce soit, cela doit être automatique (cela fait partie d'un processus de construction ).
sudo echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
Permission refusée
Ce qui est étrange, c'est que j'utilise (avec succès) sudo
presque toutes les commandes qui nécessitent des su
privilèges. Si je fais sudo su
avant la commande (l'essayer à la main dans une ssh
session), alors cela fonctionne.
Pourquoi cela? Solutions possibles qui n'impliquent pas sudo su
ou modifications manuelles?
ubuntu
ssh
amazon-ec2
sudo
bevacqua
la source
la source
sudo -i
Réponses:
Vous ne pouvez pas utiliser
sudo
pour affecter la redirection de sortie;>
et>>
(et, pour être complet<
), sont effectuées avec le privilège de l'utilisateur appelant, car la redirection est effectuée par le shell appelant, et non par le sous-processus appelé.Soit
ou
la source
Vous trouverez peut-être plus simple d'utiliser cette commande:
la source
sudo
exécute uniquement votre commande, pas la redirection, en tant que root. Vous aurez besoin de tout envelopper dans une commande où le tout s'exécute en tant que root:la source
La commande
sudo echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
est interprétée comme si vous (non root) écrivez le résultat desudo echo "net.ipv4.ip_forward = 1"
dans /etc/sysctl.conf.Courir
ou
pour exécuter en
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
tant que root.la source
-i
: éditer le fichier sur place.$ a
: ajouter du texte à la dernière ligneL'utilisation de la
sed
commande vous évite les tracas des redirections et des pipelines.Dans ton cas:
sudo sed -i "$ a net.ipv4.ip_forward = 1" /etc/sysctl.conf
la source