linux下掛載windows上的共享目錄,並設定所有者為非root使用者
阿新 • • 發佈:2019-01-01
參考了很多文章,這裡總結下我得出來的最優答案(針對我的需求而言)吧,但是還是存在bug,稍後指出!
以下是我的bash指令碼,防止多次重複掛載,相信看了就能明白:
[[email protected] share]$ cat m.sh #!/bin/bash src="//192.168.1.77/game" dest="/home/zcm/share/game" cmd="mount -t cifs -o rw,username=admin,password=1111,uid=1000,gid=1000,iocharset=cp936,file_mode=0777,dir_mode=0777 $src $dest" if [ `df | grep share | wc -l` -eq 0 ]; then echo "not mounted" echo $cmd $cmd else echo "mounted" echo umount $dest umount $dest fi
通過這種方式掛載後,$dest目錄就能屬於非root使用者zcm了,同時新建的檔案或目錄的許可權都為0777,即同時具有rwx許可權。
簡單說明:admin / 1111為訪問windows上共享目錄時的使用者名稱和密碼, uid和gid後的1000是linux下使用者zcm的使用者id和組id,可通過"id zcm“看到
bug:
我嘗試通過cocos new 建立一個HelloWorld工程到$dest目錄下,在建立過程中會失敗,提示無法獲取“$dest"目錄下要建立的檔案的狀態,接下來掛載的目錄就無法訪問了,只有重啟windows後重新掛載才行。
這個問題,還未找到解決辦法,提示是"I/O錯誤",我想是不是與-t cifs這種協議本身有關呢,因為我是在這個共享目錄中建立目錄的,從結果來看,有部分檔案和目錄是建立成功了,但是有些卻失敗,不解。若有解決方案,希望可以交流下。
copy其他普通目錄到這個共享目錄下,我未作實際測試,因為老要重啟windows,下次再試吧。
==================================================================
以上的mount方式,只有執行一次才能掛載上去。如果要讓系統啟動時自動掛載上去,需要在/etc/fstab檔案末尾新增一行掛載項,如:
//192.168.1.77/game /home/zcm/share/game cifs defaults,username=admin,password=1111,uid=1000,gid=1000 0 2
這裡第4列的選項與mount -o 時的內容不一定完全相容,可能有些在mount中能識別的選項在fstab中無法識別的,如file_mode等。