Synology 進階:分享 subfolder

[anti-both]

用 synology 建 立 共 享 資 料 夾 (share),大 家 都 會 吧 。所 有 由 系 統 建 立 的 共 享 資 料 夾 ,都 儲 存 在 /volume1/ 裡 面 (假 設 你 只 有 一 個 volume)。例 如 你 在 系 統 建 立 了 一 個 共 享 資 料 夾 叫 job,那 它 的 實 際 路 徑 就 是 /volume1/job。

有 時 候 會 遇 到 一 種 問 題 ,就 是 我 把 不 同 部 門 和 同 事 要 我 幫 忙 的 工 作 都 放 在 job 裡 面 ,好 方 便 我 自 己 管 理 。但 因 為 不 同 部 門 的 同 事 權 限 不 同 ,我 又 不 能 夠 將 job 都 分 享 給 他 們 。

\volume1\job
\volume1\job\peter
\volume1\job\john
\volume1\job\tom

但 假 如 我 每 個 同 事 都 建 立 一 個 共 享 資 料 夾 呢 ?權 限 問 題 是 解 決 了 ,但 我 自 己 管 理 又 不 方 便 ,例 如 說 我 可 能 要 map 很 多 不 同 的 drive。

\volume1\peter
\volume1\john
\volume1\tom

那 究 竟 在 synology 上 ,可 不 可 以 直 接 把 子 資 料 夾 分 享 出 來 呢 ?當 然 是 可 以 的 。但 可 惜 的 是 ,在 synology 的 網 頁 管 理 介 面 上 ,卻 還 沒 有 把 這 功 能 做 出 來 。

一 般 NAS 都 是 運 行 Linux 操 作 系 統 的 。在 Linux 上 分 享 檔 案 給 Windows,就 會 用 上 Samba Server。跟 大 部 分 的 Linux 軟 體 一 樣 ,Samba 在 開 始 運 行 的 時 間 會 讀 取 設 定 檔 ,去 決 定 運 行 的 方 式 。所 有 分 享 資 料 夾 和 權 限 ,其 實 就 儲 存 在 smb.conf 裡 面 。

要 進 入 synology 裡 面 做 設 定 ,首 先 我 們 要 打 開 ssh 連 線 。

SSH 設 定

在 windows 環 境 ,筆 者 喜 歡 使 用 putty 來 做 ssh 連 線 。

putty 軟 體

登 入 Linux 時 要 用 root 帳 號 ,它 的 密 碼 是 和 你 的 admin 密 碼 是 一 樣 的 。

登 入 之 後 ,我 們 可 以 用 Linux 內 建 的 文 字 編 輯 軟 體 vi 來 打 開 smb.conf 看 看 。vi 就 像 是 windows 的 notepad 一 樣 (但 用 法 就 很 不 一 樣 了 ,呵 呵 )。

vi /usr/syno/etc/smb.conf

打 開 之 後 ,就 會 看 得 到 你 之 前 在 網 頁 管 理 介 面 已 經 建 立 好 的 分 享 資 料 夾 。

smb.conf 檔 案

我 們 先 解 釋 一 下 其 中 一 組 吧 。

[18K]
        invalid users=nobody,nobody
        valid users=nobody,@administrators,@Boss Team,@18K Team,nobody
        comment=""
        path=/volume1/18K
        guest ok=yes
        browseable=no
        fileindex=no
        mediaindex=no
        edit synoacl=no
        ftp disable list=no
        ftp disable modify=no
        ftp disable download=no
        read list=nobody,nobody
        write list=nobody,@18K Team,@administrators,@Boss Team,nobody
        writeable=yes

