É possível executar um aplicativo GUI do OS X como root?

4

É possível executar um aplicativo GUI do Mac OS X como root quando você está logado como um usuário diferente? [Sim, reconheço que isso geralmente é uma má ideia.]

Quando eu tento

sudo open /Path/To/My.app

ele é executado como usuário logado, até onde eu sei.

[Tenho certeza que você está se perguntando por que eu quero fazer isso. Suspiro. Estou executando o NetRestore em uma imagem do NetBoot que não foi criada pelo NetRestore Helper, já que preciso executar algum outro software de GUI depois de fazer a restauração. Ele faz login em uma conta de administrador padrão. Normalmente, quando você executa o NetRestore, ele pede para você autenticar antes de restaurar. Parece que determina que é NetBooted e assume que está executando sob a conta raiz e se recusa a solicitar autenticação e, portanto, tem permissões insuficientes para executar uma restauração.]

[Provavelmente terei que ajustar minha configuração de netbooting para que ele faça o login automaticamente na conta root, mas se eu pudesse apenas executar um aplicativo como root, levaria muito menos tempo para configurar.]

[Sim, eu poderia criar outro método para fazer uma restauração multicast, mas o NetRestore é comprovado, amigável e ainda funciona com o Leopard. Como alternativa, posso usar o comando asr com iHook .]

    
por Clinton Blackmore 28.07.2009 / 20:24

2 respostas

9

Não use open se você quiser executar como outro usuário. Abrir inicia o aplicativo que você está solicitando através do LaunchServices, que irá carregá-lo como se você tivesse clicado nele.

Se, no entanto, você executar o binário do aplicativo diretamente, ele funcionará. Por exemplo, como root (assim, de um script que já está sendo executado como root ou via sudo ), execute /Applications/TextEdit.app/Contents/MacOS/TextEdit e o TextEdit será executado como root.

    
por 30.07.2009 / 07:17
2

Você pode tentar Pseudo para isso, já que pode usá-lo para iniciar aplicativos com os sysadmin's privilégios.

Não sei bem o que você está perguntando. Se você quer que algo seja executado automaticamente, você pode, eu acho, usar o recurso de documento de lançamento do programa para criar um caminho de inicialização. Eu não usei esse recurso, mas pode ser algo que você queira analisar.

    
por 28.07.2009 / 20:34