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.

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.


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.



0

Musisz ssh. Tj ssh username@123.456.00. 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.


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.