Bisakah saya memulai aplikasi sebagai pengguna lain tanpa benar-benar berpindah pengguna?

17

Apakah ada cara untuk memulai aplikasi sebagai pengguna lain sehingga aplikasi yang dimulai akan menggunakan preferensi / riwayat / sumber daya milik pengguna lain?

Misalnya: Saya sudah masuk sebagai Alice dan saya ingin memulai Firefox sebagai Bob, jadi karena itu Firefox akan menampilkan riwayat penelusuran Bob alih-alih Alice.

Saya mencoba

$ su Bob
$ open -a Firefox

Tetapi tanpa efek nyata; Faktanya Monitor aktivitas menunjukkan proses Firefox dijalankan oleh Alice — bukan Bob.

Saya mengerti bahwa saya akan memerlukan kredensial login Bob, tetapi itu tidak masalah.

Jari Keinänen
sumber

Jawaban:

16

Dari baris perintah Anda harus menemukan Unix yang dapat dieksekusi dan menjalankannya menggunakan sudo seperti:

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

… Atau sama dengan su: (namun ini juga mengharuskan Anda mengatur kata sandi untuk root - yang saya tidak rekomendasikan)

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

(... atau yang di atas dalam satu baris :)

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

Di masa lalu, cara termudah untuk PPC Mac adalah menggunakan Pseudo , tetapi telah lama dihentikan . Ini untuk menjatuhkan ikon aplikasi pada ikon atau jendela Pseudo.

pengguna151019
sumber
Ah, kuncinya adalah menemukan Unix yang dapat dieksekusi. Ini bekerja juga dengan sujika seseorang tidak menginginkannya sudo. Terima kasih!
Jari Keinänen
Hmm, ketika mencoba menjalankan Google Chrome saya mendapatkan ini:Trace/BPT trap: 5
Wojciech Bednarski
Saat menggunakan sudopendekatan saya mendapatkan kegagalan login meskipun saya menggunakan kata sandi yang benar untuk pengguna lain. subekerja di sisi lain (tidak ada kata sandi untuk root)
LapplandsCohan
@lapplandscohan sudo mengambil kata sandi dari pengguna saat ini
user151019
1
@ evan.bovie YTes menunjukkan mereka telah memikirkan keamanan
user151019
4

Lihat /apple//a/102105/1860 untuk alasan mengapa sutidak bekerja untuk semua aplikasi.

bsexec launchd

Versi terbaru launchdmemiliki kemampuan meluncurkan aplikasi dalam sesi pengguna lain; meskipun insinyur Apple belum merekomendasikan penggunaan umumnya.

Gunakan bsexecopsi di launchctl untuk menargetkan sesi pengguna yang sesuai:

 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.

Pendekatan yang disarankan adalah menulis tiket kerja launchd dan memulai kembali Mac - atau meminta pengguna untuk log-out dan kembali lagi.

Graham Miln
sumber
0

Anda perlu ssh. Yaitu ssh [email protected]. Seperti yang Anda katakan, Anda akan memerlukan kata sandi untuk pengguna. Maka Anda dapat melakukan apa yang Anda minta. Anda harus mengaktifkan login jarak jauh di bawah System Prefs> Sharing:
Preferensi Login Jauh
Kemudian, Anda bisa melakukannya open -a Firefoxdan Firefox akan terbuka sebagai pengguna lain, bukan milik Anda.

daviesgeek
sumber
Sayangnya saya mendapatkan: LSOpenURLsWithRole() failed for the application /Applications/Firefox.app with error -10810.ketika mencoba open -a Firefox: - |
Jari Keinänen
@koiyu Trysudo open -na Firefox
daviesgeek
gagal seperti di atas: - / (juga menggunakan path ke executable unix gagal, meskipun berbeda.)
Jari Keinänen
1
Proses yang dimulai dari sesi SSH tidak memiliki akses ke GUI. Jika ini berfungsi pada sistem Anda, saya curiga Anda mengubah beberapa konfigurasi tingkat rendah di beberapa titik.
Tobias
1
@daviesgeek tetapi apakah Anda SSH menjadi pengguna selain orang yang saat ini memiliki GUI, seperti yang diinginkan OP.
Tobias