Comment puis-je rétablir un chmod sur le répertoire etc?


9

J'ai accidentellement exécuté la commande suivante sur le répertoire etc:

sudo chmod -R 700 /etc

Je sais que j'ai fait quelque chose de très mal. Mon terminal imprime désormais:

I have no name!@ubuntu: /$

Comment puis-je restaurer mon répertoire etc à son état antérieur?

J'ai essayé de changer les autorisations mais cela échoue maintenant. En outre, il serait très utile que quelqu'un puisse expliquer ce qui s'est réellement passé lorsque j'ai exécuté cette commande, etc. Il s'agissait uniquement d'autorisations de fichiers. Alors pourquoi tout le système semble-t-il complètement explosé? Pourquoi aucun mot de passe de connexion ne fonctionne-t-il actuellement? Je sais qu'il y a un fichier dans le répertoire etc qui concerne les utilisateurs. Mais comment la modification des autorisations a-t-elle tout mis en danger? Certains détails techniques à ce sujet seraient très utiles.


3
Vous avez besoin d'une liste de répertoires ( ls -laR) d'un autre système en cours d'exécution. Quelle version est la vôtre? Vous pouvez changer les répertoires en 755 et les fichiers en 644, mais certains doivent avoir des modes différents (comme / etc / shadow par exemple).
ott--

4
Lorsque vous tapez, sudovous devriez le lire dans votre tête comme "Je m'accorde le pouvoir ultime sur mon système sans filet de sécurité, suis-je sûr de savoir ce que je fais? Suis-je certain d'avoir tapé ce que je voulais dire?" avant d'appuyer sur retour.
msw

1
Avec un système qui fonctionne, vous pouvez utiliser find /etc -type d ! -perm 755 -exec ls -ld {} \;et find etc -type f ! -perm -644 -exec ls -l {} \;pour rechercher des répertoires et des fichiers avec des modes non standard. Dans Debian, ce ne sont que 2 répertoires et 39 fichiers
ott--

"Mais comment la modification des autorisations a-t-elle tout mis en danger?" - certaines choses qui avaient besoin de lire ces fichiers maintenant ne sont pas autorisées à lire ces fichiers.
user253751

Réponses:


15

Une chose a mal tourné: l'utilisation de sudocette commande. Le -Rcommutateur indique chmodde définir récursivement les autorisations sur ce répertoire, ce qui est, dans tous les cas, une action non recommandée (devrions-nous l'appeler: hérésie) si vous ne savez pas ce que vous faites (une fois que cela m'est arrivé, je n'a pas émis la commande mais une interface graphique défectueuse l'a fait, et mon système est devenu filaire).

Ce n'était que des autorisations de fichiers. Alors pourquoi tout le système semble-t-il complètement explosé?

GNU / Linux est très sensible aux autorisations de fichiers, car il a été construit dans un souci de stabilité et de sécurité . La même chose s'applique à la plupart des programmes exécutés sous GNU / Linux (c.-à-d. apache2Supprime les privilèges root et les utilisations www-data, ou un utilisateur similaire, et votre 700permission ne lui permettrait pas de lire / écrire ses propres fichiers).

Pourquoi aucun mot de passe de connexion ne fonctionne-t-il actuellement?

Comme vous l'avez déjà mentionné, les mots de passe de connexion sont stockés dans un fichier /etc/passwdet seul root (je suppose que vous n'avez pas changé cela) peut le lire, mais l'invite de connexion (ou connexion GUI) utilise un compte sans privilège, donc il ne peut pas lire le fichier.

Mais comment la modification des autorisations a-t-elle tout mis en danger?

Comme ci-dessus, Linux est très sensible aux autorisations de fichiers. Certains programmes vérifient même les autorisations de leurs fichiers de configuration et s'ils ne sont pas attendus, ils ne s'exécuteront pas du tout.

Comment puis-je restaurer mon répertoire etc à son état antérieur?

Si vous utilisez une distribution basée sur RPM, cela peut être fait en utilisant la rpm --setpermscommande, ce serait douloureusement annuler un par un les paquets, sur un système de type Debian, apt-get --reinstall installc'est votre ami. D'autres solutions peuvent être disponibles, mais auraient besoin d'un système de travail pour cela.


5

Voyons, ce que vous avez fait est de définir des autorisations dans tout le répertoire / etc comme lecture / écriture / exécution autorisées uniquement pour le propriétaire du fichier / dir, refusées pour tout le monde. Si vous êtes confus par les autorisations de fichier, vous pouvez en lire plus sur Wikipedia: Permissions UNIX traditionnelles .

La raison pour laquelle vous avez fait exploser votre système est que de nombreux processus ne peuvent plus lire leurs paramètres, ne pouvant pas accéder à / etc. Il ne sera pas facile de restaurer l'intégralité du répertoire / etc à son état précédent. La façon de procéder dépendra de votre distribution, mais cela signifie fondamentalement la réinstallation de chaque paquet contenant n'importe quel fichier dans / etc.

Comme aide rapide pour pouvoir utiliser le système, afin de le réparer correctement (en réinstallant tous les packages avec le contenu dans / etc, comme indiqué ci-dessus), vous pouvez faire:

    # sudo find /etc -type d -exec chmod 775 '{}' \;
    # sudo find /etc -type f -exec chmod 664 '{}' \;

Avec ces deux lignes, vous définissez des autorisations libérales dans tout le répertoire / etc, avec lecture / écriture autorisée pour le propriétaire et le groupe, et lecture autorisée pour tout le monde. La raison des deux chmod est de définir le bit d'exécution uniquement sur les répertoires. Certains processus se plaindront ou échoueront malgré tout, y compris tout exécutable dans / etc, mais vous devriez pouvoir faire la réinstallation décrite ci-dessus.

Veuillez noter que jusqu'à ce que vous récupériez les autorisations d'origine, votre système sera, à tout le moins, dans un état non sécurisé.


2
De plus, certains programmes ne fonctionneront pas; SSH par exemple nécessite des autorisations restrictives sur certains fichiers. /etc/sudoersen est un autre.
Mel Boyce

1
Mais certains fichiers /etcne doivent jamais être lisibles dans le monde entier! Restaurer à partir de sauvegardes, c'est pourquoi vous les avez (ou, c'est pourquoi les gens vous ont invité à faire des sauvegardes).
tripleee

0

700 a supprimé l'accès à de nombreux fichiers pour les groupes et les utilisateurs mondiaux (par exemple, les fichiers ont maintenant des rwx------autorisations). Par exemple, tous les utilisateurs doivent pouvoir lire /etc/passwd. Avec votre configuration, seul root peut désormais lire /etc/passwd. Beaucoup de choses se briseront si vous brisez les autorisations sur les fichiers de /etc/manière imprévisible.

Vous pouvez essayer de reconstruire les autorisations (en supposant que vous pouvez toujours basculer vers root) sur la base d'un serveur qui fonctionne, mais cela est sujet à erreur.

Je suggère de restaurer à /etc/partir de la sauvegarde si vous en avez une (en vous assurant que la restauration remet les autorisations ou, si votre solution de sauvegarde la prend en charge, restaurez uniquement les autorisations).

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.