Docker Samba文件共享踩坑記錄

ubuntu18.04 默認(rèn)的 samba 版本號(hào)為4.7,這個(gè)版本不支持 timemachine,于是準(zhǔn)備在docker上搭建,雖然目前還沒(méi)開(kāi)起 timemachine 的功能,但是后續(xù)有空也許會(huì)弄上。

用的人最多的鏡像是dperson/samba,然而官方的例子太少了,只給了常用情況,但我還有一些需求沒(méi)有滿(mǎn)足, 比如使用單獨(dú)文件存放密碼什么的,于是踩了一波坑。

下面這個(gè)是我的完整的 docker 命令

docker run -itd --name samba --restart=always --net=host \
        -v /etc/localtime:/etc/localtime \
        -v /home/lomot/docker-service/samba/smbpasswd:/etc/samba/smbpasswd \
        -v /nas/samba/smb-share:/share \
        -v /nas/samba/smb-lomot:/lomot \
        dperson/samba -p \
        -i "/etc/samba/smbpasswd" \
        -s "share;/share;no;no;no;lomot,share" \
        -s "lomot;/lomot;no;no;no;lomot"

奇怪的"-p, -v"

我一開(kāi)始是在官方的例子上修改,官方的例子是這樣的:

sudo docker run -it -p 139:139 -p 445:445 -d dperson/samba -p \
        -u "example1;badpass" \
        -u "example2;badpass" \
        -s "public;/share" \
        -s "users;/srv;no;no;no;example1,example2" \
        -s "example1 private share;/example1;no;no;no;example1" \
        -s "example2 private share;/example2;no;no;no;example2"

我想要把自己的目錄映射到容器內(nèi),于是就粗暴地加上了兩行

    -v /nas/samba/smb-share:/share \
    -v /nas/samba/smb-lomot:/lomot \

結(jié)果提示-v命令沒(méi)找到,當(dāng)時(shí)我還以為docker更新去掉了-v掛載鏡像,仔細(xì)看了一波后才發(fā)現(xiàn)原來(lái)在dperson/samba -p之后的內(nèi)容全部是私有命令,根本就不是docker的命令,(命令的格式寫(xiě)的和docker一樣真的很容易誤解啊,后來(lái)我在容器內(nèi)翻了一下,發(fā)現(xiàn)這些報(bào)錯(cuò)來(lái)自一個(gè)作者寫(xiě)的腳本samba.sh)。

密碼相關(guān)

官方例子里面的密碼是放在命令里面的,就像這樣-u "example1;badpass",但是這樣總讓人覺(jué)得不安全,查找文檔關(guān)于密碼是這樣解釋的

 -i "<path>" Import smbpassword
        required arg: "<path>" - full file path in container

沒(méi)太看懂。
后來(lái)在一個(gè)issue里面找到了用法

先生成一個(gè) smbpasswd,默認(rèn)目錄在/etc/samba/smbpasswd,當(dāng)然也可以手動(dòng)把它放到別的地方

pdbedit -b smbpasswd -a <username>

然后把它掛載到鏡像里面去

-v /etc/samba/smbpasswd:/etc/samba/smbpasswd

指定密碼文件 smbpassword

-i "/etc/samba/private/smbpasswd"

權(quán)限相關(guān)

這個(gè)地方官方文檔講的很清楚,我的配置是下面兩行這樣

-s "share;/share;no;no;no;lomot,share"
-s "lomot;/lomot;no;no;no;lomot"

順便把文檔里面的解釋復(fù)制過(guò)來(lái)

-s "<name;>[;browse;readonly;guest;users;admins;writelist;comment]"
       Configure a share
       required arg: "<name>;</name></name;></path>"
       <name> is how it's called for clients
       <path> path to share
       NOTE: for the default values, just leave blank
       [browsable] default:'yes' or 'no'
       [readonly] default:'yes' or 'no'
       [guest] allowed default:'yes' or 'no'
       NOTE: for user lists below, usernames are separated by ','
       [users] allowed default:'all' or list of allowed users
       [admins] allowed default:'none' or list of admin users
       [writelist] list of users that can write to a RO share
       [comment] description of share

端口

官方例子是這樣-p 139:139 -p 445:445指定端口的,但是我后來(lái)發(fā)現(xiàn)samba還占用了137,138端口,
沒(méi)想太多就直接用了host模式--net=host

查看samba版本

進(jìn)入容器之后發(fā)現(xiàn)找不到 samba 可執(zhí)行文件的位置
最后通過(guò)包管理器看到了 samba 版本

bash-5.0# apk info samba
WARNING: Ignoring APKINDEX.00740ba1.tar.gz: No such file or directory
WARNING: Ignoring APKINDEX.d8b2a6f4.tar.gz: No such file or directory
samba-4.10.8-r0 description:
Tools to access a server's filespace and printers via SMB

samba-4.10.8-r0 webpage:
https://www.samba.org/

samba-4.10.8-r0 installed size:
12288
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀(guān)點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容