ฉันสามารถเริ่มแอปพลิเคชันเป็นผู้ใช้อื่นโดยไม่ต้องสลับผู้ใช้จริงได้หรือไม่


17

มีวิธีเริ่มแอปพลิเคชันในฐานะผู้ใช้รายอื่นเพื่อให้แอปพลิเคชันเริ่มต้นใช้การตั้งค่า / ประวัติ / ทรัพยากรของผู้ใช้รายอื่นหรือไม่

ตัวอย่างเช่น: ฉันเข้าสู่ระบบในฐานะอลิซและฉันต้องการเริ่ม Firefox เป็น Bob ดังนั้น Firefox จะแสดงประวัติการเรียกดูของ Bob แทนที่จะเป็นของอลิซ

ฉันเหนื่อย

$ su Bob
$ open -a Firefox

แต่ไม่มีผลชัดเจน; ตามความเป็นจริงการตรวจสอบกิจกรรมแสดงให้เห็นว่ากระบวนการ Firefox กำลังดำเนินการโดยอลิซไม่ใช่ Bob

ฉันเข้าใจว่าฉันจะต้องใช้ข้อมูลรับรองการเข้าสู่ระบบของ 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 Macs คือการใช้Pseudoแต่มันก็หยุดใช้ไปนานแล้ว นี่คือการปล่อยไอคอนแอปพลิเคชันบนไอคอนหรือหน้าต่างของ Pseudo


กุญแจสำคัญคือการหายูนิกซ์ที่ปฏิบัติการได้ มันทำงานยังมีหากประสงค์ที่จะไม่su sudoขอบคุณ!
Jari Keinänen

อืมเมื่อพยายามเรียกใช้ Google Chrome ฉันได้รับนี้:Trace/BPT trap: 5
วอย Bednarski

เมื่อใช้sudoวิธีการฉันได้รับความล้มเหลวในการเข้าสู่ระบบแม้ว่าฉันจะใช้รหัสผ่านที่ถูกต้องสำหรับผู้ใช้รายอื่น suใช้งานได้ในอีกทางหนึ่ง (ไม่มีรหัสผ่านสำหรับชุดรูท)
LapplandsCohan

@lapplandscohan sudo ใช้รหัสผ่านของผู้ใช้ปัจจุบัน
user151019

1
@ evan.bovie YTes แสดงให้เห็นว่าพวกเขาคิดถึงความปลอดภัย
user151019

4

ดู/apple//a/102105/1860สำหรับสาเหตุที่ใช้suไม่ได้กับทุกแอปพลิเคชัน

bsexec ของ launchd

เวอร์ชันล่าสุดของlaunchdความสามารถในการเปิดใช้งานแอปพลิเคชันภายในเซสชันของผู้ใช้อื่น แม้ว่าวิศวกรของ Apple จะไม่แนะนำให้ใช้งานทั่วไป

ใช้bsexecตัวเลือกในlaunchctlเพื่อกำหนดเป้าหมายเซสชันผู้ใช้ที่เหมาะสม:

 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.

วิธีที่แนะนำคือการเขียนตั๋วงาน launchd และรีสตาร์ท Mac - หรือขอให้ผู้ใช้ออกจากระบบและกลับมาอีกครั้ง


1

อีกหนึ่งวิธี:

# chown someuser command
# chmod u+s command
$ ./command

ขอบคุณ wysota ที่: http://www.qtcentre.org/threads/4730-Linux-Bash-Run-a-command-as-another-user

(ใช้เวลามากมายในการตามล่าหาสิ่งที่ใช้ได้ในสถานการณ์เฉพาะของฉันคิดว่าฉันจะกระจายความมั่งคั่ง)


0

คุณต้อง ssh ssh username@123.456.00กล่าวคือ อย่างที่คุณพูดคุณจะต้องใช้รหัสผ่านสำหรับผู้ใช้ จากนั้นคุณสามารถทำสิ่งที่คุณถาม คุณจะต้องเปิดใช้งานการเข้าสู่ระบบจากระยะไกลภายใต้ System Prefs> Sharing:
การตั้งค่าระยะไกลเข้าสู่ระบบ
จากนั้นคุณสามารถทำได้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 แต่คุณทำให้ SSH เป็นผู้ใช้อื่นที่ไม่ใช่ GUI ที่มีอยู่ในปัจจุบันตามที่ OP ต้องการ
โทเบียส
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.