[18K] 就 是 你 在 網 路 上 看 到 的 分 享 名 稱 ,例 如 \\server\18K,就 能 連 到 這 個 分 享 資 料 夾 。
path 參 數 ,就 是 這 個 資 料 夾 在 synology 裡 的 實 際 路 徑 ,例 如 /volume1/18K。
valid users,就 是 有 權 限 進 入 這 個 資 料 夾 的 人 士 ,有 @ 符 號 的 就 代 表 群 組 (group)。
write list,就 是 擁 有 寫 入 權 限 ,相 對 的 ,read list 的 人 士 就 只 能 讀 取 了 。
browseabe,就 相 當 於 「在 網 路 芳 鄰 隱 藏 」。
edit synocal,就 等 於 「Windows 存 取 控 制 清 單 」(ACL)。
file index,就 是 「啟 動 檔 案 索 引 」。
ftp 那 幾 項 ,就 相 當 於 「進 階 權 限 設 定 」裡 面 的 選 項 。

明 白 了 這 些 參 數 是 什 麼 ,我 們 就 可 以 嘗 試 建 立 自 己 的 分 享 資 料 夾 了 。因 為 步 驟 涉 及 使 用 vi,所 以 先 簡 單 的 學 一 下 vi 吧 。vi 運 行 的 時 候 ,會 分 為 「一 般 模 式 」、「編 輯 模 式 」和 「命 令 模 式 」。剛 打 開 vi 的 時 候 就 是 「一 般 模 式 」,你 可 以 進 行 find & replace,copy & paste 等 的 動 作 。在 「一 般 模 式 」時 按 「 i 」,就 可 以 進 入 「編 輯 模 式 」,左 下 角 個 有 I 字 樣 ,這 時 候 你 就 可 以 像 一 般 文 字 編 輯 軟 體 般 去 輸 入 文 字 。輸 入 完 成 之 後 ,就 可 以 按 「 : 」進 入 「命 令 模 式 」,這 時 可 以 儲 存 和 離 開 。

我 們 先 去 到 檔 案 的 最 尾 的 一 個 分 享 資 料 夾 ,把 游 標 (cursor)停 在 [share name] 的 那 一 行 ,輸 入 「16yy」,那 是 複 製 16 行 的 意 思 。因 為 synology 建 立 的 分 享 資 料 夾 ,都 是 16 行 一 組 的 ,我 們 一 次 過 複 製 一 組 ,等 一 下 就 不 用 自 己 打 那 麼 多 的 字 。再 把 游 標 移 到 最 後 一 行 ,按 「p」,這 是 貼 上 的 意 思 。

這 時 候 我 們 可 以 按 「 i 」進 入 「編 輯 模 式 」,對 新 增 的 那 一 組 參 數 進 行 修 改 。

[job-peter]
        invalid users=nobody,nobody
        valid users=nobody,@job-peter,nobody
        comment=""
        path=/volume1/job/peter
        guest ok=yes
        browseable=no
        fileindex=no
        mediaindex=no
        edit synoacl=no
        ftp disable list=no
        ftp disable modify=no
        ftp disable download=no
        read list=nobody,nobody
        write list=nobody,@job-peter,nobody
        writeable=yes

在 上 面 的 例 子 ,筆 者 新 增 了 一 個 分 享 資 料 夾 ,叫 做 job-peter,路 徑 就 指 向 /volume1/job/peter,就 是 peter 的 子 資 料 夾 。權 限 方 面 ,筆 者 只 加 入 了 一 個 叫 job-peter 的 群 組 。記 得 在 valid users 和 write list 都 要 加 入 。

筆 者 習 慣 為 每 一 個 自 定 的 分 享 資 料 夾 都 建 立 一 個 相 應 的 群 組 ,這 樣 的 話 ,只 要 進 入 網 頁 管 理 介 面 去 修 改 該 群 組 的 用 戶 ,就 可 以 方 便 地 控 制 資 料 夾 的 權 限 了 。不 用 每 次 都 進 入 synology 修 改 smb.conf 檔 。

修 改 好 之 後 ,我 們 按 「Esc」回 到 「一 般 模 式 」。然 輸 入 「:wq」再 按 「enter」。「:」是 進 入 「命 令 模 式 」,「w」就 是 儲 存 檔 案 (write),「q」就 是 離 開 的 意 思 (quit)。

