Pourquoi ne devriez-vous JAMAIS modifier le file / etc / shadow directement?

Dans une autre réponse ici sur UNIX et Linux Stack Exchange Michael D Parker a écrit , en réponse à quelqu'un disant que cela était «sûr», que:

Habituellement, vous ne devez JAMAIS modifier le file / etc / shadow directement.

Alors:

Pourquoi ne devriez-vous jamais éditer le file /etc/shadow directement?

Il y a plusieurs raisons de ne pas modifier directement /etc/passwd , /etc/shadow , /etc/group , /etc/gshadow ou /etc/sudoers , mais d'utiliser vipw , vigr ou visudo :

  • Si vous faites une erreur de syntaxe, vous risquez de ne plus pouvoir vous connecter ou devenir root. L'utilisation des outils viXXX réduit ce risque car l'outil effectue des vérifications d'intégrité avant de modifier le file.
  • Si le file est édité simultanément, celui qui sauvegarde en dernier replacea les modifications apscopes par les éditions précédentes. Cela inclut à la fois un administrateur qui édite le file et le file en cours de modification, car un user a appelé passwd , chsh ou chfn pour modifier quelque chose à propos de leur count. Si vous utilisez l'outil approprié, cela empêchera les modifications simultanées. C'est surtout une préoccupation sur les systèmes avec plusieurs users, less si vous êtes le seul user.
  • Sur certains systèmes (principalement ou uniquement * BSD), vipw met à jour plusieurs files (par exemple /etc/passwd et /etc/master.passwd ). Cela ne s'applique pas à Linux.
  • vipw crée automatiquement une sauvegarde ( passwd- , shadow- , …), ce qui est utile si vous vous rendez count que vous avez accidentellement supprimé une ligne. Ce n'est utile que si vous réalisez avant la prochaine édition, de sorte qu'il ne remplace pas le contrôle de version et les sauvegardes, mais il peut être très agréable si vous vous rendez count de votre erreur assez tôt. visudo ne fait pas cela.

Vous pouvez modifier le file directement. Vous allez prendre un risque supplémentaire sans réel avantage.

Il y a essentiellement deux façons de regarder ceci:

  1. Ne modifiez jamais certains files sans utiliser les outils prescrits car vous ne savez probablement pas ce que vous faites et c'est correct parce que ces outils connaissent mieux et sont toujours disponibles.

  2. De façon plus réalist, vous pouvez aussi le rompre maintenant pendant que vous y réfléchissez afin de pouvoir planifier une copy de sauvegarde et comparer les différences après l'avoir fait car les connaissances de base sur les inputs et sorties du process de login initiale de base de votre système sont probablement ça vaut le coup d'avoir quand tu le casseras d'une autre manière plus tard et ces outils ne t'aideront pas.

Je suppose que vous pouvez probablement dire ce que je recommand. Je dis que si un sujet vous intéresse même pour un moment, vous pourriez tout aussi bien capitaliser sur cette curiosité et acquérir de nouvelles compétences pendant que vous y êtes. Surtout un comme celui-ci – le file de l' shadow est dans un format assez basique, et ce que je sais peu j'ai appris après l'avoir cassé accidentellement – et ce n'était pas le résultat d'une édition que j'ai faite à ce file.

Plutôt mon problème s'est produit après une autre erreur avec une database de gestion de package conduit le gestionnaire de packages pour écraser sans save une sauvegarde et tous les users sur le système ont été faites kaput . D'autres tentatives de bousculades ignorantes ne font que propager les dommages à d'autres files connexes et il ne fallut pas longtime avant de restaurer la majorité des files text de /etc à partir d'une sauvegarde (less récente qu'espérée) .

Une fois que je l'avais fait et vérifié que je l'avais en état de travail, j'ai décidé délibérément, méticuleusement tout recommencer. Et encore une fois. C'était il y a quelques mois, mais aujourd'hui, je rest confiant que je peux diagnostiquer la source d'un problème de login avec un seul file journal sur mon système et l'adresser à n'importe quel éditeur de base (et peut-être coup d'oeil ou deux à man 5 problem_file ) fourni seulement l'access de base à la racine fs affecté. Il n'a pas été gagné à peu de frais – il m'a fallu presque toute une journée – et les files de configuration associés sont répartis dans tout le directory (et même certains – comme Linux PAM /var/run/no_login – sur d'autres montures) Faire. Et cela aurait pu être less cher avec un peu de prévoyance.

La morale de cette histoire est que ce n'est probablement pas une bonne chose que le format des configurations essentielles à la mission comme l' shadow , le passwd , les groups , les shells soit si opaque pour nous que nous devions utiliser des outils d'édition spéciaux travailler de façons et pour des raisons que nous ne comprenons pas juste pour effectuer un simple changement. Au less, je pense que cela vaut la peine de comprendre exactement ce qu'ils feraient différemment.

C'est probablement une bonne chose, une fois que nous nous sums suffisamment familiarisés avec l'édition de ces files que nous risquons de faire en leur sein et que nous leur avons ensuite épargné des erreurs typocharts ou syntaxiques simples, qu'il existe des outils à notre disposition notre travail de façons et pour des raisons que nous comprenons déjà avant d'appliquer nos modifications blase.

Point de countur: si vous aviez besoin de copyr un set de connections user d'un server à un autre, sans connaître leurs passwords actuels ou en leur atsortingbuant de nouveaux, vous devez éditer / etc / shadow directement pour insert le champ haché. vipw ne vous permet pas de toucher ce champ, c'est juste "*"

Mise à jour: ou dans ce cas, utilisez chpasswd -e "hashed password", mais cela ne peut se faire que directement sur l'ordinateur. Si vous travailliez avec un set de files qui n'ont pas encore été déployés sur une machine (par exemple une machine virtuelle), l'édition directe pourrait être votre seule solution.

c'est-à-dire qu'il y a généralement un outil pour faire ce que vous voulez faire sans éditer / etc / shadow directement, il vous suffit de savoir ce que c'est …

Une autre raison pour laquelle vous devez éditer ces files est si vous modifiez les files dans une image de système de files que vous allez démarrer sur un autre système et que vous devez déboguer ce système après le démarrage. Par exemple, le système de files éphémère MAAS utilisé en cas de défaillance de la mise en service ou en mode de secours.

Ne jamais dire jamais … sauf si vous le voulez.