私は、Pythonサブプロセスモジュールからsshfsを呼び出すディレクトリをマウントしてからアンマウントすることができます。これを達成するために使用しているコードは次のとおりです。sshfsとPython Subprocessを使用してフォルダをマウントおよびマウント解除する方法は?
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のサブプロセスのデフォルトユーザーですか?私はちょうどそのユーザーにすべての親ディレクトリのアクセス権を与えることができると思うが、私は私のホームフォルダ全体に対してサブプロセス書き込み能力を与えたくない。これをしないとこれを解決する方法はありますか?
のfusermountを使用することですか? Debianのようなシステムでは、 'fuse'グループに所属する必要があります。 –
@hiro主人公いいえ、私はそれもできません。 – mdornfe1
それはPythonの問題ではありません。あなたはPythonに目を向ける前にそれを実行する必要があります。 Googleの 'sshfs fuse'とあなたのLinuxディストリビューションの名前とバージョンの組み合わせ。ところで、Pythonのサブプロセスのデフォルトユーザーはありません。あなたのプログラムを実行しているPythonインタプリタを実行するユーザがプロセスを所有します。これは通常あなたのユーザ 'id'です。 –