www una totales todos subcarpetas permisos modificar los dar como carpetas carpeta cambiar archivos linux bash shell command-line sudo

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