21 votes

Puis-je lancer une application en tant qu'autre utilisateur sans changer réellement d'utilisateur ?

Existe-t-il un moyen de lancer une application en tant qu'autre utilisateur afin que l'application lancée utilise les préférences, l'historique, les ressources, etc. de l'autre utilisateur ?

Par exemple : Je me suis connecté en tant qu'Alice et j'aimerais lancer Firefox en tant que Bob. Ainsi, Firefox afficherait l'historique de navigation de Bob au lieu de celui d'Alice.

J'ai essayé

$ su Bob
$ open -a Firefox

Mais sans effet apparent ; en fait, le moniteur d'activité montre que le processus Firefox est exécuté par Alice et non par Bob.

Je comprends que j'aurai besoin des identifiants de connexion de Bob, mais ce n'est pas un problème.

19voto

yoliho Points 340

En ligne de commande vous devez trouver l'exécutable Unix et l'exécuter en utilisant sudo comme ça :

$ sudo -u Bob /Applications/Firefox.app/Contents/MacOS/Firefox 

ou la même chose avec su : (cependant, cela nécessite également de définir un mot de passe pour Root - ce que je ne recommande pas)

$ su Bob
$ /Applications/Firefox.app/Contents/MacOS/Firefox

( ou ce qui précède en une seule ligne :)

$ su Bob -c /Applications/Firefox.app/Contents/MacOS/Firefox

Dans le passé, le moyen le plus simple pour les Macs PPC était d'utiliser Pseudo mais cela fait longtemps discontinué . Il s'agit de déposer l'icône de l'application sur l'icône ou la fenêtre du Pseudo.

4voto

Graham Miln Points 39606

Voir https://apple.stackexchange.com/a/102105/1860 pourquoi su ne fonctionne pas pour toutes les applications.

le bsexec du lancement

Les versions récentes de launchd ont la possibilité de lancer des applications dans la session d'un autre utilisateur, bien que les ingénieurs d'Apple n'en aient pas recommandé l'usage général.

Utilisez le bsexec option dans launchctl pour cibler la session utilisateur appropriée :

 bslist [PID | ..] [-j]
          This prints out Mach bootstrap services and their respective states. While the namespace
          appears flat, it is in fact hierarchical, thus allowing for certain services to be only avail-
          able to a subset of processes. The three states a service can be in are active ("A"), inactive
          ("I") and on-demand ("D").

          If [PID] is specified, print the Mach bootstrap services available to that PID. If [..] is
          specified, print the Mach bootstrap services available in the parent of the current bootstrap.
          Note that in Mac OS X v10.6, the per-user Mach bootstrap namespace is flat, so you will only
          see a different set of services in a per-user bootstrap if you are in an explicitly-created
          bootstrap subset.

          If [-j] is specified, each service name will be followed by the name of the job which regis-
          tered it.

 bsexec PID command [args]
          This executes the given command in the same Mach bootstrap namespace hierachy as the given
          PID.

 bstree [-j]
          This prints a hierarchical view of the entire Mach bootstrap tree. If [-j] is specified, each
          service name will be followed by the name of the job which registered it.  Requires root priv-
          ileges.

L'approche recommandée est d'écrire un ticket de travail launchd et de redémarrer le Mac - ou de demander à l'utilisateur de se déconnecter et de se reconnecter.

1voto

user2423555 Points 21

Une autre méthode :

# chown someuser command
# chmod u+s command
$ ./command

Merci à wysota at : http://www.qtcentre.org/threads/4730-Linux-Bash-Run-a-command-as-another-user

(J'ai passé beaucoup de temps à chercher quelque chose qui fonctionne dans ma situation particulière, j'ai pensé que je devais répandre la richesse).

0voto

daviesgeek Points 35275

Vous avez besoin de ssh. C'est-à-dire. ssh username@123.456.00 . Comme vous l'avez dit, vous aurez besoin du mot de passe de l'utilisateur. Vous pourrez alors faire ce que vous demandez. Vous devez activer la connexion à distance sous System Prefs>Sharing :
Remote Login Preference
Ensuite, vous pouvez simplement faire open -a Firefox et Firefox s'ouvrira sous le nom de l'autre utilisateur, pas le vôtre.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X