J'ai essayé de changer le shell de connexion.
Voici à quoi ressemble la première ligne /etc/passwd
(sur une installation Debian Wheezy):
rootx:0:0:root:/root:/:zsh
Lorsque j'essaye de me connecter en tant que root
:
Cannot execute zsh: No such file or directory
Je sais zsh
est disponible:
$ which zsh
/usr/bin/zsh
D'accord, il semble logique de remplacer zsh
par son chemin complet. Mais comment faire?
J'ai un autre utilisateur sur le système ( user
), mais il n'a pas de privilèges root et sudo
n'est pas installé sur le système.
Supposons que pour une raison quelconque (cryptage, accès physique, ...) je ne peux pas démarrer sur un CD live pour modifier le fichier.
Je connais cependant les informations d'identification du root
compte.
Ma question est: existe-t-il un moyen, même par programme, de lancer un processus avec le root
compte sans lancer son shell de connexion au préalable?
su
? ougksu
? quelque chose commesu -c 'sed -i s,root:/:zsh,root:/:/usr/bin/zsh, /etc/passwd'
su -c "<commands>"
) fonctionne ... ne pourrions-nous pas alors simplement utilisersu -c "/bin/bash"
pour accéder à un bash de travail avec la racine utilisateur ?-c
est exécutée via le shell de connexion de l'utilisateur.-s
peut être utilisé pour utiliser un autre shell ... uniquement si le shell de connexion existant est valide ou si l'invocateur est root.Réponses:
Avoir des autorisations su
Vous pouvez utiliser la commande suivante pour modifier le shell de n'importe quel utilisateur.
Si vous avez un accès physique
Pendant votre démarrage Grub, vous pouvez accéder à n'importe quel système tant que vous avez accès à la console et qu'aucun mot de passe ne vous empêche d'accéder au menu Grub.
Lors du démarrage initial du système lorsque le menu Grub apparaît, si vous entrez dans le menu et modifiez (appuyez sur la etouche) la ligne du noyau, vous pouvez ajouter l'une des choses suivantes pour faire démarrer le noyau en mode mono-utilisateur.
La ligne ressemblera à ceci:
Dans Grub, cela devrait ressembler à ceci:
Une fois les modifications effectuées, démarrez le noyau (appuyez sur la touche b).
Cela vous donnera un accès temporaire au système avec un shell où vous pouvez utiliser vi / vim pour apporter les modifications dont vous avez besoin à votre
/etc/passwd
fichier. Tapez simplementreboot
lorsque vous avez terminé.la source
su
commande ne fonctionnera pas, car elle essaiera d'invoquer le shell de root, qui n'existe pas.