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

10

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

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

Donc:

Pourquoi ne devriez-vous jamais modifier le /etc/shadowfichier directement?

Claude Cameron
la source
car il a vos mots de passe cryptés.
Milind Dumbare
7
Parce que tu vas le casser. Peut-être pas aujourd'hui, peut-être pas demain, mais bientôt
ctrl-alt-delor
1
Mettez à jour votre question (en la modifiant) avec un lien expliquant pourquoi vous pensez que c'est le cas. J'ai été l' édition /etc/shadowdepuis plus de 20 ans sans problème, jamais . Et s'il vous plaît soyez si poli de lire les deux minutes d' aide → tour , en particulier le "pas de distractions", "pas de bavardage". C'est la première fois que je devais lire plus de bavardages non pertinents dans une question que de lire les "détails" pertinents de la question.
Anthon
"habituellement vous ne devriez jamais" n'est pas la même chose que "jamais".
roaima
2
@captcha Nonsense. Il y a de bonnes raisons de ne pas le faire. Le fait que vous ne puissiez penser à aucun ne vous autorise pas à appeler les autres ignorants. Soyez gentil .
Gilles 'SO- arrête d'être méchant'

Réponses:

15

Il y a plusieurs raisons de ne pas modifier /etc/passwd, /etc/shadow, /etc/group, /etc/gshadowou /etc/sudoersdirectement, mais plutôt d' utiliser vipw, vigrou visudo:

  • Si vous faites une erreur de syntaxe, vous ne pourrez peut-être plus 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 fichier.
  • Si le fichier est modifié simultanément, celui qui enregistre en dernier remplacera les modifications apportées par les modifications précédentes. Cela inclut à la fois un administrateur modifiant le fichier et le fichier en cours de modification à cause d'un utilisateur appelé passwd, chshou chfnpour changer quelque chose à propos de son compte. Si vous utilisez l'outil approprié, il empêchera les modifications simultanées. C'est surtout une préoccupation sur les systèmes avec plusieurs utilisateurs, moins si vous êtes le seul utilisateur.
  • Sur certains systèmes (principalement ou uniquement * BSD), vipwmet à jour plusieurs fichiers (par exemple /etc/passwdet /etc/master.passwd). Cela ne s'applique pas à Linux.
  • vipwcrée automatiquement une sauvegarde ( passwd-, shadow-, ...), ce qui est utile si vous vous rendez compte que vous avez accidentellement supprimé une ligne. Il n'est utile que si vous vous rendez compte avant la prochaine modification, donc il ne remplace pas le contrôle de version et les sauvegardes, mais il peut être très agréable si vous réalisez votre erreur assez tôt. visudone fait pas ça.

Vous pouvez modifier le fichier directement. Vous prendrez simplement un risque supplémentaire sans réel avantage.

Gilles 'SO- arrête d'être méchant'
la source
Le point n ° 2 est une préoccupation sur tout système où les utilisateurs peuvent modifier leurs propres mots de passe, shells et autres joyeusetés. Plusieurs administrateurs ne sont pas une condition préalable. ☺
JdeBP
3
Et le problème majeur avec cela sur les BSD est plutôt qu'il /etc/shadown'existe pas et qu'il /etc/passwds'agit du mauvais fichier à modifier, car il s'agit d'un fichier généré et non du fichier source. ☺
JdeBP
@JdeBP Sauf que ce n'est pas un problème du tout et le magasin BSD dans master.passwd
Rob
6

Il existe essentiellement deux façons de voir les choses:

  1. Ne modifiez jamais certains fichiers sans utiliser les outils prescrits car vous ne savez probablement pas ce que vous faites et ce n'est pas grave car lesdits outils connaissent mieux et sont toujours disponibles.

  2. Plus réaliste, vous pourriez aussi bien le casser maintenant pendant que vous y réfléchissez afin de pouvoir planifier à l'avance avec une copie de sauvegarde et comparer les différences après cela, car des connaissances de base sur les tenants et aboutissants du loginprocessus initial de base de votre système valent probablement la peine avoir pour quand vous le cassez d'une autre manière plus tard et lesdits outils ne vous aideront pas.

