J'ai apporté de longues modifications à un fichier de configuration sur un ordinateur Linux Ubuntu avec l'éditeur vi. Malheureusement, j'ai d'abord oublié sudo, alors maintenant je suis dans l'éditeur, mais je ne peux pas enregistrer mes modifications en raison de droits manquants. Puis-je envoyer un message rétroactif à l'utilisateur sur ce terminal, ou quelle serait la meilleure mesure à prendre?
linux
permissions
sudo
vi
Simon
la source
la source
Réponses:
Dans ce cas, j'écris le fichier avec
:w /tmp/tmpfile
. Ensuite, je sors et je passe/tmp/tmpfile
à mon ancien fichier avec les droits sudo.la source
vi
défaut (qui est probablement 666, ET avec l'inverse de votre «umask»), remplace le propriétaire du fichier par votre UID (c'était «root», n'est-ce pas?), et brise les liens durs./tmp
répertoire. (2) Si vous avez des utilisateurs vraiment mauvais sur votre système, ils pourraient remplacer votre/tmp/tmpfile
entre lorsque vous l'écrivez (depuisvi
) et lorsque vous le copiez sur le fichier de configuration du système que vous éditiez. Il est plus sûr de placer le fichier temporaire dans un répertoire auquel vous seul avez accès.De SO :
En fait, je me retrouve à utiliser cette façon de le faire plus fréquemment maintenant:
Je pense que c'est un peu plus intuitif, car je sais ce
:%!
que ça fait, alors que je n'ai pas une compréhension viscérale de:w !
. De plus, il est facile de rater l'espace très important entre lew
et le!
.la source
vi
commandes peuvent être de plusieurs lettres, donc il pourrait théoriquement y avoir unewfoo
commande " ", donc si vous voulez écrire dans un fichier appelé "foo
", vous devez dire ":w foo
". C'est à dire, vous avez besoin d'un espace après ":w
". En ce qui concerne «:w !
», vous savez ce qu'est «:!
», n'est-ce pas? «:!date
» Exécute unedate
commande « ». Ainsi ":w !xyz
" écrit le tampon, mais dans une commande plutôt que dans un fichier.%
bien?%
peut être plus difficile.) (3) OK, je vais vous aider un peu.tee
est un programme qui vous permet d'écrire des informations à plusieurs endroits. Par exemple,date | tee cody
écrira la date et l'heure actuelles dans un fichier appelécody
… (Suite)date | tee cody > bugstein
écrira la date et l'heure actuelles dans un fichier appelécody
ainsi que dans un fichier appelébugstein
. - Tu comprendssudo
? Il vous permet d'exécuter une commande avec les privilèges d'un autre utilisateur (généralement root). Par exemple,ls /root
échouera généralement, car vous n'y avez pas accès/root
. Maissudo ls /root
ça marchera. - Un effet secondaire malheureux du fonctionnement d'Unix est qu'ilsudo ls /root > /root/cody
échouera, car vous n'y avez pas accès/root
et vous ne pouvez donc pas y écrire/root/cody
. … (Suite)Impossible d'ouvrir un autre terminal et de modifier temporairement les droits d'accès au fichier?
la source
:w !sudo tee % solution
wfaulk a posté