在Linux下訪問Windows共享文件夾

在Linux下訪問Windows共享文件夾

說明
以下操作以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 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]

Enjoy!
可能遇到的問題

使用過程中可能遇到各種各樣的問題,其結果往往是一樣的:無法訪問目標文件夾。這裏列出幾個可能遇到的問題以及可能的原因和解決辦法。
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)的特性決定的,修改掛載指令是沒辦法優化這個問題的。
解決方法
如果是命令行操作,那麼就只好等待了。如果是在應用程序中使用,則建議使用多線程操作,單開一個臨時線程卸載掛載的文件夾,臨時線程的假死不會影響主線程。

原文地址
https://www.cnblogs.com/xia-weiwen/p/7416666.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章