Cuando uso sudo para hacer algunas actividades con archivos, estos archivos cambian de propietario. ¿Cómo puedo usar comandos con sudo sin cambiar el propietario de los archivos?
El archivo de ejemplo archivos35.sh es de apache pero uso sed (con usr admin sudo)
$ ls -l
-rwxr-xrw-. 1 apache apache 181 Aug 5 11:56 archivos35.sh
Usuario admin
con sudo ---
sudo sed -i s/old/new/g archivos35.sh
Pero hacer ese comando con sudo cambia el propietario del archivo
$ ls -l
-rwxr-xrw-. 1 admin apache 181 Aug 5 11:56 archivos35.sh
¿Cómo puedo evitar usar el comando con sudo para cambiar el propietario del archivo? Solo quiero hacer cambios en el archivo sin modificar su propietario.
Respuestas:
Si necesita usar
sudo
para modificar el archivo, úselo para cambiar al usuario correcto. No necesita cambiar a root, eso es solo lo predeterminado. Entonces, en su caso, querría hacer:Eso ejecutará el
sed
comando como el usuarioapache
.fuente
Realmente no está cambiando la propiedad del archivo, sino que está eliminando el archivo antiguo y creando uno nuevo. Cuando haces eso, el nuevo archivo se crea propiedad del uid del creador. Para evitar esto, debe modificar el archivo en su lugar. Edítelo usando un editor de texto que guarde sobrescribiendo el archivo original en su lugar. O ejecute sus comandos sed con salida en un archivo temporal y luego copie el archivo temporal sobre el archivo original.
fuente
-i
opción de alias--in-place
en realidad modificar inplace ...ed
oex
ovi
/vim
.