linux - una - Permiso denegado al intentar agregar un archivo a un archivo de propiedad raíz con sudo
permisos terminal ubuntu (6)
Ejecutar bash como sudo :
$ sudo bash -c "cat add_file >> /etc/file"
$ whoami;sudo bash -c "whoami";whoami
iiSeymour
root
iiSeymour
Este es el comando de shell que da como resultado "Permiso denegado" cuando intento adjuntar los datos de un archivo a otro archivo con sudo:
sudo cat add_file >> /etc/file
El archivo en /etc/file es propiedad de root (es decir, yo) y sus permisos son rw-r--r-- . ¿Debería convertirme en root por un momento para que funcione o hay una solución para el sudo ?
Enfoque similar a @gniourf_gniourf respuesta, pero utilizando ex :
sudo ex +"r in.txt" -cwq out.txt
que es equivalente a vi / vim Ex-mode ( -e ).
Este ejemplo de edición en el lugar es un enfoque simple, seguro y conveniente, ya que no utiliza ninguna tubería de shell, FIFO o shell dentro de las soluciones de shell.
Para aumentar el rendimiento para fines de scripting, considere usar el modo de silencio ( -s ).
Está intentando escribir el resultado del comando sudo cat add_file en el archivo / etc / file. Y al parecer no tienes ese derecho.
man sudo da ese ejemplo:
To make a usage listing of the directories in the /home partition. Note that this runs the commands in a sub-shell to make the cd and file redirection work. $ sudo sh -c "cd /home ; du -s * | sort -rn > USAGE"
Así que deberías intentar:
sudo sh -c "cat add_file >> /etc/file"
Intenta hacer esto en su lugar:
sudo tee -a /etc/file < add_file
Es más ligero que ejecutar el sh -c command bash o sh -c command
Una posibilidad divertida es usar ed (el editor estándar):
sudo ed -s /etc/file <<< $''r add_file/nwq''
Sé que no obtendré más votos por esta maravillosa respuesta, pero quería incluirla aquí de todas formas (porque es gracioso). ¡Hecho!
tratar
sudo bash -c ''cat add_file >> /etc/file''
o
cat add_file | sudo tee -a /etc/file > /dev/null