Estoy tratando de agregar una línea en el archivo de hosts en mi Mac mediante la ejecución de un comando de una línea en la terminal.
Pensé que sería fácil usar sudo, pero devuelve "permiso denegado" cuando intento agregar >>
al archivo de hosts, pero funciona si intento reemplazar >
el contenido de los hosts.
sudo echo test >> /etc/hosts
-bash: /etc/hosts: Permission denied
$
sudo echo test > /etc/hosts
Password:
$
El sistema operativo está actualizado.
Respuestas:
Eso es porque
echo
se está ejecutando como root, pero el shell es el que realmente realiza la redirección. Necesitas generar un nuevo shell para que esto funcione:Editar: no he visto el hecho de que la
>
redirección funciona; No puedo explicar eso.fuente
tee
porque permitir una ejecución de subshell desdesudo
es y debe bloquearse en la mayoría de los entornos de producción por razones de seguridad.En lugar de ejecutar echo a través de una redirección que se ejecutará como su usuario actual, no root como echo se está ejecutando en su ejemplo, use tee como sugiere Steve Buzonas
El sudo ahora se aplica al comando tee. La '-a' se agrega al archivo
Esto también generará tee a salida estándar. Si no desea ver 'prueba' en su terminal, también agregue:
> /dev/null
al final de esa línea.fuente
Para asegurarme de que primero se creó una nueva línea, usé esto:
fuente