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)