Lorsque j'utilise sudo pour effectuer certaines activités avec des fichiers, ces fichiers changent de propriétaire. Comment puis-je utiliser des commandes avec sudo sans changer le propriétaire des fichiers?
Le fichier exemple archivos35.sh vient d'Apache mais j'utilise sed (avec usr admin sudo)
$ ls -l
-rwxr-xrw-. 1 apache apache 181 Aug 5 11:56 archivos35.sh
Utilisateur admin
avec sudo ---
sudo sed -i s/old/new/g archivos35.sh
Mais faire cette commande avec sudo change le propriétaire du fichier
$ ls -l
-rwxr-xrw-. 1 admin apache 181 Aug 5 11:56 archivos35.sh
Comment puis-je éviter d'utiliser la commande avec sudo pour changer le propriétaire du fichier? Je veux juste apporter des modifications au fichier sans modifier son propriétaire.
Réponses:
Si vous devez utiliser
sudo
pour modifier le fichier, utilisez-le pour basculer vers le bon utilisateur. Vous n'avez pas besoin de passer à root, c'est juste la valeur par défaut. Donc, dans votre cas, vous voudriez faire:Cela exécutera la
sed
commande en tant qu'utilisateurapache
.la source
Vous ne changez pas vraiment la propriété du fichier, vous supprimez plutôt l'ancien fichier et en créez un nouveau. Lorsque vous faites cela, le nouveau fichier est créé et appartient à l'uid du créateur. Pour éviter cela, vous devez modifier le fichier en place. Modifiez-le à l'aide d'un éditeur de texte qui enregistre en remplaçant le fichier d'origine en place. Ou exécutez vos commandes sed avec sortie dans un fichier temporaire, puis copiez le fichier temporaire sur le fichier d'origine.
la source
-i
option aka--in-place
modifierait réellement inplace ...ed
ouex
ouvi
/vim
.