J'essaie d'utiliser la commande su pour exécuter une application en tant qu'autre utilisateur
Dans ce cas, j'essaie d'exécuter irssi
blah@ubuntu: su - [username] irssi
(enter password)
blah@ubuntu:
(nothing happens)
blah@ubuntu: su - [username] -c irssi
(nothing)
J'exécute gksu et définit les mêmes paramètres et cela fonctionne, et ne me demande pas le mot de passe utilisateur. Quelle est la solution? Et comment le résoudre?
Je dois noter que l'utilisateur a été créé comme ceci
adduser --system --disabled-login [username]
si cela fait une différence .... soupir.
irssi
a un problème et que la commande su fonctionne?Réponses:
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:
irssi
utilisateur.irssi
compte de l'utilisateur est désactivé.irssi
compte 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.irssi
utilisateur.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 queirssi
. Sans l'-
indicateur, si lasu
commande réussissait, vous obtiendriez toujours un shell appartenant àirssi
, mais les variables d'environnement telles queHOME
seraient inchangées.Si vous souhaitez plutôt exécuter un programme appelé
irssi
, vous devez invoquersu
différemment: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 :
su username -
irssi
).exit
.Exécution de commandes en tant que
root
Si vous voulez exécuter en
irssi
tant queroot
, cesu
n'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é laroot
connexion, vous devriez pouvoir l'utilisersu
pour devenirroot
. La raison pour laquelle il n'est pas nécessaire d'activer leroot
compte est que, que vous le fassiez ou non, vous pouvez toujours exécuter des commandes commeroot
avecsudo
.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 commeroot
avecsudo
(à moins que vous ne vous reconfiguriezsudo
pour 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 commeroot
avec son propre mot de passe.Pour fonctionner
irssi
commeroot
avecsudo
:Et vous saisiriez votre mot de passe à l'invite, pas
root
le s.Excepté le mot de passe que vous entrez, cela fait la même chose que:
Sauf que la
sudo
version peut réussir car elle ne nécessite pas l'root
activation du compte.Comme avec
su
, vous pouvez utilisersudo
pour exécuter des commandes en tant qu'autre nonroot
utilisateur . Pour fonctionnerirssi
commeusername
avecsudo
:Si vous voulez vous
sudo
comporter commesu -
par rapport à -HOME
c'est-à-dire, vous voulez utiliser lesHOME
variables d'environnement de l'utilisateur cible , vous pouvez exécutersudo
avec l'-H
indicateur:Vous pouvez démarrer un shell entier avec
sudo
, comme vous pouvez avecsu
. Sauf pour le mot de passe que vous avez entré, cette commande a le même effet quesu
:Et cette commande a le même effet que
su -
:(Le
i
représente le shell de connexion initial .)Vous pouvez également démarrer un shell en tant qu'autre utilisateur:
Lectures complémentaires sur
sudo
Pour en savoir plus
sudo
, consultez:sudo
site en amont (par l'auteur desudo
).man sudo
Pourquoi a-t-il
gksu
fonctionné alorssu
que non?gksu
probablement travaillé en courantsudo
.gksu
est une interface pour les deuxsu
etsudo
. Dans Ubuntu, il utilise par défautsudo
(car dans Ubuntu, ilsu
n'est généralement pas utilisé pour devenirroot
, et n'est qu'un moyen secondaire de devenir d'autres non-root
utilisateurs).Vous pouvez l'
gksu
utilisersu
comme interface en exécutantgksu --su-mode
.Vous pouvez savoir s'il
gksu
est ensu
mode ou ensudo
mode et (si vous le souhaitez) modifier ce paramètre en exécutantgksu-properties
. Il s'agit d'un paramètre par utilisateur.Lorsqu'il
gksu
est ensudo
mode, il se comporte de la même manière quegksudo
.Lectures complémentaires sur
gksu
sudo
".man gksu
gksu
site Web en amont (par les créateurs degksu
).gksu
rapportgksudo
à Ubuntu.Analyse post-solution
Vous avez finalement découvert que vous pouviez exécuter la commande nécessaire avec:
(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
username
compte a été créé avec le--disabled-login
drapeau, 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 moyenusername
ne peut pas du tout s'authentifier.Ainsi, toutes les
su
solutions basées sur le marché sont disponibles.sudo
peut fonctionner, car avecsudo
vous 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:
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:
Connexes: réactiver le
root
compte après l'avoir temporairement activé.Le
username
compte a/bin/false
comme shell de connexion.Lorsqu'un shell comme
bash
fonctionne comme shell de connexion, il configure votre environnement et vous donne une invite interactive pour contrôler la machine.Lors de l'
/bin/false
exécution, en revanche, il ne fait rien et signale un échec . (/bin/true
ne fait rien et signale le succès.)Les commandes
false
ettrue
sont 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 utilisersftp
etscp
transférer des fichiers.Depuis
username
le shell de connexion « était non fonctionnel, commandes telles que , , et ne pouvait pas travailler.su username
su - username
sudo -u username -s
sudo -u username -i
Mais les commandes qui ne donnent pas de shell, comme ou pourraient encore fonctionner.
sudo -u username command
su 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:
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
username
deux avaient désactivé le mot de passe et le shell "désactivé". L'absence de mot de passe fonctionnel a empêché toutes lessu
solutions 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.la source