AppleScript invoca usuário específico e senha -- terminal campo com applescript campo com password campo com command-line camp apple Relacionado O problema

Applescript Invoke Specific User and Password


2
vote

problema

português

Eu tenho um do shell script que eu preciso executar no AppleScript, mas ele precisa ser executado como um usuário diferente. Deve ser implantado na unidade de rede do aluno como um aplicativo independente que os alunos podem ser executados quando necessário.

O código de exemplo abaixo é apenas para ilustração. Este código funciona quando estou logado, porque ele está pegando meu nome de usuário (conta de administrador local) no computador e usa a senha fornecida (não a senha real incluída).

  do shell script "rm -rf /$HOME/Downloads/*" password "Password01" with administrator privileges    

Eu tentei especificar um nome de usuário com user "sdadmin" para o código e não funciona, ele lança um erro.

Existe uma maneira de perguntar ao AppleScript para executar um comando com um usuário e senha específicos fornecidos no código como acima?

english

I have a do shell script that I need to run in Applescript, but it needs to run as a different user. It is to be deployed into the student's network drive as a standalone application that the students can run when required.

The example code below is only for illustration. This code works when I am logged in, because it's picking up my username (local admin account) on the computer and uses the password provided (not the actual password included).

do shell script "rm -rf /$HOME/Downloads/*" password "Password01" with administrator privileges 

I have tried to specify a username with user "sdadmin" to the code and it won't work, it throws an error.

Is there a way to ask AppleScript to run a command with a specific user and password provided in the code like above?

           
 
 

Lista de respostas

4
 
vote
vote
Melhor resposta
 

Resposta atualizada:

há um Apple doc que mostra o correto maneira de fazer isso. Você estava perto.

(eu não tentei para mim)

do script de shell "RM -RF / $ HOME / DOWNLOAD / *" Nome de usuário "Nome de usuário" "ThePassword" com privilégios de administrador

do doc :

.

Como obtenho privilégios de administrador para um comando?

Use os privilégios de administrador, nome de usuário e parâmetros de senha assim:

fazer shell script "comando" nome de usuário "me" senha "mypassword" com Administrador privilégios O nome de usuário e a senha são opcionais; se vocês omitir o nome de usuário, o script do shell assume que é o usuário atual; Se você omitir a senha, ela solicitará uma senha quando for executada. Depois que um script é autenticado corretamente, ele não solicitará autenticação novamente por cinco minutos. A partir do Mac OS X 10.4, esta graça período não se estende a quaisquer outros scripts ou para o resto do sistema; chamando manualmente sudo -k é desnecessário.

Por razões de segurança, você pode não contar a outro aplicativo para fazer shell script com privilégios de administrador. Coloque o comando fora de qualquer Diga o bloco ou coloque-o dentro de um bloco Diga-me.

Tenha em mente que os privilégios de administrador permitem que você altere qualquer arquivo em qualquer lugar no sistema. Você pode tornar seu sistema deficiente ou até apagar todo o disco com alguns comandos bem colocados, então precaução no exercício. Melhor ainda, não use privilégios de administrador A menos que você tenha absolutamente. A menos que você esteja fazendo nível de sistema Desenvolvimento, você nunca deve precisar alterar qualquer coisa em / sistema - Mudança / biblioteca deve ser suficiente.

Nota: Usando sudo (8) com os privilégios de administrador é geralmente desnecessário e cria buracos de segurança; simplesmente remova o "sudo".


atualização importante 2

* Você pode salvar o aplicativo como "Executar apenas" (salve uma cópia editável para você primeiro)

(se você apenas salvá-lo como executar apenas até mesmo você não poderá abri-lo e editá-lo mais tarde depois de ter fechado a janela de script.)

Então use o menu file-& gt; export que lhe dará a opção no diálogo Salvar para salvar como "Executar somente"

Digite a descrição da imagem aqui

Tentativa de abrir o arquivo main.scpt no pacote de aplicativos:

Digite a descrição da imagem aqui

Uma execução só vai parar alguém de abrir o script incorporado no aplicativo clicando duas vezes nele para abri-lo no editor de script e descobrir sua senha. Mas há uma maneira de encontrar o nome de usuário e a senha de uma corrida apenas e não é tão difícil descobrir mesmo para um usuário casual.

Eu pensaria duas vezes sobre colocar seu nome de usuário e senha no aplicativo.


update 3

Uma pequena ideia para ajudar se você precisar fazer isso é quebrar o texto da senha, criando um nome de variável sem sentido para segurá-lo e jumbia eles.

Quando o código é executado, ele remonta-os na ordem correta.

Por exemplo.

Se a senha for 88 & gt; 0tpffpax

Eu vou usar:

      set T to "Tp"     set Po to "88"     set TC to "Fpax"     set TEH to ">0" do shell script "say blahbla" user name "markhunte" password (Po & TEH & T & TC as string) with administrator privileges    

Observe que não apenas a variável não significa nada ou mostre qualquer sentido de ordem, mas os bits de senha também estão se misturados dentro deles.

Tudo até que o código seja executado.

Portanto, mesmo que eles tropeçam sobre como fazer o que estou falando sobre a senha não será montado em qualquer ordem que possa ser usada apenas.

 

Updated answer:

There is an Apple doc which shows the correct way of doing it. You was close.

(I have not tried it myself)

do shell script "rm -rf /$HOME/Downloads/*" user name "USERNAME" password "THEPASSWORD" with administrator privileges

From the doc:

How do I get administrator privileges for a command?

Use the administrator privileges, user name and password parameters like this:

