2009-07-16 15 views
3

Ok, la configuration est un peu compliquée. Ne me blâme pas, je ne suis pas le sysadmin.Monter un système de fichiers distant à l'aide de SSHFS

Voici la situation. Il y a une machine à partir de laquelle je peux utiliser SSH en dehors du réseau. Je peux seulement à distance en tant que root (oui, vous avez bien entendu) en utilisant ma clé privée. Je sais que c'est plus typique de se connecter en tant qu'utilisateur et d'élever les privilèges, mais dans ce cas, je dois faire le contraire.

Le problème est que je veux utiliser SSHFS afin de monter le système de fichiers à distance. J'ai cela fonctionne parfaitement. Cependant, je ne veux pas que tous les fichiers que je muck avec reflètent les permissions root. Je voudrais de-lever d'abord (su à un compte d'utilisateur). Quelqu'un sait-il comment je peux le faire avec SSHFS?

+0

Si je comprends bien, vous pouvez sshfs en root sur le système distant mais ne pouvez pas (à cause de l'administrateur système, aussi root) sshfs dans un compte moins privilégié? – Inshallah

+1

serverfault.com? – liori

+0

J'ai eu un problème similaire et j'ai trouvé que le dossier que j'essayais de modifier était en fait un lien symbolique. Je sshfs maintenant directement dans le dossier (le vrai chemin réel, ne pas suivre un lien symbolique). Cela a fonctionné pour moi. – Richard

Répondre

8

Vous pouvez créer un script pour intercepter l'appel du sous-système sftp sur l'ordinateur distant. Mettez le script suivant quelque part sur le serveur distant, disons/root/bin/sftp_intercept:

#!/bin/sh 
exec sudo -u less_privileged_user /usr/lib/openssh/sftp-server 

puis faire l'appel comme ceci:

sshfs [email protected]:dir mountpoint -o sftp_server=/root/bin/sftp_intercept 

Cela devrait alors donner les résultats escomptés.

Vous aurez besoin d'une entrée sudoers appropriée pour que sudo fonctionne sans mot de passe, sans oublier "chmod 755 ~/bin/sftp_intercept".

Assurez-vous également que/usr/lib/openssh/sftp-server est bien le chemin vers le serveur sftp. Sinon, c'est peut-être/usr/lib/sftp-server.

+1

Après quoi 'sudo', personne ne se souvient de' su' anymor? 'su less-privileged_user -c '/ usr/lib/openssh/sftp-server'' ne devrait généralement pas nécessiter de mot de passe root. – ephemient

+1

Merci beaucoup ... sudo a causé des problèmes pour une raison inconnue ... J'ai fini par utiliser -o sftp_server = "su utilisateur -c 'exec/usr/libexec/openssh/sftp-server'" –

1

Le sshfs manpage suggère que le passage

-o uid=$YOURUID -o gid=$YOURGID

à votre appel de sshfs doit définir l'utilisateur/groupe des fichiers que vous créez à ce uid/gid. Vous devrez les trouver sur le système distant, évidemment.

+0

Ces options affectent uniquement les fichiers locaux et non les fichiers sur l'ordinateur distant. De la question, il n'est pas tout à fait clair si c'est ce que l'on veut; Je pense que ce peut être les fichiers sur la machine distante dont il veut changer la propriété. – Inshallah