Я хочу, чтобы смонтировать, а затем размонтировать каталог, вызывающий sshfs из модуля подпроцесса Python. Вот код, который я использую для этого.Как монтировать и размонтировать папку с sshfs и подпроцессом Python?
import subprocess
mkdir_command = 'mkdir {}'.format(local_data_directory)
unmount_command = 'umount {}'.format(local_data_directory)
mount_command = 'sshfs -o allow_other -o IdentityFile={} {}@{}:{} {}'.format(
key_file, host_username, host_ip, host_data_directory, local_data_directory)
subprocess.call(mkdir_command, shell=True)
subprocess.call(mount_command, shell=True)
subprocess.call(unmount_command, shell=True)
MkDir и монтируем команда успешно, но когда я пытаюсь размонтировать каталог я получаю размонтировать Ошибка: Операция не допускается. Я предполагаю, что это связано с тем, что пользователь подпроцесса не имеет права на запись в родительскую папку local_data_directory. Когда я проверяю разрешение local_data_directory, он говорит, что владельцем является пользователь # 1004. Является ли это пользователем по умолчанию для подпроцесса Python? Думаю, я мог бы просто дать этому пользователю доступ на запись ко всем родительским каталогам, но я не хочу давать возможность записи подпроцесса для всей моей домашней папки. Есть ли способ решить это, не делая этого?
вы можете смонтировать каталог в командной строке (т.е. выполнить ту же самую команду успешно)? на девианоподобных системах для этого вам необходимо принадлежать группе 'fuse'. –
@hiro главный герой Нет, я тоже не могу. – mdornfe1
, то это не проблема с python. вам нужно запустить этот запуск, прежде чем перейти к python. google 'sshfs fuse' в сочетании с именем и версией вашего дистрибутива Linux. Кстати, для подпроцесса python нет пользователя по умолчанию. процесс будет принадлежать пользователю, который запускает интерпретатор python, запускающий вашу программу. который обычно является вашим пользователем 'id'. –