Cette réponse devrait encore vous aider, même en tenant compte des modifications apportées à la question. En particulier, un compte créé avec
--disabled-loginn'a pas de mot de passe défini et aucun autre moyen de se connecter , mais il devrait toujours être possible d'utiliser sudo(expliqué ci-dessous) pour exécuter des commandes ou un shell en tant qu'utilisateur. C'est en fait ainsi que le
rootcompte est configuré dans Ubuntu.
Il y a plusieurs problèmes avec la commande su - irssi.
Cette commande tente de démarrer un shell appartenant à un utilisateur nomméirssi .
Il échouera si:
- Il n'y a aucun
irssiutilisateur.
- Le
irssicompte de l'utilisateur est désactivé.
- Le
irssicompte de l'utilisateur est désactivé pour la connexion interactive. Parfois, un compte est autorisé à utiliser des services comme FTP mais interdit de se connecter normalement en définissant son shell sur quelque chose qui se ferme immédiatement, comme /bin/false. Ensuite, une connexion se termine immédiatement, sans message.
- Le mot de passe que vous entrez n'est pas correct pour l'
irssiutilisateur.
Le -drapeau fait en sorte que le shell simule un shell de connexion initial - c'est-à-dire, c'est vraiment très similaire à la connexion en tant que irssi. Sans l' -indicateur, si la sucommande réussissait, vous obtiendriez toujours un shell appartenant à irssi, mais les variables d'environnement telles que HOMEseraient inchangées.
Si vous souhaitez plutôt exécuter un programme appelé irssi , vous devez invoquer sudifféremment:
su username - -c irssi
Si vous omettez , c'est la même chose que --it tente d'exécuter la commande en tant que root.-c username-c root
Vous pouvez également démarrer un shell, puis exécuter la commande :
- Démarrez le shell avec .
su username -
- Dans le shell, exécutez la commande (
irssi).
- Si vous avez terminé, quittez le shell en exécutant
exit.
Exécution de commandes en tant que root
Si vous voulez exécuter en irssitant que root, ce sun'est pas la façon de le faire. Les connexions root sont désactivées par défaut sur Ubuntu, et il n'y a que rarement de raison de les réactiver . Si vous avez activé la rootconnexion, vous devriez pouvoir l'utiliser supour devenir root. La raison pour laquelle il n'est pas nécessaire d'activer le rootcompte est que, que vous le fassiez ou non, vous pouvez toujours exécuter des commandes comme rootavec sudo.
Lorsque vous exécutez des commandes avec sudo, vous entrez votre mot de passe, pas le mot de passe de l'utilisateur sous l'identité duquel vous souhaitez exécuter la commande. Seuls les administrateurs peuvent exécuter des commandes arbitraires comme rootavec sudo(à moins que vous ne vous reconfiguriez sudopour autoriser les autres à le faire, bien sûr). Ainsi, un utilisateur qui n'est pas autorisé à administrer le système n'est pas autorisé à exécuter des commandes comme rootavec son propre mot de passe.
Pour fonctionner irssicomme rootavec sudo:
sudo irssi
Et vous saisiriez votre mot de passe à l'invite, pas rootle s.
Excepté le mot de passe que vous entrez, cela fait la même chose que:
su -c irssi
Sauf que la sudoversion peut réussir car elle ne nécessite pas l' rootactivation du compte.
Comme avec su, vous pouvez utiliser sudopour exécuter des commandes en tant qu'autre non rootutilisateur . Pour fonctionner irssicomme usernameavec sudo:
sudo -u username irssi
Si vous voulez vous sudo comporter comme su -par rapport à -HOME c'est-à-dire, vous voulez utiliser les HOMEvariables d'environnement de l'utilisateur cible , vous pouvez exécuter sudoavec l' -Hindicateur:
sudo -H irssi
sudo -H -u username irssi
Vous pouvez démarrer un shell entier avec sudo, comme vous pouvez avec su. Sauf pour le mot de passe que vous avez entré, cette commande a le même effet que su:
sudo -s
Et cette commande a le même effet que su -:
sudo -i
(Le ireprésente le shell de connexion initial .)
Vous pouvez également démarrer un shell en tant qu'autre utilisateur:
sudo -u username -s
sudo -u username -i
Lectures complémentaires sur sudo
Pour en savoir plussudo , consultez:
Pourquoi a-t-il gksufonctionné alors suque non?
gksuprobablement travaillé en courantsudo .
gksuest une interface pour les deux su et sudo. Dans Ubuntu, il utilise par défaut sudo(car dans Ubuntu, il sun'est généralement pas utilisé pour devenir root, et n'est qu'un moyen secondaire de devenir d'autres non- rootutilisateurs).
Vous pouvez l' gksuutiliser sucomme interface en exécutant gksu --su-mode.
Vous pouvez savoir s'il gksuest en sumode ou en sudomode et (si vous le souhaitez) modifier ce paramètre en exécutant gksu-properties. Il s'agit d'un paramètre par utilisateur.
Lorsqu'il gksuest en sudomode, il se comporte de la même manière que gksudo.
Lectures complémentaires sur gksu
Analyse post-solution
Vous avez finalement découvert que vous pouviez exécuter la commande nécessaire avec:
sudo -u username irssi
(Parmi les techniques énumérées ci-dessus.)
En fin de compte, vous avez rapporté deux informations, qui sont suffisantes pour expliquer pourquoi d'autres techniques avaient échoué, mais qui avaient réussi:
Le usernamecompte a été créé avec le --disabled-logindrapeau, ce qui fait qu'il n'a pas de mot de passe (et aucun autre moyen de se connecter). Ne pas avoir de mot de passe ne signifie pas qu'il est possible de se connecter avec un mot de passe vierge . Cela signifie qu'aucun mot de passe n'est suffisant pour s'authentifier. En combinaison avec l'élimination d'autres moyens d'authentification, ce moyen usernamene peut pas du tout s'authentifier.
Ainsi, toutes les susolutions basées sur le marché sont disponibles. sudopeut fonctionner, car avec sudovous ne vous authentifiez pas en tant qu'utilisateur que vous êtes sur le point d'emprunter l'identité. Au lieu de cela, vous devez être autorisé à vous faire passer pour eux, et vous vous authentifiez en tant que vous-même (c'est-à-dire, entrez votre propre mot de passe, pas le leur).
Il est possible de définir un mot de passe sur le compte, ce qui supprime cette barrière à la connexion:
sudo passwd username
Cependant, il peut y avoir une bonne raison pour laquelle l'utilisateur n'est pas autorisé à se connecter. Par exemple, si cet utilisateur était autorisé à se connecter et à se connecter graphiquement, de mauvais problèmes surgiraient du fait que l'environnement ou les privilèges de l'utilisateur seraient mal adaptés à l'exécution des applications X11 ? Si cet utilisateur pouvait se connecter, cela permettrait-il de se connecter à distance en tant que cet utilisateur (pour les machines sur lesquelles vous avez exposé des services réseau)?
Si jamais vous souhaitez le désactiver à nouveau:
sudo passwd -dl username
Connexes: réactiver le rootcompte après l'avoir temporairement activé.
Le usernamecompte a /bin/falsecomme shell de connexion.
Lorsqu'un shell comme bashfonctionne comme shell de connexion, il configure votre environnement et vous donne une invite interactive pour contrôler la machine.
Lors de l' /bin/falseexécution, en revanche, il ne fait rien et signale un échec . ( /bin/truene fait rien et signale le succès.)
Les commandes falseet truesont utiles dans les scripts et à diverses fins de test, mais aussi pour désactiver un compte de sorte que lorsque quelqu'un se connecte, sa session de connexion se termine immédiatement. De cette façon, un mot de passe (ou d'autres moyens d'authentification) peut être activé, et les gens peuvent se connecter, mais pas pour accéder au shell . Par exemple, s'il existe un serveur FTP, ils pourraient toujours accéder à leur compte via FTP. S'il y a un serveur SSH, ils ne pourraient pas obtenir un shell via SSH, mais ils pourraient toujours utiliser sftpet scptransférer des fichiers.
Depuis usernamele shell de connexion « était non fonctionnel, commandes telles que , , et ne pouvait pas travailler.su usernamesu - usernamesudo -u username -ssudo -u username -i
Mais les commandes qui ne donnent pas de shell, comme ou pourraient encore fonctionner.sudo -u username commandsu username -c 'command'
Puisque les commandes peuvent être exécutées, vous pouvez changer le shell de connexion de l'utilisateur en quelque chose de fonctionnel:
sudo chsh -s /bin/bash username
Cependant, cela doit également être fait avec prudence, car il peut y avoir une bonne raison de désactiver les connexions interactives pour l'utilisateur.
Ici, les usernamedeux avaient désactivé le mot de passe et le shell "désactivé". L'absence de mot de passe fonctionnel a empêché toutes les susolutions basées sur le travail, tandis que l'absence d'un shell de connexion interactif fonctionnel a empêché toutes les solutions de génération de shell de fonctionner (sauf l'appel manuel d'un shell, par exemple ).sudo -u username bash
sudo -u username command c'est ce qui restait.