2009-07-16 4 views
3

Хорошо, настройка немного запутана. Не обвиняйте меня, я не системный администратор.Установка удаленной файловой системы с использованием SSHFS

Прошлая ситуация. Существует одна машина, в которой я могу использовать SSH вне сети. Я могу удалять только root (да, вы слышали правильно), используя мой закрытый ключ. Я знаю, что более типично регистрироваться как пользователь, а затем повышать привилегии, но в этом случае я должен делать обратное.

Проблема в том, что я хочу использовать SSHFS, чтобы удаленно монтировать файловую систему. У меня это работает отлично. Тем не менее, я не хочу, чтобы каждый файл, с которым я сталкивался, отражал права root. Я хотел бы де-подъем сначала (su для учетной записи пользователя).

Кто-нибудь знает, как я могу это сделать с помощью SSHFS?

+0

Если я правильно понял, вы можете использовать sshfs в корневую систему на удаленной системе, но не можете (из-за sysadmin, а также root) sshfs в менее привилегированную учетную запись? – Inshallah

+1

serverfault.com? – liori

+0

У меня была аналогичная проблема, и я обнаружил, что папка, которую я пыталась редактировать, на самом деле была символической ссылкой. Я теперь sshfs непосредственно в папку (фактический реальный путь, не следуя символической ссылке). Это сработало для меня. – Richard

ответ

8

Вы можете создать сценарий для перехвата вызова подсистемы sftp на удаленном компьютере. Поместите следующий сценарий где-то на удаленном сервере, скажем/корень/бен/sftp_intercept:

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

, а затем сделать вызов, как так:

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

Это должно затем дать желаемых результатов.

Вам понадобится подходящая запись sudoers, чтобы сделать работу sudo без запроса пароля и не забудьте «chmod 755 ~/bin/sftp_intercept».

Кроме того, убедитесь, что/usr/lib/openssh/sftp-server - это действительно путь к sftp-серверу. Если нет, то, возможно, это/usr/lib/sftp-server.

+1

Что, после 'sudo', никто не помнит' su' anymor? 'su less-privileged_user -c '/ usr/lib/openssh/sftp-server'' обычно не требует никакого пароля от root. – ephemient

+1

Большое спасибо ... sudo вызвало проблемы по неизвестной причине ... Я закончил использование -o sftp_server = "su user -c 'exec/usr/libexec/openssh/sftp-server'" –

1

SSHFS страница руководства предполагает, что передача

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

к вашему SSHFS вызова должен установить пользователя/группы файлов, создаваемых для этого UID/GID. Очевидно, вам нужно найти их на удаленной системе.

+0

Эти параметры затрагивают только локальные файлы, а не файлы на удаленном компьютере. Из вопроса не совсем ясно, является ли это то, что нужно; Я думаю, что это могут быть файлы на удаленной машине, которые он хочет изменить. – Inshallah