欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Ubuntu下使用CIFS掛載Windows共享資源

程序员文章站 2022-05-11 18:12:01
...

前言

本篇記錄兩種在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上。使用rsynccp把檔案複製到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>