要 令 新 的 smb.conf 生 效 ,我 們 要 重 新 啟 動 一 次 Samba Server。

/usr/syno/etc/rc.d/S80samba.sh restart

然 後 我 們 從 windows 進 入 \\server\job-peter 就 可 以 見 到 設 定 生 效 了 。(假 如 你 未 建 立 job-peter 群 組 的 話 ,你 要 先 登 入 網 頁 管 理 介 面 設 定 好 )

本 來 故 事 應 該 到 此 處 就 結 束 了 ,但 如 果 你 手 多 多 ,reboot 了 你 的 synology NAS,你 就 會 發 現 ,剛 才 設 定 好 的 分 享 資 料 夾 不 見 了 。(哈 哈 哈 哈 哈 ……別 打 我 )

為 什 麼 呢 ?原 來 Synology 在 啟 動 的 時 候 ,會 把 smb.conf 檔 回 復 到 「正 常 」的 設 定 。所 有 自 定 義 的 分 享 資 料 夾 ,通 通 都 不 會 保 留 。那 我 們 又 有 什 麼 對 策 呢 ?

其 實 也 很 簡 單 ,我 們 先 建 立 一 個 自 己 的 設 定 檔 ,裡 面 只 包 含 我 們 自 己 建 立 的 分 享 資 料 夾 。再 在 synology 回 復 了 smb.conf 之 後 ,把 我 們 的 自 定 義 分 享 資 料 夾 加 入 去 (append)。實 際 操 作 如 下 。

我 們 先 新 增 一 個 自 己 的 設 定 檔 ,例 如 我 叫 它 做 smb.conf_job。把 它 放 在 原 來 的 smb.conf 的 同 一 個 資 料 夾 。

vi /usr/syno/etc/smb.conf_job

裡 面 的 內 容 就 是 我 們 之 前 新 增 在 smb.conf 的 部 分 。(就 是 [job-peter] 那 16 行 ,如 要 增 加 多 於 一 個 分 享 資 料 夾 的 話 就 照 加 ,筆 者 自 己 加 了 差 不 多 20 個 也 沒 有 問 題 )

然 後 ,我 們 在 bootup 的 script 裡 面 ,加 入 append 到 smb.conf 的 命 令 。

先 打 開 S02bootup.sh 檔 案 。

vi /usr/syno/etc.defaults/rc.d/S02bootup.sh

在 裡 面 加 上 一 行 ,cat 命 令 的 那 一 行 ,我 用 兩 行 #### 夾 著 。意 思 就 是 把 smb.conf_job 的 內 容 ,加 入 到 smb.conf 的 檔 尾 。(# 是 comment 的 意 思 ,不 會 執 行 ,你 可 以 照 copy & paste 入 去 你 的 bootup 檔 )

if [ "$1" = "start" -o "$1" = "" ]; then
# Clean up printers section in smb.conf
/usr/syno/bin/synoprint --disable > /dev/null 2>&1
/usr/syno/bin/synocheckvolume
rm /tmp/.db.*
/usr/syno/bin/synocheckshare
rm /tmp/.db.*
############################################################
cat /usr/syno/etc/smb.conf_job >> /usr/syno/etc/smb.conf
############################################################
/usr/syno/bin/synocheckiscsitrg
fi

千 萬 別 隨 便 更 改 S02bootup.sh 檔 案 的 其 他 內 容 ,要 是 你 的 synology 不 能 boot 機 ,筆 者 不 會 負 責 啊 !

儲 存 檔 案 (:wq ,還 記 得 麼 ?)之 後 ,當 然 第 一 時 間 重 開 機 ,看 看 結 果 如 何 。假 如 你 所 有 步 驟 都 沒 有 錯 誤 (檢 查 清 楚 有 沒 有 打 錯 字 ,特 別 是 你 初 接 觸 Linux 的 話 ),你 開 機 之 後 就 會 見 到 你 的 分 享 資 料 夾 了 。即 使 在 synology 的 網 頁 管 理 介 面 和 檔 案 總 管 裡 面 ,你 都 可 以 見 到 那 些 新 增 的 分 享 資 料 夾 啊 !

