Ubuntu下使用CIFS掛載Windows共享資源
Ubuntu下使用CIFS掛載Windows共享資源
前言
本篇記錄兩種在Ubuntu下掛載Windows CIFS的方式:mount
及/etc/fstab
。
方法一:mount
cifs-utils
是掛載SMB/CIFS shares所需的套件,使用以下指令安裝:
sudo apt update -y
sudo apt install cifs-utils -y
創建掛載的目標路徑,並實際掛載:
sudo mkdir /mnt/<your_target_dir>
sudo mount -t cifs -o vers=1.0,user=<yourusername>,password=<yourpassword> "//<windows_share_ip_addr>/<your_source_dir>" /mnt/<your_target_dir>
其中//<windows_share_ip_addr>/<your_source_dir>
是掛載的源目錄,/mnt/<your_target_dir>
是掛載的目標目錄。<yourusername>
及<yourpassword>
則是用於登入Windows CIFS share的帳號密碼。
方法二:/etc/fstab
上面的做法是把帳號密碼以明文寫在指令中的,如果想用安全一點的方式,可以參考Mount Windows (CIFS) shares on Linux with credentials in a secure way。
它的做法是把帳號密碼記錄到一個只有root可讀的檔案裡,然後在掛載時到該檔案裡提取所需的帳號密碼。
編輯credential檔案:
sudo vim /root/.smbcred
填上登入Windows CIFS所需的帳號密碼:
username=<yourusername>
password=<yourpassword>
將它改成只有root可讀:
sudo chmod 400 /root/.smbcred
查看權限修改是否成功:
sudo ls -al /root/.smbcred
-r-------- 1 root root 32 Apr 29 17:31 /root/.smbcred
接下來編輯/etc/fstab
這個檔案:
vim /etc/fstab
參考/etc/fstab 檔案說明,它的作用如下:
Linux 下有一個配置檔案 /etc/fstab,它的作用是設定硬碟分割區或其化儲存裝置,在開機時掛載點及如何掛載等選項。
在裡面加上如下內容:
//<windows_share_ip_addr>/<your_source_dir> /mnt/<your_target_dir> cifs credentials=/root/.smbcred 0 0
設定開機自動掛載
筆者是在Ubuntu 20.04的docker container裡進行測試的,照著方法二的步驟做了之後,發現docker container重啟後並未自動掛載。
試了CIFS mount through fstab not mounting at boot裡提到的幾個方法後都沒有用,最後是參考HowTo: Remount /etc/fstab Without Reboot in Linux,在/etc/bash.bashrc
裡加上:
mount -a
如此一來,在不同的使用者登入時,都會自動掛載。
修改權限
一個使用場景是把Linux端的檔案備份到Windows share上。使用rsync
或cp
把檔案複製到Windows share上之後,嘗試登入Windows share查看,會發現只有掛載的用戶有權寫入及刪除。如果希望所有人都能對檔案進行修改,則需修改檔案的權限:
sudo chmod -R 777 /mnt/<your_target_dir>/
Troubleshooting
Unable to apply new capability set
如果在使用mount
指令時碰到如下錯誤:
Unable to apply new capability set.
參考docker&&samba|“Unable to apply new capability set”问题,在docker run
後面加上:
--privileged=true
給予container最高權限,即可解決。
bad option; for several filesystems (e.g. nfs, cifs) you might need a /sbin/mount
如果在使用mount
指令時碰到如下錯誤:
mount: /mnt/<your_target_dir>: bad option; for several filesystems (e.g. nfs, cifs) you might need a /sbin/mount.<type> helper program.
表示缺少掛載CIFS必要的套件。使用如下指令安裝:
sudo apt update -y
sudo apt install cifs-utils -y
Couldn’t chdir to /mnt/<your_target_dir>: No such file or directory
如果在使用mount
指令時碰到如下錯誤:
Couldn't chdir to /mnt/<your_target_dir>: No such file or directory
表示掛載的目標目錄不存在。在使用mount
指令之前,需要先手動創建掛載的目標目錄:
mkdir /mnt/<your_taget_dir>
上一篇: BP把油井搬上物联网 开采变得更智能
下一篇: 年末大盘点 当心云计算应用里的漂白效应