É possível executar software como um usuário diferente no OS X Mountain Lion?

4

Estou tentando executar aplicativos como um usuário diferente.

Attempt 1 % sudo -u otheruser open /Applications/TextEdit.app inicia o aplicativo, mas ele usa o usuário atual, não otheruser .

Tentativa 2 de login username e su - otheruser fazer login com êxito como otheruser , o usuário diferente é exibido no Activity Monitor, mas algo como open /Applications/TextEdit.app retorna o erro LSOpenURLsWithRole() failed with error -10810 for the file /Applications/TextEdit.app.

Tentativa 3 em sudo su - otheruser -c /Applications/TextEdit.app/Contents/MacOS/TextEdit parece iniciar o aplicativo (ele aparece no Activity Monitor, conforme lançado por otheruser ), mas esse erro aparece enquanto o ícone do dock é devolvido indefinidamente: _RegisterApplication(), FAILED TO establish the default connection to the WindowServer, _CGSDefaultConnection() is NULL.

Pergunta
Então, como eu executo um aplicativo como um usuário diferente?

    
por bfred.it 16.05.2013 / 04:38

4 respostas

1

As respostas a esta pergunta não parecem ser completamente corretas para mim no 10.8 Mountain Lion. Acho recatado tem um erro de digitação no ponto 2, deve haver algo mais do que o "-". O que funciona para mim: sua tentativa 3, sem su e -c .

sudo -u testuser /Applications/TextEdit.app/Contents/MacOS/TextEdit

Isso abre o TextEdit como testuser e eu poderia salvar um arquivo em / . Salvar para a pasta user do testuser não funcionou, mas isso pode ser devido a eu dar a esta conta muito poucos direitos, já que eu a utilizo para outros propósitos de teste. Curiosamente, eu poderia log-in como root, mesmo que eu tenha o usuário root desativado em KeyChain.app. Isso parece afetar somente o login da área de trabalho a partir da raiz, não do login do Terminal. O arquivo salvo como testuser tinha os privilégios de propriedade corretos etc. definidos.

$ cd /
$ ls -la | grep testuser
-rw-r--r--    1 testuser  staff      330 18 Okt 20:07 Untitled.rtf
    
por 18.10.2013 / 20:21
1

Normalmente, a execução de um aplicativo GUI como um usuário diferente (exceto alguns casos de softwares de GUI desenvolvidos para raiz) não funciona realmente.

Este costumava funcionar, não tenho certeza se ainda funciona nos macs atuais. Verbatim:

This is regurgitating a hint I got from the comments section of another hint about Apache (I think). What this does is allow you to keep a program within the constraints of another user, without having that user logged in via the GUI. Run a suspect program within a bubble! I'd advise setting up a dummy account with very limited access if you wanted to make a "bubble." Note: I'm going to refer to the subsequent account as the "bubble account" and that account's session as the "bubble" from now on to give you the right idea about this.

  1. Open a new terminal window
  2. Type the following where short_name is the short name of the "bubble" account: sudo short_name -
  3. Type the password to the "bubble" account.
  4. Type the following where app_name is the name of the app you wish to open: /Applications/app_name.app/Contents/MacOS/app_name
    For instance, this would launch Safari:
    /Applications/Safari.app/Contents/MacOS/Safari

A couple of things to remember (very important!):

  • Copying and pasting between this app and others will not work unless the others are also in the bubble.
  • Apps running from within the bubble will still be able to launch subsequent applications under the original account (from what I can tell). For instance, going to an ftp:// URL in Safari while it's in the bubble will use the Finder running in the non-bubble account, with all available privileges.
  • Closing the terminal (or hitting Ctrl+C while in the window) will close the app running within the bubble. Many programs will show exceptions and weird messages in the Terminal at various times while the program is running, if you've programmed before you'll know this is totally normal and expected.
  • The programs running in the bubble may have different appearance settings than those you would otherwise run. To change this, login under the bubble account and go to System Preferences
  • Running two copies of a program (one inside and one outside the bubble) works absolutely perfectly, in fact I'm writing this on my "bubbled" Safari app right now!
  • Some problems may occur, like not being able to drag and drop using Safari. Work around them *This does not seem to save preferences with the bubble account as file vault if the user is not logged in in the background.

E outro método hack-ish. Mas os dois exemplos a seguir são para aplicativos X11

sudo -i -u other_user \'  
  env DISPLAY="$DISPLAY" XAUTHORITY="${XAUTHORITY-$HOME/.Xauthority}" \'  
  xapplication'  

ou

xauth extract -f - "$DISPLAY" |'  
sudo -u other_user xauth -f ~other_user/.Xauthority merge -'
    
por 16.05.2013 / 05:11
1

Caso alguém ainda esteja procurando uma maneira de fazer isso, eu encontrei este app:

EXECUTAR como link

Isso está funcionando para mim. (testando com o app box.com sync no momento)

    
por 28.01.2014 / 22:14
0

Use open para iniciar um aplicativo.

Exemplos

-a option - abre o nome do arquivo usando o aplicativo TextWrangler -:

 sudo su - david  -c "open -a TextWrangler filename"

-e option - abre o myfilename usando o aplicativo TextEdit -:

sudo su - user  -c "open -e myfilename"
    
por 16.05.2013 / 14:58