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 -c "<commands>"
) fonctionne ... ne pourrions-nous pas alors simplement utiliser su -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.
su
? ougksu
? quelque chose commesu -c 'sed -i s,root:/:zsh,root:/:/usr/bin/zsh, /etc/passwd'