GNU/Linux >> Tutoriels Linux >  >> Linux

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

Une chose a mal tourné :l'utilisation de sudo avec cette commande. Le -R le commutateur indique chmod pour définir de manière récursive 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'ai pas lancez la commande, mais une interface graphique défectueuse l'a créée et mon système est devenu câblé).

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 avec stabilité et sécurité à l'esprit. Il en va de même pour la plupart des programmes exécutés sous GNU/Linux (c'est-à-dire apache2 abandonne les privilèges root et utilise www-data , ou un utilisateur similaire, et votre 700 l'autorisation ne lui permettrait pas de lire/écrire ses propres fichiers).

Pourquoi est-ce qu'aucun mot de passe de connexion ne fonctionne maintenant ?

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

Mais comment la modification des autorisations a-t-elle tout compromis ?

Comme indiqué 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 fonctionneront 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 le rpm --setperms commande, ce serait douloureusement revenir un par un les paquets, sur le système de type Debian apt-get --reinstall install est votre ami. D'autres solutions peuvent être disponibles, mais elles nécessitent un système fonctionnel.


Voyons, ce que vous avez fait est de définir des autorisations dans l'ensemble du répertoire /etc comme lecture/écriture/exécution autorisées uniquement pour le propriétaire du fichier/répertoire, refusées pour tout le monde. Si vous êtes confus par les autorisations de fichiers, vous pouvez en savoir plus sur Wikipedia :autorisations 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 plus 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 en gros, cela signifie réinstaller chaque paquet contenant un fichier dans /etc.

En tant que pansement rapide pour pouvoir utiliser le système, afin de le réparer correctement (réinstaller 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éfinirez des autorisations libérales dans tous les répertoires /etc, avec la lecture/écriture autorisée pour le propriétaire et le groupe, et la lecture autorisée pour tous les autres. 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 effectuer la réinstallation que j'ai 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é.


Linux
  1. Comment Linux gère-t-il plusieurs séparateurs de chemins consécutifs (/home////nom d'utilisateur///fichier) ?

  2. Comment /etc/motd est-il mis à jour ?

  3. CentOS / RHEL :Comment récupérer à partir d'un fichier /etc/passwd supprimé

  4. "sudo:/etc/sudoers est accessible en écriture par le monde" - Comment corriger les autorisations du fichier sudoers

  5. Comment vérifier la syntaxe du fichier /etc/ssh/sshd_config

La bonne façon de modifier les fichiers /etc/passwd et /etc/group sous Linux

Comprendre le répertoire /etc/skel sous Linux

Comprendre les fichiers /proc/mounts, /etc/mtab et /proc/partitions

Commande grpck – Supprimez les entrées corrompues ou en double dans les fichiers /etc/group et /etc/gshadow.

Comment inclure tous les fichiers d'un répertoire dans un script shell (/etc/init.d/iptables dans ce cas)

Quelle est la connexion entre les répertoires /etc/init.d et /etc/rcX.d sous Linux ?