dans quel contexte avez-vous fait cela. Dans un terminal actuel, pour le shell par défaut des utilisateurs?
jgr208
vous n'avez pas d'utilisateurs dans le groupe sudo?
Rui F Ribeiro
3
ça sudo vipwmarche?
Rui F Ribeiro
1
@RuiFRibeiro oui, merci, je ne savais pas que je pouvais changer le shell racine par défaut dans ce fichier
ChiseledAbs
1
Pas nécessaire dans ce cas, mais lorsque vous avez créé par inadvertance une catastrophe impliquant root, vous pouvez généralement mettre la machine en mode mono-utilisateur, résoudre le problème, puis revenir en mode multi-utilisateur.
Boardrider
Réponses:
29
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.
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.
Ou sudo -e, qui exécute cette fonction de verrouillage-modification pour toute modification.
kojiro
16
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é.
curieux, que se passe-t-il si vous faites cela et que le fichier / etc / passwd est dans un hachage au lieu de texte brut?
jgr208
1
/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?
Celada
Je n'ai jamais eu le problème décrit, mais je travaille avec des systèmes verrouillés qui doivent avoir / etc / passwd pas en texte brut afin d'éviter que les pirates informatiques ne compromettent encore plus le système s'ils y ont accès. Hmm qui pourrait fonctionner, disons simplement que j'espère que je n'aurai jamais à essayer de voir si cela fonctionne réellement.
jgr208
J'ai pu modifier / etc / passwd avec sudo à partir d'un compte utilisateur, je ne savais pas que le shell était défini dans ce fichier, merci
ChiseledAbs
@ChiseledAbs oh, tu l'étais? Bon pour vous, heureux d'avoir résolu votre problème. Je ne pensais pas que ça te laisserait.
Celada
6
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 vipw
marche?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:
Et le shell racine a changé manuellement.
(première ligne de
/etc/passwd
généralement)Fom man vipw
la source
vipw
etvigr
merci! J'ai toujours utilisésudo vim /etc/passwd
visudo
sudo.ws/man/1.8.15/visudo.man.html , @tacsudo -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
:Le principal avantage de cela est qu'il ne nécessite qu'un accès à un autre compte, pas à un autre compte privilégié .
la source
Pour des raisons de sécurité, les connexions textuelles ou graphiques et les utilitaires comme
su
etsudo
qui 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/passwd
pour réparer le shell. Enregistrez, démontez et vous avez terminé.la source
/etc/passwd
n'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 supposechroot /mnt/foo chsh -s /bin/bash
que 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 sure
pour 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 avecchsh
.la source
sudo usermod -s /bin/bash jdoe
changera la coquille de jdoe en
bash
. Vous pouvez ensuitesudo egrep jdoe /etc/passwd
vérifier.la source