J'utilise le terminal depuis un moment maintenant et parfois (en fait, beaucoup fois), j'utilise une commande, comme:
cp /etc/test ~/testFolder/
et j'obtiens cette erreur:
cp: cannot open `/etc/test` for reading: Permission denied
C’est le moment où je me souviens que j’avais oublié la commande Sudo
avant, alors j’appuie sur la flèche Haut, puis sur CTRL+A aller au début de la ligne et y insérer une Sudo
:
Sudo cp /etc/test ~/testFolder/
Il existe des scénarios encore pires dans lesquels vous utilisez vim
pour modifier un fichier. Vous oubliez la commande Sudo
et vous ne voyez pas l'avertissement lorsque le programme démarre, vous modifiez le fichier dans son intégralité. ne le garde pas!
Lorsque vous réalisez que vous le faites tant de fois, cela devient agaçant, surtout si vous êtes comme moi et tapez des commandes sans le Sudo
. Il existe un moyen de résoudre ce problème. Lorsque vous démarrez le terminal, il vous suffit de taper Sudo su
pour utiliser les commandes en tant qu'utilisateur root, mais certains disent qu'il est plus susceptible de faire des erreurs que vous ne regretterez jamais.
Ma question est la suivante: quelle est la meilleure pratique pour exécuter des commandes en tant que root? Utiliser Sudo
et le manquer à chaque fois ou utiliser automatiquement Sudo bash
et risquer de détruire le système entier?
Se détendre. Tout d’abord, rm -rf *
ou tout autre élément tel que s’exécuter en tant qu’utilisateur ordinaire dans votre répertoire personnel est tout aussi catastrophique. Le système peut facilement être restauré, mais ce sont vos données qui importent. Au cours des quelque quinze années d’utilisation de Linux, aucun incident majeur n’aurait pu être évité si je n’utilisais pas root.
(Eh bien, si vous êtes un administrateur système, en particulier sur un serveur de production, c'est une autre affaire. Il suffit de serrer les dents et de le faire correctement; voir l'histoire d'horreur de @ jmartin2279 dans une autre réponse à cette question).
Deuxièmement, si vous avez une invite différente (par défaut, l'invite racine se termine par un hachage, #
, mais vous pouvez la rendre colorée), elle vous rappellera que vous ne vous exécutez pas en tant qu'utilisateur normal.
Troisièmement, vous êtes un être humain intelligent, vous effectuez donc des sauvegardes régulières. Vous faites, n'est-ce pas? Vous savez ce qu'ils disent: il y a deux types de personnes, celles qui font des sauvegardes et celles qui le feront.
Enfin, sortez de ma pelouse, à l'époque, nous n'avions aucune puanteur su
ou Sudo
, nous mémorisions des mots de passe de vingt caractères aléatoires chaque mois et nous l'aimions! (et parfois, nous avons discuté pendant une demi-heure sur une seule ligne de commande avant d'appuyer sur "entrer")
Cependant, vim
vous avertit toujours que vous modifiez un fichier en lecture seule ("/etc/passwd" [readonly]
dans la ligne d'état). De plus, si vous ne pouvez pas écrire dans un fichier, vous pouvez toujours :w /tmp/whatever
.
La meilleure pratique consiste à n'utiliser root que lorsque vous en avez besoin. En utilisant Sudo su
, vous donnez au diable un accès au royaume. Au début, c'était agaçant pour moi, mais me rappeler d’utiliser Sudo
devant une commande m’a évité de commettre d’énormes erreurs. J'ai eu une expérience où utiliser Sudo su
a tout gâché, dans un environnement de travail.
L'heure du conte
Nous utilisions un serveur CentOS pour exécuter une application. Le serveur était vieux et avait été transformé en VM car son matériel était mort/en train de mourir. Un raid s'est produit et le VM a été endommagé. Nos sauvegardes ont également été endommagées. Le seul espoir de récupérer des données était donc de monter VM et d'essayer de tout extraire. J'ai utilisé Sudo su
et je me suis mis au travail. J'ai récupéré environ 10% en exécutant la mauvaise commande par erreur. La base de données a été effacée et nous avons perdu l'application et toutes les données. Je n'ai plus jamais exécuté Sudo su
et je ne le ferai pas. Leçon apprise à la dure.
À l'époque où j'utilisais un système Sudo
(lire: l'ancienne Red Hat), j'avais recours à plusieurs techniques pour me rappeler le moment où je courais en tant que root: une invite rouge, une "racine" dans la barre de titre, etc. Ces jours-ci, je lance Sudo
et je n’ai pas de changement rapide. Je n'ai jamais eu de problème de fonctionnement en tant qu'utilisateur root, ce qui aurait été résolu en ajoutant Sudo
à une commande.
J'ai un raccourci pour éditer des fichiers. J'ai un script bash similaire au suivant dans ~/bin/vi
(et ~/bin
est la première entrée de mon $ PATH):
#!/bin/bash
if [[ ! -w "$1" ]]; then
exec Sudo vim "$@"
else
exec vim "$@"
fi
Je tape ceci de mémoire, alors méfiez-vous des bugs. L'idée est que si le premier fichier nommé Je ne pouvais pas écrire, il utilise automatiquement Sudo
. Évidemment, cette approche n’est pas parfaite, mais elle est suffisante pour un certain nombre d’années.