不 過 ,如 果 你 在 網 頁 管 理 介 面 作 出 任 何 修 改 的 話 ,重 開 機 之 後 都 會 消 失 的 。所 以 筆 者 只 會 修 改 群 組 的 組 員 ,而 不 會 在 網 頁 管 理 介 面 裡 面 修 改 這 些 分 享 資 料 夾 。

今 天 你 應 該 學 到 如 何 用 ssh 登 入 Linux 系 統 、學 會 了 使 用 vi 文 字 編 輯 軟 體 、學 會 了 如 何 在 synology 增 加 分 享 資 料 夾 (其 實 不 一 定 是 /volume1/ 裡 面 的 子 資 料 夾 ,你 還 可 以 分 享 root,又 或 者 其 他 應 用 程 式 的 資 料 夾 ,比 如 說 mysql,這 是 個 很 有 用 的 技 巧 )。一 日 之 內 學 會 了 這 麼 多 東 西 ,你 現 在 是 不 是 滿 足 感 十 足 呢 ?

*** 據 說 ,自 行 更 改 synology,會 導 致 保 養 失 效 ***

ctleung張先生,男性,肖龍。
職業:I.T. Consultant
簡介:不好好讀書;七尺差五寸,手長過膝,雙耳垂肩;性寬和,寡言語,喜怒不形於色。據說少時曾斬白蛇於鳳凰山下……

This entry was posted in Computer & Network and tagged , , , , , . Bookmark the permalink.

