我希望能夠從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和mount命令成功,但是當我嘗試卸載目錄時,出現錯誤umount failed:Operation not permitted。我猜這是因爲子進程用戶對local_data_directory的父文件夾沒有寫權限。當我檢查local_data_directory的權限時,它說所有者是用戶#1004。這是Python子進程的默認用戶嗎?我想我可以給這個用戶寫入所有父目錄的權限,但我不想給我的整個主文件夾提供子進程寫入能力。有沒有辦法解決這個問題呢?
可以掛載目錄的命令行(即成功地執行相同的指令)?在類似debian的系統上,您需要屬於「fuse」組才能這樣做。 –
@hiro主角不,我不能那樣做。 – mdornfe1
那麼它不是python的問題。你需要在轉向python之前運行它。 google'sshfs fuse'結合您的linux發行版的名稱和版本。順便說一下:python的子進程沒有默認用戶。該進程將由運行你的程序的python解釋器的用戶擁有。這通常是你的用戶'id'。 –