J'ai récemment tapé la commande
sudo chmod 777 -R /
après cela, certaines choses comme
sudo -i
ne fonctionnent pas normalement. Je me demande donc s'il existe un moyen de réinitialiser les autorisations de dossier à leur état d'origine?
ubuntu
permissions
chmod
Braiam
la source
la source
Réponses:
Il est possible de revenir de cette situation désordonnée.
J'ai exécuté à nouveau le même type sur le problème (un bug dans un script que j'écrivais) et l'ai résolu, mais vous devez demander l'aide d'un expert. Soyez très prudent!
Tout d'abord, ma situation était plus facile à résoudre car j'avais un système à double démarrage (Ubuntu et mon ancienne installation Fedora), mais exécuter le système d'exploitation à partir d'un CD / DVD ou d'une clé USB devrait faire la même chose.
J'ai d'abord monté mes systèmes de fichiers comme ceci (n'oubliez pas de créer les points de montage):
Ensuite, j'ai exécuté la commande suivante (mon problème n'était que dans quelques répertoires - critiques -) pour copier les autorisations du système en cours d'exécution sur le système en désordre (en fait, dans mon cas, j'ai installé un système Ubuntu dans Virtual Box sous fedora et y a obtenu les autorisations):
Et puis j'ai exécuté le script restoreperms.sh.
J'ai pu à nouveau démarrer sur Ubuntu.
Le contenu de restoreperms.sh sera quelque chose comme:
Je ne l'ai pas testé, mais cela doit aussi fonctionner pour les propriétaires et les groupes de propriétaires. Quelque chose comme:
Bien sûr, vous devez faire attention ici, que l'UID et le GID sont les mêmes sur les deux systèmes, mais pour les utilisateurs et les groupes liés au système, cela ne devrait pas être un problème.
Éditer:
En outre, la définition du propriétaire annulera les indicateurs SGID et SUID , ce qui provoque des problèmes étranges (par exemple, vous ne pourrez pas exécuter sudo sauf si l'autorisation est 4755). Vous devez et ne devez définir des autorisations qu'APRÈS avoir défini les propriétaires. CONSERVEZ les informations complètes sur l'autorisation de fichier ainsi que les informations sur le propriétaire.
Rk:
Maintenant, j'ai ces commandes dans un cronjob, en cours d'exécution tous les jours (peut-être des semaines) afin de conserver ces informations. Cela facilitera la solution la prochaine fois, mais, bien sûr, comme je l'ai maintenant, cela ne se reproduira plus. ;-) Quelque chose comme ça:
0 12 * * * /usr/bin/find / -exec /usr/bin/stat --format="/bin/chmod %a %n" {} \; |/bin/bzip2 -c > /tmp/restore_chmod.$(/bin/date +%w).sh.bz2
0 13 * * * /usr/bin/find / -exec /usr/bin/stat --format="/bin/chown %U:%G %n" {} \; |/bin/bzip2 -c > /tmp/restore_chown.$(/bin/date +%w).sh.bz2
La bonne commande (combinée) ressemble plus à:
Notez que des précautions supplémentaires peuvent être nécessaires pour prendre en compte les parenthèses dans les noms de fichiers (sous les locales, par exemple) et que chown peut annuler silencieusement les bits setuid et setgid définis par chmod. Dans ce dernier cas, qui casserait, disons, / bin / su et / usr / bin / sudo, vous devrez peut-être échanger l'ordre des clauses exec ci-dessus.
la source
Après avoir récupéré sudo ou sélectionné le mode de récupération au démarrage
Il est possible de récupérer un système entier en utilisant des débits qui vérifient l'intégrité des fichiers et les autorisations.
à partir de la page de manuel:
ou limité à un chemin spécifique par exemple
/usr
::ou limité à un ensemble de chemins multiples, par exemple:
/sbin /etc /var
la source
chmod a-x /bin/ping
et je n'aidebsums -c
pas signalé ce fichier.Regardez toujours ce que vous exécutez en tant que sudo.
Ce fil explique que vous pouvez redéfinir manuellement certaines autorisations, et un script y aide, mais c'est toujours un gros travail. Suivez plutôt les conseils de la bande de roulement pour enregistrer vos packages installés (marquages) et réinstaller le système d'exploitation, puis appliquez vos marquages de packages enregistrés pour récupérer vos applications.
la source
Pour autant que je sache, seuls les packages et RPM System V proposent une commande pour réparer les autorisations de fichiers. Sur System V (Solaris) c'est pkgchk, avec RPM c'est rpm --setperms.
Malheureusement, aucune commande de ce type ne semble exister pour les paquets Debian / Ubuntu - mais je peux me tromper ici.
Mais même avec l'aide de ces commandes, ce n'est pas une tâche triviale de ramener votre système à un état sain, et en le réparant, vous pouvez facilement causer de nouveaux dommages à votre système - si vous ne faites pas attention.
Autre que Joseph a dit, vous n'êtes pas le premier, et vous ne serez pas le dernier à entrer dans une telle commande. Mais l'idée seule, de changer les autorisations de fichiers en 777 sur un système Unix, est une forte indication que vous n'êtes pas très expérimenté avec ce type de système. Le mieux que vous puissiez faire dans cette situation est de sauvegarder à nouveau ce dont vous aurez besoin (répertoires personnels, fichiers de configuration, fichiers courrier?) Et d'essayer une nouvelle installation.
Et vous devez être très, très prudent lorsque vous restaurez vos fichiers de sauvegarde - endommagés -.
Bonne chance!
PS: Je me demande juste quel genre de problème tu voulais résoudre?
la source
Wow, tu l'as tué. C'est mort! Essayez de vous connecter et d'utiliser la machine en tant que root (puisque vous l'avez activé), puis changez l'appartenance au groupe de root en utilisateurs. Cela peut ou peut ne pas fonctionner car je ne l'ai jamais essayé auparavant mais ça vaut le coup.
la source
Vous ne pouvez pas annuler une
chmod
opération; du moins pas dans le sens d'un retour à un cadre précédent, ce que demande cette situation. On peut soutenir que vous pouvez annuler unechmod
opération, enchmod
replaçant chaque fichier et répertoire dans leur mode d'origine - mais ils ne sont pas tous identiques; la détermination des modes d'origine est délicate (comme expliqué dans les autres réponses).la source