Tôi có thể bắt đầu một ứng dụng như một người dùng khác mà không thực sự chuyển đổi người dùng không?


17

Có cách nào để bắt đầu một ứng dụng như một người dùng khác để ứng dụng đã bắt đầu sử dụng các tùy chọn / lịch sử / tài nguyên của người dùng khác không?

Ví dụ: Tôi đã đăng nhập với tư cách Alice và tôi muốn khởi động Firefox với tư cách là Bob, do đó Firefox sẽ hiển thị lịch sử duyệt web của Bob thay vì Alice.

Tôi đã thử

$ su Bob
$ open -a Firefox

Nhưng không có tác dụng rõ ràng; như một vấn đề thực tế Trình giám sát hoạt động cho thấy quá trình Firefox đang được điều hành bởi Alice, không phải Bob.

Tôi hiểu rằng tôi sẽ cần thông tin đăng nhập của Bob, nhưng đó không phải là vấn đề.

Câu trả lời:


16

Từ dòng lệnh, bạn phải tìm Unix thực thi và chạy nó bằng sudo như vậy:

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

Hay hoặc tương tự với su: (tuy nhiên điều này cũng cần bạn thiết lập mật khẩu cho root - mà tôi không khuyến nghị)

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

(Hoài hoặc ở trên trong một dòng :)

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

Trước đây, cách dễ nhất cho máy Mac PPC là sử dụng Pseudo , nhưng nó đã bị ngưng từ lâu . Điều này là để thả biểu tượng ứng dụng trên biểu tượng hoặc cửa sổ của Pseudo.


Ah, chìa khóa là tìm Unix thực thi. Nó cũng hoạt động với sunếu một người không muốn sudo. Cảm ơn!
Jari Keinänen

Hmm, khi thử chạy Google Chrome, tôi nhận được điều này:Trace/BPT trap: 5
Wojciech Bednarski

Khi sử dụng sudophương pháp tôi gặp lỗi đăng nhập mặc dù tôi sử dụng đúng mật khẩu cho người dùng khác. sumặt khác hoạt động (không có mật khẩu cho bộ gốc)
LapplandsCohan

@lapplandscohan sudo lấy mật khẩu của người dùng hiện tại
user151019

1
@ evan.bovie YTes cho thấy họ đã nghĩ đến bảo mật
user151019

4

Xem /apple//a/102105/1860 để biết tại sao sukhông hoạt động cho tất cả các ứng dụng.

bsexec của launchd

Các phiên bản gần đây launchdcó khả năng khởi chạy các ứng dụng trong phiên của người dùng khác; mặc dù các kỹ sư của Apple đã không khuyến nghị sử dụng chung.

Sử dụng bsexectùy chọn trong launchctl để nhắm mục tiêu phiên người dùng phù hợp:

 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.

Cách tiếp cận được đề xuất là viết một vé công việc khởi động và khởi động lại máy Mac - hoặc yêu cầu người dùng đăng xuất và đăng nhập lại.



0

Bạn cần ssh. Tức ssh username@123.456.00. Như bạn đã nói, bạn sẽ cần mật khẩu cho người dùng. Sau đó, bạn có thể làm những gì bạn yêu cầu. Bạn sẽ cần kích hoạt đăng nhập từ xa trong System Prefs> Sharing:
Tùy chọn đăng nhập từ xa
Sau đó, bạn chỉ cần làm open -a Firefoxvà Firefox sẽ mở như người dùng khác, không phải của bạn.


Thật không may, tôi nhận được: LSOpenURLsWithRole() failed for the application /Applications/Firefox.app with error -10810.khi thử open -a Firefox: - |
Jari Keinänen

@koiyu Hãy thửsudo open -na Firefox
daviesgeek

nó không thành công như trên: - / (. cũng sử dụng đường dẫn đến unix thực thi thất bại, mặc dù khác nhau)
Jari Keinänen

1
Các quy trình bắt đầu từ phiên SSH không có quyền truy cập vào GUI. Nếu điều này hoạt động trên hệ thống của bạn, tôi nghi ngờ bạn đã thay đổi một số cấu hình cấp thấp tại một số điểm.
Tobias

1
@daviesgeek nhưng bạn đã SSH vào một người dùng khác ngoài người hiện có GUI, như OP muốn.
Tobias
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.