Выполнение в параллельных данных рисков, изменяющихся между тем, когда Вы сделали копию и обновление копии соответственно. Обновление приложений для указания на новое имя хоста может вызвать горе также.
Я рекомендовал бы использовать параллельную установку для тестирования каждого приложения, но однажды удовлетворенный тестированием я буду, вероятно, использовать Отсоединение/Присоединение: Как переместить базы данных SQL Server в новое местоположение при помощи Отсоединения, и Присоединение функционирует в SQL Server
Это будет варьироваться в зависимости от ОС сервера, с которым Вы соединяетесь. Для centOS 5 Вы добавили бы к sshfs, монтируют опции:
-o sftp_server="/usr/bin/sudo /usr/libexec/openssh/sftp-server"
Для Ubuntu 9.10 (я думаю, мог бы быть 9.04, но это - вероятно, то же для обоих), или Debian, который Вы добавили бы:
-o sftp_server="/usr/bin/sudo /usr/lib/openssh/sftp-server"
.
Найти корректный путь для других систем, работающих openSSH выполненным
sudo grep Subsystem /etc/ssh/sshd_config
и ищите местоположение двоичного файла sftp-сервера.
Вы, возможно, должны были бы установить sudo с NOPASS: {путь к sftp-серверу} или предварительно проверить с ssh user@host sudo -v
так, чтобы sudo
имеет обновленную метку времени для notty
. В моем случае мои две команды были:
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"
Вы могли бы попробовать (но я не думаю, что это будет работать):
sshfs -o ssh_command='ssh sudo /bin/su bravo' charlie@bravo:/home/charlie ~/foo
Я не понимаю sshfs очень хорошо, таким образом, Вы смогли заставлять что-то как этот работать, но я не мог сказать, как, и я буду немного удивлен.
Другая возможность состоит в том, чтобы поместить команду 'sudo/bin/su браво' в ~/.ssh/rc, но это влияло бы на все Ваши опоры фс (предполагающий, что это работало, относительно которого я также сомневаюсь), а также Ваша нормальная эксплуатация ssh.
Извините за то, чтобы быть debbie занудой.
Вычетом я думаю, что этого невозможно достигнуть в простой команде.
Это вызвано тем, что sshfs называет ssh, не передавая команды, но, вместо этого, использует SFTP, который является подсистемой SSH.
Из sshfs страницы справочника:
На удаленном компьютере используется подсистема SFTP SSH.
Плюс, изменяя текущего пользователя (или 'su' или 'sudo') не часть протокола SFTP, хотя это походит на очень часто требуемую функцию.
Вероятно, лучший способ через полномочия файла, как @artifex предполагает.
Как @Weboide говорит, это невозможно через sshfs.
Но я предполагаю, что Вы могли создать простой сценарий, давайте назовем его sudossh
это возьмет Ваш $PWD
, преобразуйте его в /home/delta/
и прокрученный команда ssh
и sudo
на удаленной машине.
Что-то вроде этого:
#!/usr/bin/env bash
ssh -t charlie@bravo "cd `pwd | sed 's/user\/foo/delta/'`; sudo -u delta $*"
После этого можно выполниться sudossh command
и не забудьте использовать относительные пути.
При использовании ssh-агента просто необходимо ввести Ваш sudo
пароль.
Вы можете использовать bindfs + sshfs для доступа к другим пользовательским файлам (даже root).
Сначала вы монтируете ваш 'root' или любую другую директорию под вашим пользователем с помощью remapped uid.
ssh -t USER@SERVER "mkdir ~/tmproot; sudo bindfs --map=root/USER / ~/tmproot"
а затем просто sshfs в каталог.
sshfs USER@SERVER:tmproot TARGET
Но для безопасности лучше не монтировать весь корневой каталог /
а только ту часть, которая вам нужна.
Например: Вы можете использовать этот метод для монтирования любого другого пользовательского каталога к вашему, например, файлы из /var/www в ~/www и возврата корня к вашему пользователю, чтобы у вас был полный доступ к нему.
Если вам нужен доступ для сохранения uid или доступа к нескольким пользователям, то я создам нового пользователя, например, "rootfs" с uid=0 и /bin/false и сделаю обычный sshfs.
. Мое решение ужасно некрасиво (благодаря нескольким уровням экранирования строк), но оно будет читать путь к sftp-серверу
из / etc / ssh / sshd_config
и выполните его через sudo
. Что теперь, если sshd_config
не находится в / etc / ssh
? Может быть, выполнить поиск внутри двоичного файла ssh
с строками
и grep
?
#!/bin/sh
sshfs -o sftp_server="/bin/sh -c \"sudo \`sed -n '/Subsystem\\\\\\\\s\\\\+sftp\\\\\\\\s\\\\+/{s///;p}' /etc/ssh/sshd_config\`\"" "$@"