10 Responses to Synology 進階:分享 subfolder

  1. Tony says:

    Dear Mister,

    My home used Netvigator 3M plan and 10/100 dlink wireless router with 200M homeplug for other rooms. Have any speed improvement for change the master router to Giga Lan type?

    Thanks

  2. LittleTony says:

    Hi,

    非常詳細的介紹; 謝謝分享!

    我在NAS上建立了個共享資料夾(Shared Folder) (叫 “All Clients”), 又在它下面建立了許多子資料夾(subfolders) (e.g. “Company A” , “Company B”, …), 好讓每個客戶(A, B, C… 公司) 登入NAS, 自行存取檔案.

    但是發現一個缺點: A 公司雖然不能看到其他公司資料夾的內容, 可是各公司資料夾名稱對A公司卻完全暴露. 我希望能使這些子資料夾 (沒有權限的)對A公司全部隱形.

    (最終, “All Clients” 會被mapped 到 Windows上)

    1. 請問我可以用 hide unreadable=yes 的方法來讓無權限的子資料夾隱形嗎?
    2. 就效果而言, 這跟你上述的方法一致嗎?

    感激.

    LittleTony

    • C.T. Leung says:

      1. 你根本沒說明「每個客戶」用什麼方法去「登入」NAS,在我的幻想之中,總不成是 SMB 吧 ? ( SMB over internet ??? )

      2. hide 呢,如果是用我「分享子資料夾」的方法,應該是沒問題的。( 但我也沒有實際測試過 )

      3. 如果是我,要讓不同的外面的公司去登入我自己的 NAS,當然就不會用這個「分享子資料夾」的方法了。

  3. LittleTony says:

    Thanks C.T.

    1. 客户被限制只能用Synology DMS 的标准綱頁界面登入。(而且,这個前提不能改變)
    2. 试過了, hide 的方法不管用。 sorry.
    3 . 不知道還有其他方法呢? 我是NAS 新手上路,請多給我一些意見。(拜托)

    因为客户公司众多,如果为每家公司都開一個共享資料夾 (使其相对隱形), 但最終也會因為超出數量上限(如果我的理解正確), 而無法把全部共享资料夹map 到Windows。(我另外有Windows軟件,需要不畤地掃描這些被mapped的資料夾 )

    我用的是214play, 過去幾天都在測試,一切都很满意 (甚至比預期的还好) 只是被这個不能隐藏subfolder 的问题困扰了好幾天。

    Best,
    LittleTony

    • C.T. Leung says:

      新手麼?呵呵。在本文中,修改的只是 SMB server 的 config file,基本上它只影響 SMB 方面的事,而你不應該期望它能影響你整台 NAS 的檔案權限 !! 這點要先搞清楚,很重要。

      按你的情況,我會開啟 HOME folder 功能,這樣每個使用者就會有自己獨立的 HOME folder。然後在 SMB 就 MAP [ HOMES ] folder ( 所有人的 home 的 parent folder ),這樣就能看見所有人的 HOME folder 了。

      其實我公司就有一台老舊的 Synology 被我用作純粹的 FTP server ( 也算是給客戶用吧 ),它就是用這個 HOME folder 設定的 ( Synology 的 FTP server 也支持 home folder )。然後我再把 HOMES folder share 出來給公司裡面的有需要的同事。這樣同事的電腦只要 map 一個 HOMES 就搞定了。這方法也完全不需要自己 SSH 入去修改什麼的,完全是自帶的功能。

      不過這個設定會有點煩,就是所有使用者都必須有 home folder,所以如果 NAS 是公司同事、客戶兩用的話,自己就會在 HOMES 裡面看到很多無用的 subfolder。而且也要相應的提醒同事,自己的 home folder 不再私密,別把自拍上傳到那裡。所以你大概了解為什麼我會專用一台 NAS 來做 FTP server 吧?哈哈。不過這只是對「內部」有影響,對公司外面登入的人是沒影響的,他們都不會知道、不會「看到」這些事。

      不過這不是「唯一」的方法,這只是最省力氣的方法吧。個人覺得,HOME folder 有它的好處,自己一個個的去設定 shared folder 亦有它自己的好處,你要自己取捨一下。

      題外話,如果只是用作 file sharing 的話,為什麼要用 DSM 的登入介面?為什麼不只給他們 File Station 的介面?( File Station 也是 Web 介面啊 ) 個人覺得,直接把 DSM 登入介面丟到互聯網是相對危險的事,但只放 File Station 上互聯網就會相對安心一點。而且 File Station 介面你可以控制誰能登入,例如只有客戶的帳號才能登入,自家公司裡用的使用者帳號就不能登入,DSM 介面就沒有這種控制。( 是,我是有看到你的前提 )

      • LittleTony says:

        謝謝 C.T. 你說的很讓我受益, 給了我很多想法.

        在你提到的實際操作方面 (用Home Folder and 用File Station 介面), 我剛開始學呢.

  4. LittleTony says:

    Hi C.T.

    看過了DSM 手冊, 還沒能找到關於你提的File Station介面 (登入) 的資料.

    我也想保障網絡安全, 請問如何才能做到 “只把File Station介面給客戶”?

    (之前, 我只知道DSM介面是唯一透過web介面登入的方法, 還真的不知道有File Station介面, 更不知道它長的是啥樣)

    • C.T. Leung says:

      Control Panel >> Application Portal >> File Station >> Edit,勾選 Enable customized port (HTTPS),預設是 7001。

      打開 browser ,去 https://192.168.0.1:7001/,ip 換成你自己 nas 的 ip,就是登入畫面了。

      修改權限就在 Control Panel >> Privileges >> File Station >> Edit。

      當然你喜歡轉什麼 port 都可以,然後就只把這個 port 放上網 ( port forwarding 之類,你懂的 )。

  5. LittleTony says:

    噢, 明白了. 謝謝你給出詳盡的介紹. 很實用.

    真高興有一個這麼高水平的中文分享平台. 讚!

Leave a Reply

Your email address will not be published. Required fields are marked *