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


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 엔지니어는 일반적인 사용을 권장하지 않습니다.

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

 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.