Réponses:
Que diriez-vous d'utiliser la su
commande?
$ whoami
user1
$ su - user2
Password:
$ whoami
user2
$ exit
logout
Si vous souhaitez vous connecter en tant que root, il n'est pas nécessaire de spécifier un nom d'utilisateur:
$ whoami
user1
$ su -
Password:
$ whoami
root
$ exit
logout
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:
$ 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 sudo
est probablement plus simple, à condition qu'il soit installé et que vous ayez la permission de l'utiliser.
su - [user]
peut être utile - le tiret supplémentaire vous donne un shell de connexion.
echo >>/dev/stderr
lors d'une connexion avec su --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:
[mrozekma@etudes-1 ~] % whoami
mrozekma
[mrozekma@etudes-1 ~] % sudo -u nobody zsh
[nobody@etudes-1 ~] % whoami
nobody
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 sudo
c'est probablement plus simple si c'est installé et que vous avez la permission de l'utiliser.
sudo -s
vous donne un shell comme su
, sudo -i
simule la connexion comme su -
. Peut être combiné avec -u $user
, bien sûr.
$ 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é.
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.
ubuntu@aws-ip:~$ sudo -u mongodb bash #<-- or zsh, etc...
mongodb@aws-ip:~$ mongod --configsvr --dbpath /data/configdb --fork
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 avec mongodb
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.
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.
Si vous n'avez besoin que d'une seule commande, vous pouvez utiliser sudo:
sudo -u username command
$XDG_RUNTIME_DIR
en particulier) qui me rendaient dingue. -> unix.stackexchange.com/questions/354826/…