NO IMAGE

說明
以下操作以Ubuntu為例,大家可以參考。

我在Ubuntu 14.04和16.04都試過了。

Windows共享資料夾

如果區域網內有一臺Windows主機,將指定資料夾設為共享,就可以在區域網內訪問了。
如果要從Linux下訪問該如何操作呢?

使用 mount.cifs

Windows共享資料夾使用的協議是SMB/CIFS。因而可以使用Linux下的smbclient在命令列中進行操作。
如果想更方便地在圖形桌面環境使用,則可以使用mount.cifs指令,將共享資料夾掛載到指定位置,然後就可以像訪問一個本地資料夾一樣訪問了。

首先安裝依賴的包

使用mount.cifs需要cifs-utils軟體包(以及cifs-utils依賴的軟體包)。

sudo mount.cifs //[address]/[folder] [mount point] -o user=[username],guest,uid=[UID]

$ sudo apt install cifs-utils

(插一句嘴:現在apt安裝可以直接使用apt而不用apt-get了)

掛載共享資料夾

可以使用如下兩種指令(效果是一樣的)

sudo mount.cifs //[address]/[folder] [mount point] -o user=[username],passwd=[pw]

或者

sudo mount -t cifs //[address]/[folder] [mount point] -o user=[username],passwd=[pw]

其中共享資料夾的地址是Windows主機的地址加上資料夾名稱,這個可以在Windows主機上看到。例如//192.168.0.100/share
掛載點是Linux本地的一個空資料夾。
後面的選項指定了使用者名稱和密碼。

檔案操作

掛載成功後,通過圖形化的檔案管理器就可以直接操作了。複製、貼上、刪除等等。
不過,然而,可是……你很快就會發現,這個資料夾可讀不可寫!只能往外面複製,不能新建檔案或者向裡面複製。
檢視資料夾屬性後會發現,原來這個資料夾在掛載之後,owner變成了root。怎麼辦呢?不能每次拷個檔案還要sudo吧?那還得開啟命令列,不直觀,多麻煩。
別急,mount.cifs還提供了一個選項,那就是指定掛載後的owner!用法如下:

sudo mount.cifs //[address]/[folder] [mount point] -o user=[username],passwd=[pw],uid=[UID]

在選項中指定使用者的UID就可以了。
檢視某個使用者UID的方法:

id -u [username]

之後就可以正常操作了!

解除安裝

最後如果要解除安裝共享資料夾,使用umount即可

sudo umount [mount point]

可能遇到的問題

使用過程中可能遇到各種各樣的問題,其結果往往是一樣的:無法訪問目標資料夾。這裡列出幾個可能遇到的問題以及可能的原因和解決辦法。

1、目標主機在某個域中

一般個人電腦不會使用域管理(Windows PC版壓根兒就沒有域管理服務),但是在一個企業或者組織中,可能會用Windows伺服器的域管理功能,統一管理內部的Windows電腦。登入在域中的計算機時,登入介面會顯示域名。

用上面的指令就沒有辦法登入處於域中的計算機共享資料夾,可能的報錯是input/output error

解決方法
使用domain選項來指定域名:

sudo mount.cifs //[address]/[folder] [mount point] -o domain=[domain_name],user=[username],passwd=[pw],uid=[UID]

2、希望免密碼登入

有些時候,為了方便起見希望不使用密碼登入。

解決方法
使用guest選項。

sudo mount.cifs //[address]/[folder] [mount point] -o user=[username],guest,uid=[UID]

不過需要注意的是,如果要免密碼登入,不僅客戶端的登入指令要變,更重要的是在目標主機上要進行相關設定,允許Guest賬戶登入,或者允許免密碼登入。具體設定方式,這裡就不涉及了,與Windows系統版本有關,不過大同小異。

3、賬戶密碼正確,但連線失敗

錯誤資訊是permission denied。這種情況可能是(1)在Linux系統中,你沒有掛載許可權;(2)Windows目標主機訪問時許可權不足
解決方法
如果是第一種情況,那麼請使用有掛載許可權的賬戶操作,比如root。

如果是第二種情況,請進入Windows共享檔案設定相關介面進行設定。因為可能原因是(1)你使用的賬戶不能訪問這個資料夾;(2)Windows針對當前的網路連線關閉了檔案共享;(3)其他配置原因。

4、斷網的情況下假死

如果在已經連線成功的情況下斷網,此時對已經掛載的共享資料夾進行任何操作(包括讀取和解除安裝),都會導致假死(可能要卡住1-2分鐘才能恢復)。這是網路檔案系統(NFS)的特性決定的,修改掛載指令是沒辦法優化這個問題的。
解決方法
如果是命令列操作,那麼就只好等待了。如果是在應用程式中使用,則建議使用多執行緒操作,單開一個臨時執行緒解除安裝掛載的資料夾,臨時執行緒的假死不會影響主執行緒。