J'ai posé une question similaire, car j'avais des problèmes avec les variables d'environnement XDG ( $XDG_RUNTIME_DIRen particulier) qui me rendaient dingue. -> unix.stackexchange.com/questions/354826/…
Généralement, vous pouvez sudolancer un nouveau shell en tant qu’utilisateur de votre choix. le -udrapeau vous permet de spécifier le nom d'utilisateur que vous voulez:
$ whoami
user1
$ sudo -u user2 zsh
$ whoami
user2
Si vous n'avez pas accès à sudo, il existe d'autres méthodes plus détournées, comme ssh nom_utilisateur @ localhost, mais sudoest probablement plus simple, à condition qu'il soit installé et que vous ayez la permission de l'utiliser.
Aussi, su - [user]peut être utile - le tiret supplémentaire vous donne un shell de connexion.
éphémère
Je reçois le message d'erreur "-su: / dev / stderr: autorisation refusée" après l'exécution de cette commande echo >>/dev/stderrlors d'une connexion avec su --login ...un conseil quelconque? J'ai trouvé ce btw unix.stackexchange.com/questions/38538/…
Aquarius Power
Cela permet-il à chaque nouvel utilisateur d’avoir des valeurs différentes et prioritaires pour les variables d’environnement? Par exemple, Git config pour le travail, l'open source, etc.
Kevin Suttle
Une des constatations, lorsque j’ai énuméré le, enva permis de constater que tout était en ordre et qu’une inspection visuelle pouvait se dérouler; Et une chose est incorrecte: XAUTHORITY=/home/user1/.Xauthority'. Not sure _why_? So X-window doesn't work by default because the protection on fichier ~ / .Xauthority` est: -rw-------. J'ai fait une copie et cela m'a permis de lancer gedit à titre expérimental.
sera
1
si vous obtenez "Ce compte n'est pas disponible pour le moment": su -s / bin / bash - www-data
max4ever
46
Généralement, vous utilisez sudopour lancer un nouveau shell en tant qu’utilisateur de votre choix; le -udrapeau vous permet de spécifier le nom d'utilisateur que vous voulez:
Il y a des manières plus détournées si vous n'avez pas d'accès sudo, par exemple ssh username@localhost, mais je pense que sudoc'est probablement plus simple si c'est installé et que vous avez la permission de l'utiliser.
Que se passe-t-il si mon système n'a ni serveur ssh ni sudo? Pouvez-vous mentionner cette partie de la réponse?
Tshepang
ok, Pratt a répondu à cette question
tshepang
4
sudo -svous donne un shell comme su, sudo -isimule la connexion comme su -. Peut être combiné avec -u $user, bien sûr.
éphémère
beaucoup plus efficace. pouvoir "se connecter" en tant qu'utilisateur qui ne peut pas se connecter normalement est un grand atout ..! m'a totalement permis d'exécuter une instance de base de données sans jouer avec les autorisations ni selinux
Félix Gagnon-Grenier
20
$ whoami
Cette commande imprime l'utilisateur actuel. Pour changer d'utilisateur, nous devrons utiliser cette commande (suivie du mot de passe de l'utilisateur):
$ su secondUser
Password:
Après avoir entré le bon mot de passe, vous serez connecté en tant qu'utilisateur spécifié (que vous pourrez vérifier en le réexécutant) whoami.
Si vous utilisez Ubuntu et si l'utilisateur avec lequel vous souhaitez vous connecter n'a pas de mot de passe:
sudo su - username
Entrez votre propre mot de passe et vous devriez être défini. Bien entendu, cela nécessite que votre utilisateur dispose des droits lui permettant d’obtenir les privilèges root sudo.
Pour basculer la session de terminal vers un autre utilisateur, lorsque cet utilisateur ne peut pas revenir à l'utilisateur d'origine, utilisez exec:
$ | # exec su - [nom d'utilisateur]
Cela connectera techniquement le nouvel utilisateur dans un nouveau processus de terme et fermera celui en cours. Ainsi, lorsque l'utilisateur tente de quitter ou d'utiliser Ctrl-D, le terminal se ferme comme si c'était l'utilisateur qui l'avait instancié, c'est-à-dire qu'il ne pouvait pas revenir dans le terme d'origine. C'est un peu inutile, étant donné qu'ils peuvent toujours démarrer une nouvelle session de terminal et être automatiquement dans le nom d'utilisateur initial, mais c'est le cas.
EDIT: Pour ce que cela vaut, vous pouvez utiliser la commande linux vlock dans votre ~ / .bashrc pour verrouiller les sessions de terminal par défaut, ce qui nécessite le mot de passe du mot utilisateur de session pour le déverrouiller. Cela éviterait quelque peu le redémarrage du terme susmentionné dans le contexte utilisateur d'origine, étant donné que le terme n'est pas instancié à l'aide du fichier ~ / .bashrc non défini par défaut de l'utilisateur, tel que configuré.
Un exemple de ceci est l' mongodbutilisateur. Lors du déploiement d'un cluster MongoDB partagé, tous les processus nécessaires doivent être exécutés avec mongodbet il n'est pas nécessaire (ou tout à fait pratique) de démoniser les processus à l'aide de scripts d'initialisation pour des dizaines de nœuds.
Laissez-nous obtenir ce droit: vous êtes connecté en tant que UserA et voulez "vous connecter" en tant que UserB pour exécuter certaines commandes, mais vous souhaitez revenir à UserA lorsque vous avez terminé. Par souci de simplicité, je suppose que vous voulez exécuter ls -l / tmp en tant que UserB. Si vous ne pas vouloir quitter le shell actuel de UserA mais exécuter une commande comme UtilisateurB et toujours rester connecté comme UserA, vous devriez faire ceci:
su - UserB -c "ls -l /tmp" <-- Just an example
Cela suppose que vous connaissiez le mot de passe pour UserB. Toutefois, si vous ne connaissez pas le mot de passe de UserB, vous devez connaître le mot de passe root. Ensuite:
sudo su - UserB -c "ls -l /tmp" <-- UserB's pw not needed here
Si vous préférez vous connecter temporairement en tant qu'utilisateur B pour exécuter de nombreuses commandes, il suffit de:
sudo su - UserB
Cela vous donnera un nouveau shell pour UserB (vérifiez cela en tapant id). Une fois terminé, vous pouvez faire ctrl-d et revenir à votre login.
$XDG_RUNTIME_DIR
en particulier) qui me rendaient dingue. -> unix.stackexchange.com/questions/354826/…Réponses:
Que diriez-vous d'utiliser la
su
commande?Si vous souhaitez vous connecter en tant que root, il n'est pas nécessaire de spécifier un nom d'utilisateur:
Généralement, vous pouvez
sudo
lancer un nouveau shell en tant qu’utilisateur de votre choix. le-u
drapeau vous permet de spécifier le nom d'utilisateur que vous voulez:Si vous n'avez pas accès à sudo, il existe d'autres méthodes plus détournées, comme ssh nom_utilisateur @ localhost, mais
sudo
est probablement plus simple, à condition qu'il soit installé et que vous ayez la permission de l'utiliser.la source
su - [user]
peut être utile - le tiret supplémentaire vous donne un shell de connexion.echo >>/dev/stderr
lors d'une connexion avecsu --login ...
un conseil quelconque? J'ai trouvé ce btw unix.stackexchange.com/questions/38538/…env
a permis de constater que tout était en ordre et qu’une inspection visuelle pouvait se dérouler; Et une chose est incorrecte:XAUTHORITY=/home/user1/.Xauthority'. Not sure _why_? So X-window doesn't work by default because the protection on
fichier ~ / .Xauthority` est:-rw-------
. J'ai fait une copie et cela m'a permis de lancer gedit à titre expérimental.Généralement, vous utilisez
sudo
pour lancer un nouveau shell en tant qu’utilisateur de votre choix; le-u
drapeau vous permet de spécifier le nom d'utilisateur que vous voulez:Il y a des manières plus détournées si vous n'avez pas d'accès sudo, par exemple
ssh username@localhost
, mais je pense quesudo
c'est probablement plus simple si c'est installé et que vous avez la permission de l'utiliser.la source
sudo -s
vous donne un shell commesu
,sudo -i
simule la connexion commesu -
. Peut être combiné avec-u $user
, bien sûr.Cette commande imprime l'utilisateur actuel. Pour changer d'utilisateur, nous devrons utiliser cette commande (suivie du mot de passe de l'utilisateur):
Après avoir entré le bon mot de passe, vous serez connecté en tant qu'utilisateur spécifié (que vous pourrez vérifier en le réexécutant)
whoami
.la source
Si vous utilisez Ubuntu et si l'utilisateur avec lequel vous souhaitez vous connecter n'a pas de mot de passe:
Entrez votre propre mot de passe et vous devriez être défini. Bien entendu, cela nécessite que votre utilisateur dispose des droits lui permettant d’obtenir les privilèges root
sudo
.la source
Pour basculer la session de terminal vers un autre utilisateur, lorsque cet utilisateur ne peut pas revenir à l'utilisateur d'origine, utilisez exec:
Cela connectera techniquement le nouvel utilisateur dans un nouveau processus de terme et fermera celui en cours. Ainsi, lorsque l'utilisateur tente de quitter ou d'utiliser Ctrl-D, le terminal se ferme comme si c'était l'utilisateur qui l'avait instancié, c'est-à-dire qu'il ne pouvait pas revenir dans le terme d'origine. C'est un peu inutile, étant donné qu'ils peuvent toujours démarrer une nouvelle session de terminal et être automatiquement dans le nom d'utilisateur initial, mais c'est le cas.
EDIT: Pour ce que cela vaut, vous pouvez utiliser la commande linux vlock dans votre ~ / .bashrc pour verrouiller les sessions de terminal par défaut, ce qui nécessite le mot de passe du mot utilisateur de session pour le déverrouiller. Cela éviterait quelque peu le redémarrage du terme susmentionné dans le contexte utilisateur d'origine, étant donné que le terme n'est pas instancié à l'aide du fichier ~ / .bashrc non défini par défaut de l'utilisateur, tel que configuré.
la source
sudo -iu <your_username>
pour moi faire le tourla source
Une autre voie consiste à lancer un nouveau shell en tant qu'utilisateur différent (non root) pour exécuter des commandes en tant qu'utilisateur.
Un exemple de ceci est l'
mongodb
utilisateur. Lors du déploiement d'un cluster MongoDB partagé, tous les processus nécessaires doivent être exécutés avecmongodb
et il n'est pas nécessaire (ou tout à fait pratique) de démoniser les processus à l'aide de scripts d'initialisation pour des dizaines de nœuds.la source
Laissez-nous obtenir ce droit: vous êtes connecté en tant que UserA et voulez "vous connecter" en tant que UserB pour exécuter certaines commandes, mais vous souhaitez revenir à UserA lorsque vous avez terminé. Par souci de simplicité, je suppose que vous voulez exécuter ls -l / tmp en tant que UserB. Si vous ne pas vouloir quitter le shell actuel de UserA mais exécuter une commande comme UtilisateurB et toujours rester connecté comme UserA, vous devriez faire ceci:
Cela suppose que vous connaissiez le mot de passe pour UserB. Toutefois, si vous ne connaissez pas le mot de passe de UserB, vous devez connaître le mot de passe root. Ensuite:
Si vous préférez vous connecter temporairement en tant qu'utilisateur B pour exécuter de nombreuses commandes, il suffit de:
Cela vous donnera un nouveau shell pour UserB (vérifiez cela en tapant id). Une fois terminé, vous pouvez faire ctrl-d et revenir à votre login.
la source
Si vous n'avez besoin que d'une seule commande, vous pouvez utiliser sudo:
sudo -u username command
la source
Ensuite, il vous demandera le mot de passe sudo (le mot de passe de l'utilisateur actuellement connecté).
Aussi: assurez-vous que l'utilisateur actuel est dans le fichier sudoers!
la source