실제로 사용자를 전환하지 않고 다른 사용자로 응용 프로그램을 시작할 수 있습니까?


17

시작된 응용 프로그램이 다른 사용자의 환경 설정 / 이력 / 자원 등을 사용하도록 다른 사용자로 응용 프로그램을 시작하는 방법이 있습니까?

예를 들어 : Alice로 로그인했고 Firefox를 Bob으로 시작하고 싶습니다. 따라서 Firefox는 Alice 대신 Bob의 인터넷 사용 기록을 표시합니다.

나는 시도했다

$ su Bob
$ open -a Firefox

그러나 명백한 효과는 없습니다. 사실 활동 모니터에 따르면 Bob이 아니라 Alice가 Firefox 프로세스를 실행하고 있음이 표시됩니다.

Bob의 로그인 자격 증명이 필요하다는 것을 알고 있지만 문제는 아닙니다.

답변:


16

명령 행 에서 Unix 실행 파일을 찾아 sudo를 사용하여 다음 과 같이 실행해야합니다 .

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

... 또는 su와 동일 : (그러나 이것은 또한 루트 암호를 설정해야합니다-권장하지 않습니다)

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

(… 또는 위의 한 줄로 :)

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

과거에는 PPC Mac의 가장 쉬운 방법은 Pseudo 를 사용하는 것이었지만 오랫동안 중단되었습니다 . 이것은 의사 아이콘 또는 창에 응용 프로그램 아이콘을 놓기위한 것입니다.


아, 열쇠는 유닉스 실행 파일을 찾는 것이 었습니다. su원하지 않는 경우 에도 작동 합니다 sudo. 감사!
Jari Keinänen

흠, 구글 크롬을 실행하려고 할 때 나는 이것을 얻는다 :Trace/BPT trap: 5
Wojciech Bednarski

sudo방법을 사용할 때 다른 사용자에 대해 올바른 비밀번호를 사용하더라도 로그인이 실패합니다. su반면에 작동합니다 (루트 세트 용 비밀번호 없음)
LapplandsCohan

@lapplandscohan sudo는 현재 사용자의 비밀번호를 사용합니다
user151019

1
@ evan.bovie의, 킬로바이트 프로그램들이 보안의 생각
user151019

4

모든 응용 프로그램에서 작동하지 않는 이유 는 /apple//a/102105/1860 을 참조 하십시오su .

발사 된 bsexec

최신 버전은 launchd다른 사용자 세션 내에서 응용 프로그램을 시작하는 기능이 있습니다. Apple 엔지니어는 일반적인 사용을 권장하지 않습니다.

적절한 사용자 세션을 대상으로하려면 launchctlbsexec옵션을 사용하십시오 .

 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. 당신이 말했듯이, 당신은 사용자의 암호가 필요합니다. 그런 다음 원하는 것을 할 수 있습니다. 시스템 환경 설정> 공유 :에서 원격 로그인을 활성화해야합니다.
원격 로그인 환경 설정
그러면 할 수 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

위와 같이 실패합니다 :-/ (또한 유닉스 실행 파일에 대한 경로를 사용하면 실패하지만, 다르게).
Jari Keinänen

1
SSH 세션에서 시작된 프로세스는 GUI에 액세스 할 수 없습니다. 이것이 시스템에서 작동하면 어느 시점에서 일부 저수준 구성을 변경했다고 생각합니다.
Tobias

1
@daviesgeek이지만 OP가 원했던 것처럼 현재 GUI가있는 사용자가 아닌 다른 사용자에게 SSH로 연결 했습니까?
Tobias
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.