Come posso creare sudo in 2 schede per richiedere la password una sola volta?

0

Ho uno script per automatizzare l'avvio di alcuni server sul terminale. Questi sono i processi server del software che sto sviluppando. Possono essere ricompilati e modificati più volte al giorno. I binari possono vivere in luoghi diversi (copie funzionanti).

Il mio script usa

 set sudo to do shell script "sudo -v "

per chiedere la password di root una volta, quindi crea una nuova finestra terminale iterm2 (e alcune schede) e prova ad avviare i server con sudo:

#!/usr/bin/osascript
on run args
    set sudo to do shell script "sudo -v " -- to ask for password once only
    tell application "iTerm"
        create window with default profile
        tell current window
            tell current session
                write text "sudo /some/server"
            end tell
            -- more tabs and more sudos go here
        end tell
    end tell
end run

Tutto ha funzionato bene su El Capitan, ma non su High Sierra.

Se la password sudo non è memorizzata nella cache, sudo -v richiede la mia password e quindi procede --- come previsto. Se ho eseguito sudo prima e la password è stata memorizzata nella cache, sudo -v non richiede una password, di nuovo, come previsto. Ma in entrambi i casi, ciascuno dei successivi sudo s nella nuova finestra richiede la mia password, rendendo l'intera operazione scomoda.

Quando aggiungo with administrator privileges all'inizio sudo richiede la mia password in una finestra di dialogo popup, ma le seguenti chiamate sudo con write text richiedono ancora la password sulla shell. (Io uso write text e il terminale per tenere d'occhio le uscite di questi server.)

Posso eseguire regolarmente comandi sudo bene e memorizza nella cache la password.

Come posso utilizzare sudo in Applescript in una nuova finestra di iTerm2 e chiedere la password una sola volta?

EDIT : sembra che questo non sia correlato a Applescript ma a iterm e High Sierra. Quando apro una finestra di terminale con 2 schede, devo inserire la mia password in entrambi quando eseguo, ad esempio, sudo ls . Dopo che entrambe le schede hanno la password sudo memorizzata nella cache, ma l'esecuzione di sudo in una scheda non fa in modo che l'altra scheda utilizzi la password sudo memorizzata nella cache.

Quindi la vera domanda è probabilmente: come faccio a ottenere iTerm2 per memorizzare nella cache la password sudo e condividerlo tra schede e finestre?

    
posta Robert 24.01.2018 - 17:47
fonte

1 risposta

1

Prova ad aggiungere:

Defaults !tty_tickets

in / etc / sudoers. Testato su 10.13.6 (High Sierra).

Dalla pagina man:

If set, users must authenticate on a per-tty basis. With this flag enabled, sudo will use a separate record in the time stamp file for each tty. If disabled, a single record is used for all login sessions. This flag is on by default.

    
risposta data 20.12.2018 - 18:23
fonte

Leggi altre domande sui tag