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.

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.


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.



0

Anda perlu ssh. Yaitu ssh username@123.456.00. 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.


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.