Question Sudo / su perdu sur une instance Amazon EC2


J'ai une instance Amazon EC2. Je peux me connecter très bien, mais ni "su" ni "sudo" fonctionnent maintenant (ils ont bien travaillé auparavant):

  • "su" demande un mot de passe, mais je me connecte en utilisant les clés ssh, et je ne le fais pas pense même l'utilisateur root a Un mot de passe.

  • "sudo <anything>" est ce que ca:


sudo: /etc/sudoers is owned by uid 222, should be 0 
sudo: no valid sudoers sources found, quitting 

J'ai probablement fait "chown ec2-user / etc / sudoers" (ou plus probablement "chown -R ec2-user / etc "parce que j'en avais marre que rsync échoue), donc c'est mon faute.

Comment puis-je me rétablir? J'ai arrêté l'instance et essayé le "View / Change User Data "sur la console AWS EC2, mais cela n'a pas aidé.

EDIT: Je réalise que je pourrais tuer cette instance et en créer une nouvelle, mais j'espérais éviter quelque chose d'extrême.


7
2017-10-13 16:27


origine




Réponses:


Dans ce genre de situation, je pense que vous devriez pouvoir utiliser une seconde instance pour résoudre le problème:

  • Détache le disque EBS contenant le système cassé
  • Créer une autre instance EC2
  • Joindre et monter le disque sur la nouvelle instance
  • Corrige les permissions
  • Umount, détachez-vous et rattachez-vous à l'instance d'origine

7
2017-11-15 14:44





  1. Arrêtez votre instance actuelle
  2. Détacher le volume existant
  3. Créer un nouveau volume
  4. Joindre un nouveau volume à votre instance en tant que "/ dev / xvda"
  5. Commencez votre instance
  6. Attachez l'ancien volume (un qui a un problème de privilège sudo) à l'instance pendant qu'il s'exécute en tant que "/ dev / sdf"
  7. Connectez-vous à votre instance à l'aide de mastic
  8. Utilisez le lsblk commande pour afficher vos périphériques de disque disponibles et leurs points de montage (le cas échéant) pour vous aider à déterminer le nom de périphérique correct à utiliser.

      ec2-user ~$ lsblk
      NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
      xvdf 202:80 0 100G 0 disk
      xvda1 202:1 0 8G 0 disk /
    

La sortie de lsblk supprime le préfixe / dev / des chemins de périphérique complets. Dans cet exemple, /dev/xvda1 est monté en tant que périphérique racine (notez que MOUNTPOINT est répertorié sous /, la racine de la hiérarchie du système de fichiers Linux), et /dev/xvdf est attaché, mais il n'a pas encore été monté.

  1. Utilisez la commande suivante pour créer un répertoire de points de montage pour le volume. Le point de montage est l'endroit où se trouve le volume dans l'arborescence du système de fichiers et où vous lisez et écrivez les fichiers après avoir monté le volume. Remplacez un emplacement pour mount_point, tel que / data.

    sudo su
    cd /mnt
    mkdir other
    mount /dev/xvdf other
    cd /
    chown -R root:root /mnt/other/etc/
    exit
    
  2. Revenez à AWS et arrêtez l'instance

  3. Détachez les volumes et reconnectez l'ancien volume (maintenant fixe) sous la forme / dev / xvda
  4. Commencez votre instance et maintenant vos autorisations devraient être de retour à ce qu'il était

4
2017-08-28 03:18



Totalement travaillé, mais je devais refaire le nom de / dev / sda1, pas de / dev / xvda. Merci! - Erik Aronesty


J'avais le même problème et comme c'était si difficile, j'ai fait une vidéo pour expliquer la solution. C'est à peu près la même chose que la solution de Rekee sous la forme d'un didacticiel vidéo.

http://youtu.be/gh5CDtRX7Ho

J'espère que cela aide. :)


1
2018-06-03 08:18





On dirait que tu as répondu ça toi-même ...

J'ai probablement fait "chown ec2-user / etc / sudoers" (ou plus probablement "chown   -R ec2-user / etc "parce que j'en avais marre que rsync échoue), donc c'est de ma faute.

De toute façon, je ne pense pas que vous pouvez résoudre ce problème sans gagner un shell root. (Je ne sais pas quelles méthodes de récupération sont possibles sur ec2?)

Si vous avez effectivement récursivement chown / etc, je pense que la reconstruction du serveur est la meilleure solution.


0
2017-11-11 16:53