Je suppose que vous pouvez probablement dire ce que je recommande. 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 une nouvelle compétence pendant que vous y êtes. Surtout un tel que celui-ci - le shadowfichier est dans un format assez basique, et le peu que j'en sais que j'ai appris après l'avoir accidentellement accidenté - et ce n'était pas le résultat d'une modification que j'ai apportée à ce fichier.

Mon problème est plutôt survenu après qu'une autre erreur avec une base de données de gestion de packages a conduit le gestionnaire de packages à l'écraser sans enregistrer de sauvegarde et tous les utilisateurs du système ont été rendus kaput . De nouvelles tentatives de réparations ignorantes ne faisaient que propager les dégâts aux autres fichiers associés et il ne m'a pas fallu longtemps pour restaurer la majorité des /etcfichiers texte à partir d'une sauvegarde (moins récente que prévu) .

Une fois que je l'avais fait et vérifié que je l'avais en état de marche, j'ai décidé de tout recommencer délibérément et méticuleusement. Et encore une fois. C'était il y a quelques mois, mais aujourd'hui je reste confiant que je peux diagnostiquer la source d'un loginproblème avec une fois un fichier journal unique sur mon système et le résoudre avec n'importe quel éditeur de base (et peut-être, un coup d'œil ou deux at man 5 problem_file) ne fournissaient qu'un accès de base aux root fs affectés. Cela n'a pas été gagné à bon marché - cela m'a pris la plupart du temps - et les fichiers de configuration associés sont répartis dans tout le répertoire (et même certains - tels que Linux PAM /var/run/no_login- sur d'autres supports) - mais cela en valait la peine. Et cela aurait pu être moins cher avec un peu de prévoyance.

La morale de cette histoire est qu'il est probablement pas une bonne chose que le format de configs mission-critiques comme shadow, passwd, groups, shellsdevrait être si nous opaque que nous devons employer des outils d'édition spéciales qui peuvent ou peuvent ne pas corriger notre travail de manière et pour des raisons que nous ne comprenons pas simplement pour effectuer un simple changement. Au moins, je pense, cela vaut la peine de comprendre exactement ce qu'ils feraient différemment de nous.

Il probablement est une bonne chose, cependant, qu'une fois que nous devenons assez familiers avec l' édition dit des fichiers que nous courons le risque de faire en leur sein et sauver par la suite les erreurs de syntaxe typographiques ou simples qu'il existe des outils à notre disposition qui peut Revérifiez notre travail de manières et pour des raisons que nous comprenons déjà avant d'appliquer nos modifications blase.

mikeserv
la source
3

Contrepoint - si vous aviez besoin de copier un ensemble de connexions utilisateur d'un serveur à un autre, sans connaître leurs mots de passe actuels ou leur en attribuer de nouveaux, alors vous auriez besoin de modifier / etc / shadow directement pour insérer le champ de mot de passe haché. vipw ne vous laisse pas toucher ce champ, c'est juste "*"

Mise à jour: ou dans ce cas, utilisez chpasswd -e "mot de passe haché", mais cela ne peut être fait que sur l'ordinateur directement. Si vous travaillez avec un ensemble de fichiers qui n'ont pas encore été déployés sur une machine (par exemple, une machine virtuelle), la modification directe peut ê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 directement / etc / shadow, il vous suffit de savoir de quoi il s'agit ...

Tomuo
la source
Ou vous pouvez configurer un serveur LDAP.
Kusalananda
0

Une autre raison pour laquelle vous devez modifier ces fichiers est si vous modifiez les fichiers dans une image de système de fichiers que vous démarrerez sur un autre système et que vous devrez déboguer ce système après le démarrage. Par exemple, le système de fichiers épherémal MAAS utilisé sur une mise en service défaillante ou en mode de secours.

Ne dis jamais jamais ... sauf si tu le penses.

Bigtexun
la source