Je suis entré par erreur
chsh -s /usr/bin
au lieu de
chsh -s /bin/bash
et maintenant je ne peux pas me connecter à un shell racine, comment puis-je démarrer un shell bash en tant que root manuellement?
sudo vipwmarche?
Je suis entré par erreur
chsh -s /usr/bin
au lieu de
chsh -s /bin/bash
et maintenant je ne peux pas me connecter à un shell racine, comment puis-je démarrer un shell bash en tant que root manuellement?
sudo vipwmarche?
Réponses:
Bien que root n'ait pas accès, un utilisateur du groupe sudo peut toujours exécuter des commandes privilégiées - il semble que l'erreur ne se trouve pas dans sudo, mais ailleurs dans le sudo chsh commande (par exemple, erreur chsh).
En tant que tel, votre sudo fonctionne apparemment.
Le fichier passwd peut être édité avec:
sudo vipw
Et le shell racine a changé manuellement.
(première ligne de /etc/passwdgénéralement)
root:x:0:0:root:/root:/bin/bash
Fom man vipw
Les commandes vipw et vigr modifient respectivement les fichiers / etc / passwd et / etc / group. Avec le drapeau -s, ils éditeront les versions shadow de ces fichiers, / etc / shadow et / etc / gshadow, respectivement. Les programmes définiront les verrous appropriés pour éviter la corruption des fichiers.
vipwet vigrmerci! J'ai toujours utilisésudo vim /etc/passwd
visudo sudo.ws/man/1.8.15/visudo.man.html , @tac
sudo -e, qui exécute cette fonction de verrouillage-modification pour toute modification.
Une autre option, en supposant que vous avez accès à un autre compte, consiste à remplacer manuellement le shell par défaut en utilisant su --shell=/bin/bash:
-s, --shell = SHELL
exécuter SHELL si / etc / shells le permet
Le principal avantage de cela est qu'il ne nécessite qu'un accès à un autre compte, pas à un autre compte privilégié .
Pour des raisons de sécurité, les connexions textuelles ou graphiques et les utilitaires comme suet sudoqui vous permettent d'exécuter des commandes en tant qu'utilisateur différent exécutent toutes ces commandes via le shell de l'utilisateur cible. Si le shell de l'utilisateur cible n'est pas fonctionnel, eh bien, vous avez vu les résultats :-(
À moins que vous n'arriviez à avoir un shell racine encore fonctionnel qui s'exécute quelque part ou quelque chose comme un binaire setuid-root ou quelque chose qui vous permet de contourner cela, le redémarrage et la correction du problème en utilisant un système de sauvetage ou une image en direct est probablement votre meilleur pari.
Démarrez le système de secours, montez le système de fichiers racine de votre vrai système quelque part, par exemple /mnt/foo, et modifiez /mnt/foo/etc/passwdpour réparer le shell. Enregistrez, démontez et vous avez terminé.
/etc/passwdn'est pas du texte en clair? Je ne l'ai pas vu depuis au moins une décennie. Est-ce encore une chose sur certains systèmes? Quoi qu'il en soit, je suppose chroot /mnt/foo chsh -s /bin/bashque cela pourrait faire l'affaire dans ce cas?
Ajoutez init=/bin/bashà votre ligne de commande du noyau (si vous démarrez avec grub, appuyez sur epour modifier l'entrée de démarrage), et vous aurez un shell bash fonctionnant en tant que root sans même avoir à fournir un mot de passe. Cependant, votre système de fichiers racine sera toujours monté en lecture seule, vous devrez donc le remonter d'abord, puis vous pourrez modifier le shell avec chsh.
sudo usermod -s /bin/bash jdoe
changera la coquille de jdoe en bash. Vous pouvez ensuite sudo egrep jdoe /etc/passwdvérifier.