do shell script "command" user name "me" password "mypassword" with administrator privileges user name and password are optional; if you omit the user name, do shell script assumes it to be the current user; if you omit the password, it will ask for a password when it runs. Once a script is correctly authenticated, it will not ask for authentication again for five minutes. As of Mac OS X 10.4, this grace period does not extend to any other scripts or to the rest of the system; manually calling sudo -k is unnecessary.

For security reasons, you may not tell another application to do shell script with administrator privileges. Put the command outside of any tell block, or put it inside a tell me block.

Bear in mind that administrator privileges allow you to change any file anywhere in the system. You can render your system unbootable or even erase the entire disk with a few well-placed commands, so exercise caution. Better yet, donxe2x80x99t use administrator privileges unless you absolutely have to. Unless you are doing system-level development, you should never need to change anything in /System xe2x80x94 changing /Library should suffice.

Note: Using sudo(8) with with administrator privileges is generally unnecessary and creates security holes; simply remove the "sudo".


IMPORTANT UPDATE 2

*You can save the app as "run only" (Save an editable copy for yourself first)

( If you only save it as a Run Only even you will not be able to open it and edit it later on once you have closed the script window.)

Then use the File->Export menu which will give you the option in the save dialogue to save as "Run Only"

enter image description here

Attempt to open main.scpt file in application package:

enter image description here

A Run only will stop someone from opening the script embedded in the Application by double clicking on it to open it in Script Editor and discover your password. But there is a way of finding the user name and password from a Run Only and it is not that hard to figure out even for a casual user.

I WOULD THINK TWICE ABOUT PUTTING YOUR USER NAME AND PASSWORD IN THE APP.


UPDATE 3

A little idea to help if you must do this is to break up the password text by creating nonsensical variable name to hold it and jumble them.

When the code runs it will reassemble them in the correct order.

For example.

if the password is 88>0TpFpax

I will use:

    set T to "Tp"     set Po to "88"     set TC to "Fpax"     set TEH to ">0" do shell script "say blahbla" user name "markhunte" password (Po & TEH & T & TC as string) with administrator privileges 

Notice that not only do the variable not mean anything or show any sense of order but the bits of password are also jumbled within them.

All until the code runs.

So even if they do stumble on how to do what I am talking about the password will not be assembled in any order that it can just be used.

 
 
         
         

Perguntas relacionadas

6  Os comandos de linha de comando podem ser insensíveis à ordem de nomes e opções de arquivos?  ( Can command line commands be made insensitive to order of filenames and options ) 
Eu sou novo para o uso do MAC. Parece que a maioria dos comandos tropega as opções dadas após os nomes dos arquivos. No Linux, que eu usei há anos, não import...

4  Obtenha o tempo de CPU do usuário e do sistema de processo no OSX via linha de comando?  ( Get per process user and system cpu time on osx via command line ) 
Estou familiarizado com ABCDEFGHIJKLMNABCDEFGHIJKLMN0 Comando que fornece Usuário e System CPU separados por processo no Linux: $ sudo pidstat -p 3162 Li...

18  Como atualizar o aplicativo App Store a partir da linha de comando?  ( How to update app store application from command line ) 
Eu gostaria de forçar uma atualização de aplicativos de aplicativos da linha de comando. Como posso fazer isso? ...

1  Problema com sintaxe de exclusão de conta script  ( Problem with scripted account deletion syntax ) 
Estou trabalhando em um módulo de script de limpeza de contas que pode lidar com as contas ocultos e unilindas que estamos criando em massa em novos sistemas ...

1  Sintaxe de comando do terminal enrolado do AppleScript  ( Curl terminal command syntax from applescript ) 
Eu quero executar um comando curl no AppleScript que faz o seguinte ( por esta pergunta / resposta ): https://superuser.com/a/1054803/471181. . ... faze...

1  Como executar o script do shell no lançamento do aplicativo?  ( How to run shell script upon application launch ) 
Não tenho certeza se isso pertence aqui ou no superusuário, mas é o Mac específico, então eu vou com aqui. Eu escrevi um script Ruby que edita o arquivo de ...

26  Como posso inspecionar as variáveis ​​de ambiente de um processo de execução?  ( How can i inspect the environment variables of a running process ) 
Existe algum equivalente (CLI ou GUI) para o recurso ABCDefGHIJKLMNABCDefGHIJKLMN0 ...

1  Como corrigir localize.updatedb não respeitando o diretório excluído de /etc/locate.rc?  ( How to fix locate updatedb not respecting directory excluded from etc locate rc ) 
Eu queria excluir alguns diretórios a partir dos resultados de ABCDEFGHIJKLMNABCDEFGHIJKLMN0 Ao editar ABCDEFGHIJKLMNABCDEFGHIJKLMN1 . Infelizmente se eu e...

4  Fazer Localizador.Updatedb Run Diariamente no Snow Leopard sem Hacking / System / Library?  ( Make locator updatedb run daily on snow leopard w o hacking system library ) 
No banco de dados ABCDEFGHIJKLMNABCDEFGHIJKLMBCDefGHIJKLMN1 é atualizado uma vez por semana por um trabalho de lançamento, /System/Library/LaunchDaemons/co...

0  Como esse script AWK funciona?  ( How does this awk script work ) 
Eu tenho 2 arquivos de dados contendo uma coluna. Eu quero fazer outro arquivo de dados mesclando as duas colunas. Eu tenho a linha de comando na concha, mas ...




© 2022 pergunte.org All Rights Reserved. Casa de perguntas e respostas todos os direitos reservados


Licensed under cc by-sa 3.0 with attribution required.