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