Pseudo-Sudo su Cygwin / bash


0

Ho bisogno che sudo funzioni, beh non sudo stesso ma un modo per consentire ai comandi sudo di funzionare come descritto qui .

Questo sarebbe fantastico, tuttavia le righe sudo hanno argomenti extra, come:

sudo -u user bash -c 'uptime'

E se dovessi usare la bash nel link sopra ottengo semplicemente l'output

/usr/bin/sudo: line 3: -u: command not found

C'è un modo per aggirare questo? Per farlo partire dalla citazione, invece che forse -c.

Risposte:


1

Se sei sicuro che il comando inviato sarà sempre esattamente come

sudo -u user command...

quindi il tuo falso script sudo può semplicemente eliminare i suoi primi due argomenti:

#!/bin/bash
shift 2
exec "$@"

Altrimenti, devi fare una piccola discussione analizzando:

#!/bin/bash
while getopts :u: opt
do
  # normally you'd process options and arguments here,
  # but in this case just ignore them
done
shift $((OPTIND-1))  # throw out processed options and arguments
exec "$@"

getoptslegge e restituisce opzioni e argomenti della riga di comando, fino a quando non ce ne sono più. Puoi leggerlo in bash (1) ( man bash) se vuoi saperne di più su come elaborare gli argomenti della riga di comando.


Le linee vengono inviate in remoto e sono in quel formato. L'utente da cui fuggono non è importante in questo caso, basta eseguire il resto per eseguirlo
Marcus Hughes

Ok capisco. Aggiornato.
Andrew Schulman,

0

Questo è quello che ho usato per sudo per eseguire Ansible sotto babun:

#!/bin/bash
count=0

for var in "$@"
  do
    (( count++ ))
  done

shift $count
exec "$@"

Forse puoi usare $#per il conteggio. # Si espande al numero di parametri posizionali in decimale.
Hastur,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.