Denna delen av 99 uppdateras inte längre utan har arkiverats inför framtiden som ett museum.
Här kan du läsa mer om varför.
Mac-nyheter hittar du på Macradion.com och forumet hittar du via Applebubblan.

Köra program som annan användare i OS X?

Tråden skapades och har fått 4 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • Ale
  • 2006-06-23 15:04

Vet inte om denna hör till unixdelen, men det får väl en moderator bestämma.

Vill köra ett program som en annan användare i på min Macbook, någon som vet hur man kan göra detta?
Googlade och fann "su användare open -a Program", men då får jag "open: /usr/bin/open: cannot execute binary file".
Terminalkommando, applescript eller liknande spelar ingen roll, ju smidigare desto bätte eftersom jag alltid tänkt att köra den via den användaren av en viss anledning.

Tack på förhand.

Din metod funkar för mig, i alla fall så långt att programmet startar. Man får komma ihåg att lägga till .app, dock, och möjligen kan sökväg behövas i något fall (?). Exempel:
open -a TextEdit.app

Tyvärr så gör det här kommandot tyvärr inte att det öppnade programmet körs som användaren du su:ade till (åtminstone inte de program som jag testat), utan som den användaren som har nuvarande aktiva "grafiska" inloggningen.

Så vitt jag vet finns inget sätt att köra ett "grafiskt" program som en annan användare under OS X, men skulle bli glad om någon visar hur man gör.

Kanske man kan göra det med en sån där "sticky bit" för programfilen, så att programmet alltid körs som en annan användare? Någon får testa, för nu ska jag sova. God natt!

  • Medlem
  • Ale
  • 2006-06-24 03:15

Där ser man, det var ju ingen höjdare. Får fortfarande inte terminalkommandot att fungera men om det är på det viset du beskriver orkar jag inte ens försöka fixa det.
I Windowz är det väl, om jag minns rätt, bara att högerklicka på en fil så kan man välja att köra som annan användare?
NÅGOT sätt måste det finnas att göra detsamma i OSX :<

Eftersom du i osx blir tillfrågad efter namn/lösenord när du ska göra något som kräver behörighet (och där även kan mata in en admins uppgifter om du skulle va inloggad som vanlig användare) så tror ja dom valt att skippa de med "kör som" i GUI'et.

Den variant som finns i Windows är efterkonstruerad (jag tror den kom i Win2k SP4) för att folk inte alltid ska behöva köra som administratör, vilket tidigare var det ända sättet att kunna installera program utan att behöva logga ut och in igen som en administratör.

Jag prövade att ändra setuid-flaggan för programfilen till den användare som man vill köra programmet som, och det funkar faktiskt. Dock är det inte speciellt smidigt, och man får se upp med säkerheten. T ex krävs inte användarens lösenord för att köra programmet när inställningen väl är gjord, vilket innebär att vem som helst kan köra programmet som den användaren. Därmed kommer alla åt alla den användarens filer och liknande genom programmet, vilket kanske inte är så lyckat i alla lägen. Dessutom finns det kanske andra problem som jag inte kommer på nu.

Med detta i baktanke kan man göra som följer för att köra ett program som annan användare (men jag lämnar ingen garanti...):

Exempel för Textredigeraren (TextEdit.app). Det kan vara en bra idé att göra en kopia av programmet och använda det i stället, så man inte pajar något. Man får fylla i lösenord på ett par ställen.
1. Öppna terminalen
2. Byt till en adminanvändare, om du inte redan är det. T ex om adminanvändaren heter "admin", skriv som följer. Om du inte vet om du är admin eller inte så är du det antagligen och kan skippa detta steg.
$su admin
3. Gå till programmets mapp, t ex:
$cd /Applications/TextEdit.app/Contents/MacOS
4. Kolla programmets nuvarande ägare och kom ihåg:
$ls -l
total 256
-rwxrwxr-x . 1 root. admin. 128640 Mar 21. 2005 TextEdit
I mitt fall är alltså programmets nuvarande ägare "root".
5. Byt programmets ägare till den användare som programmet ska köras som. Vi kan kalla henne eva:
$sudo chown eva TextEdit
6. Set setuid-flaggan på programfilen så att det alltid körs som användaren som äger filen:
$chmod u+s TextEdit
7. Nu kommer programmet alltid att köras som om eva körde det när du startar det.

För att ändra tillbaka, gör bara samma sak i omvänd ordning. I exemplet ungefär:
$chmod u-s TextEdit
$sudo chown root TextEdit
Det här kan man göra medan programmet är igång, så att allt är återställt så snart man stängt programmet. På så sätt kan man minimera tiden som programmet kan startas som eva av alla.

Det borde vara möjligt att göra ett program som gör det ovan (förändring, start av program, återställning), och ber om lösenord och liknande. Men jag är rädd att det förblir ett säkerhetsproblem, den korta tiden programfilen är körbar som någon annan för alla.

(redigering: lite förtydling)

Senast redigerat 2006-06-24 22:40
1
Bevaka tråden