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.
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).sudo
vous 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.find /etc -type d ! -perm 755 -exec ls -ld {} \;
etfind 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 fichiersRéponses:
Une chose a mal tourné: l'utilisation de
sudo
cette commande. Le-R
commutateur indiquechmod
de 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).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.
apache2
Supprime les privilèges root et les utilisationswww-data
, ou un utilisateur similaire, et votre700
permission ne lui permettrait pas de lire / écrire ses propres fichiers).Comme vous l'avez déjà mentionné, les mots de passe de connexion sont stockés dans un fichier
/etc/passwd
et 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.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.
Si vous utilisez une distribution basée sur RPM, cela peut être fait en utilisant la
rpm --setperms
commande, ce serait douloureusement annuler un par un les paquets, sur un système de type Debian,apt-get --reinstall install
c'est votre ami. D'autres solutions peuvent être disponibles, mais auraient besoin d'un système de travail pour cela.la source
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:
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é.
la source
/etc/sudoers
en est un autre./etc
ne 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).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).la source