Czy mogę uruchomić aplikację jako inny użytkownik bez faktycznej zmiany użytkowników?

17

Czy istnieje sposób na uruchomienie aplikacji jako inny użytkownik, aby uruchomiona aplikacja korzystała z preferencji / historii / zasobów innego użytkownika i innych?

Na przykład: zalogowałem się jako Alice i chciałbym uruchomić Firefoksa jako Bob, dlatego Firefox pokazywałby historię przeglądania Boba zamiast Alicji.

próbowałem

$ su Bob
$ open -a Firefox

Ale bez widocznego efektu; w rzeczywistości monitor aktywności pokazuje, że proces Firefox jest prowadzony przez Alice - nie przez Boba.

Rozumiem, że będę potrzebować danych logowania Boba, ale to nie jest problem.

Jari Keinänen
źródło

Odpowiedzi:

16

Z wiersza poleceń musisz znaleźć plik wykonywalny Uniksa i uruchomić go za pomocą sudo w następujący sposób:

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

… Lub to samo z su: (wymaga to jednak ustawienia hasła dla roota - czego nie polecam)

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

(… Lub wyżej w jednym wierszu :)

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

W przeszłości najłatwiejszym sposobem dla komputerów Mac PPC było użycie Pseudo , ale już dawno przestało . Ma to na celu upuszczenie ikony aplikacji na ikonę lub okno Pseudo.

użytkownik151019
źródło
Ach, kluczem było znalezienie pliku wykonywalnego Uniksa. Działa również z, sujeśli ktoś tego nie chce sudo. Dzięki!
Jari Keinänen
Hmm, kiedy próbuję uruchomić Google Chrome, dostaję to:Trace/BPT trap: 5
Wojciech Bednarski
Korzystając z tego sudopodejścia, dostaję błędy logowania, mimo że używam poprawnego hasła dla drugiego użytkownika. sudziała z drugiej strony (brak hasła do zestawu root)
LapplandsCohan
@lapplandscohan sudo przyjmuje hasło bieżącego użytkownika
151019
1
@ evan.bovie YTes pokazuje, że pomyśleli o bezpieczeństwie
151019,
4

Zobacz /apple//a/102105/1860, aby dowiedzieć się, dlaczego sunie działa dla wszystkich aplikacji.

Wystartował bsexec

Najnowsze wersje launchdmają możliwość uruchamiania aplikacji w sesji innego użytkownika; chociaż inżynierowie Apple nie zalecili jego ogólnego zastosowania.

Użyj bsexecopcji w launchctl, aby wybrać odpowiednią sesję użytkownika:

 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.

Zalecanym podejściem jest napisanie uruchomionego biletu zadania i zrestartowanie komputera Mac - lub poproszenie użytkownika o wylogowanie i ponowne zalogowanie.

Graham Miln
źródło
0

Musisz ssh. Tj ssh [email protected]. Jak powiedziałeś, będziesz potrzebować hasła dla użytkownika. Wtedy możesz zrobić, o co prosisz. Musisz włączyć zdalne logowanie w Preferencjach systemowych> Udostępnianie:
Preferencje zdalnego logowania
Następnie możesz to zrobić, open -a Firefoxa Firefox otworzy się jako inny użytkownik, a nie twój.

daviesgeek
źródło
Niestety dostaję: LSOpenURLsWithRole() failed for the application /Applications/Firefox.app with error -10810.przy próbie open -a Firefox: - |
Jari Keinänen
@koiyu Trysudo open -na Firefox
daviesgeek
kończy się niepowodzeniem, jak wyżej: - / (również użycie ścieżki do pliku wykonywalnego uniksowego kończy się niepowodzeniem, choć inaczej.)
Jari Keinänen
1
Procesy rozpoczęte od sesji SSH nie mają dostępu do GUI. Jeśli to działa w twoim systemie, podejrzewam, że w pewnym momencie zmieniłeś konfigurację niskiego poziomu.
Tobias
1
@daviesgeek, ale czy zrobiłeś SSH z użytkownikiem innym niż ten, który obecnie ma GUI, tak jak chciał OP.
Tobias