Чи можу я запустити програму як інший користувач, фактично не перемикаючи користувачів?


17

Чи є спосіб запустити програму як інший користувач, щоб запущена програма використовувала вподобання / історію / ресурси іншого користувача тощо?

Наприклад: Я ввійшов як Аліса, і я хотів би запустити Firefox як Боб, тому Firefox відображатиме історію переглядів Боба замість Аліси.

я намагався

$ su Bob
$ open -a Firefox

Але без видимого ефекту; фактично монітор активності показує, що процес Firefox працює Алісою, а не Боб.

Я розумію, що мені знадобляться облікові дані Боба, але це не проблема.

Відповіді:


16

У командному рядку ви повинні знайти виконуваний файл Unix і запустити його, використовуючи sudo так:

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

… Або те саме з su: (однак для цього потрібно встановити пароль для root - що я не рекомендую)

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

(… Або вище в одному рядку :)

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

У минулому найпростішим способом для PPC Macs було використання псевдо , але його давно припинено . Це потрібно, щоб перекинути значок програми на піктограму або вікно Псевдо.


Ах, ключ був у тому, щоб знайти виконуваний файл Unix. Він також працює, suякщо бажає цього не робити sudo. Спасибі!
Jari Keinänen

Хм, коли я намагаюся запустити Google Chrome, я розумію:Trace/BPT trap: 5
Войцех Беднарський

Під час використання sudoпідходу я отримую збої входу, навіть якщо використовую правильний пароль для іншого користувача. suпрацює з іншого боку (немає пароля для кореневого набору)
LapplandsCohan

@lapplandscohan sudo бере пароль поточного користувача
1616

1
@ evan.bovie YTes показує, що вони подумали про безпеку
user151019

4

Дивіться /apple//a/102105/1860, чому suце не працює для всіх програм.

bsexec

Останні версії launchdмають можливість запускати програми протягом сеансу іншого користувача; хоча інженери Apple не рекомендували його загального використання.

Використовуйте bsexecопцію в startctl для націлювання на відповідний сеанс користувача:

 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.

Рекомендований підхід полягає в тому, щоб написати пусковий квиток на роботу та перезапустити Mac - або попросити користувача вийти з системи та знову ввійти.



0

Вам потрібно ssh. Тобто ssh username@123.456.00. Як ви вже сказали, вам знадобиться пароль для користувача. Тоді ви можете робити те, що просите. Вам потрібно буде ввімкнути віддалений вхід у розділі System Prefs> Sharing:
Налаштування віддаленого входу
Тоді ви можете просто зробити, open -a Firefoxі Firefox відкриється як інший користувач, а не ваш.


На жаль, я отримую: LSOpenURLsWithRole() failed for the application /Applications/Firefox.app with error -10810.при спробі open -a Firefox: - |
Jari Keinänen

@koiyu Trysudo open -na Firefox
daviesgeek

не виходить, як зазначено вище: - / (також використання шляху до виконуваного файлу unix не вдається, хоч інакше.)
Jari Keinänen

1
Процеси, розпочаті з сеансу SSH, не мають доступу до GUI. Якщо це працює у вашій системі, я підозрюю, що ви змінили конфігурацію низького рівня в якийсь момент.
Тобіас

1
@daviesgeek, але ви ввели SSH в іншого користувача, крім того, у кого зараз є графічний інтерфейс, як цього хотіла ОП.
Тобіас
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.