Come faccio a sudo over sshfs?

Sul mio host locale alpha ho un directory foo che viene mappato tramite sshfs per ospitare il bravo come segue:

 $ sshfs charlie@bravo:/home/charlie ~/foo 

Tuttavia, nel bravo host c'è un altro utente, delta, che voglio sudo /bin/su come, in modo che posso lavorare in bravo:/home/delta . delta non può essere collegato tramite ssh; per motivi che non posso cambiare, puoi solo superare il delta una volta che sei sulla macchina.

Normalmente avrei ssh in bravo , poi sudo al delta, ma mi chiedo se c'è qualche modo che posso farlo quando ho il direttore di casa di charlie montato via ssh.

  • Errore Sudo "devi avere un tty per eseguire sudo"
  • l'errore si è verificato un command in sudo da crontab
  • Perché non sudo where psql è?
  • Come funziona "sudo !!" in bash
  • Hai bisogno di accesso root per eseguire completamente il backup di un server?
  • Come evitare di specificare il path completo nel file sudoers?
  • Registri sudoer e report via email
  • Perché il mio lavoro Upstart funziona con sudo ma non con setuid?
  • 4 Solutions collect form web for “Come faccio a sudo over sshfs?”

    Ciò varia a seconda del sistema operativo del server a cui si sta collegando. Per centOS 5 si aggiunge alle opzioni di mount sshfs:

    -o sftp_server="/usr/bin/sudo /usr/libexec/openssh/sftp-server"

    Per Ubuntu 9.10 (penso, potrebbe essere il 9.04, ma probabilmente è lo stesso per entrambi) o Debian si aggiunge:

    -o sftp_server="/usr/bin/sudo /usr/lib/openssh/sftp-server" .

    Per trovare un path corretto per altri sisthemes in esecuzione openSSH

    sudo grep Subsystem /etc/ssh/sshd_config

    e cercare la posizione del binario sftp-server.

    Potrebbe essere necessario configurare sudo con NOPASS: {path to sftp-server} o prevalidare con ssh user@host sudo -v modo che sudo abbia un timestamp aggiornato per non. Nel mio caso i miei due comandi erano:

     ssh login_user@host sudo -v sshfs login_user@host:remote_path local_path -o sftp_server="/usr/bin/sudo -u as_user /usr/lib/ssh/sftp-server" 

    Potresti provare (ma non credo che functionrà):

     sshfs -o ssh_command='ssh sudo /bin/su bravo' charlie@bravo:/home/charlie ~/foo 

    Non capisco bene i sshfs, quindi potresti essere in grado di get qualcosa di simile al lavoro, ma non potrei dire come e sarei un po 'sorpreso.

    Un'altra possibilità è quella di inserire il command 'sudo / bin / su bravo' in ~ / .ssh / rc, ma questo avrebbe influenzato tutti i vostri montaggi fs (supponendo che funzionasse, che dubito anche) e il tuo normale uso di ssh .

    Mi dispiace per essere un derby debbie.

    Da deduzione, credo che questo sia imansible da raggiungere in un semplice command.

    Questo perché sshfs chiama ssh senza passare alcun command, ma utilizza invece SFTP che è un sottosistema di SSH.

    Dalla manpage di sshfs :

    Sul computer remoto viene utilizzato il sottosistema SFTP di SSH.

    Inoltre , cambiando l'utente corrente (o 'su' o 'sudo') non fa parte del protocollo SFTP, anche se questo sembra una caratteristica molto spesso richiesta.

    Probabilmente, il modo migliore è attraverso le autorizzazioni di file, come propone @artifex.

    Come dice @Weboide, è imansible tramite sshfs.

    Ma suppongo che tu possa creare un semplice script, diciamolo sudossh che prenderà il tuo $PWD , convertirlo in /home/delta/ e eseguire il command tramite ssh e sudo sulla macchina remota.

    Qualcosa come questo:

     #!/usr/bin/env bash ssh -t charlie@bravo "cd `pwd | sed 's/user\/foo/delta/'`; sudo -u delta $*" 

    Dopo di che è ansible eseguire il sudossh command e ricordarsi di utilizzare i routes relativi.

    Se si utilizza ssh-agent, è sufficiente inserire la password sudo .

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.