1. 程式人生 > 其它 >CentOS 8中Smaba服務的安裝與配置

CentOS 8中Smaba服務的安裝與配置

開心一刻

一家飛機上邊有100塊磚頭,扔下來一塊還有多少塊?
答案:99塊。
把大象塞進冰箱需要幾步?
3步 1.開啟冰箱門 2.把大象塞進去 3.把冰箱門關上。
把長頸鹿塞進冰箱需要幾步?
4步 1.把冰箱門開啟 2.把大象撈出來 3.把長頸鹿塞進去 4.把冰箱門關上。
動物之王老虎過生日,所有動物都去了,只有一個動物沒去,是誰?
長頸鹿,在冰箱裡呢。。
一個老太太在鱷魚池裡游泳,沒被鱷魚吃了,為什麼?
鱷魚去參加老虎的生日去了。
為什麼老太太又死了?
被天上掉下來的磚頭砸死了。

寫在前面

之前想要做到windows和linux系統之間檔案共享,一個比較常用的方式是可以使用FTP,或者使用一些linux命令,例如scp、sftp、rz、sz等。後來發現一個我覺得更加好用的工具,就是Samba服務,同時我也嘗試在虛擬機器上配置了一下,確實很好用,這裡特別寫一篇部落格記錄一下配置的過程,不同的linux發行版都大同小異,遇到問題上網搜尋一下應該也都能夠解決。

Samba服務安裝及相關引數

在CentOS 8中已經使用dnf安裝軟體包了(yum仍可使用,實際上就是dnf的一個軟連線),所以我這裡使用dnf安裝samba。

dnf install -y samba

Samba服務的配置檔案在/etc/samba/smb.conf中,其中的一些常用引數記錄如下:

[global] 引數 作用
workgroup = SAMBA 工作組名稱
security = user 安全驗證的方式,就使用預設的user即可,較新的samba服務將share和server棄用了,具體可以檢視/etc/samba/smb.conf.example的說明
passdb backend = tdbsam 定義使用者後臺的型別,共有三種
printing = cups 設定Samba共享印表機的型別
printcap name = cups 在 UNIX System V 系統上自動獲取印表機列表
load printers = yes 設定smaba服務啟動時是否共享印表機裝置
cpu options = raw 印表機選項
[homes] 共享引數名,名稱可隨意,設定好後在訪問時顯示的名稱即為該名稱
comment = Home Directories 描述資訊,也是可隨意設定的,起到一個提示的作用
valid users = %S, %D%w%S 用來指定允許訪問該共享資源的使用者
browseable = No 指定共享資訊是否在“網路上的芳鄰”可見
read only = No 是否只讀
inherit acls = Yes 是否繼承上一級的acl
public = yes 是否公開(指明該共享資源是否能給遊客帳號訪問)
guest ok = yes 與public意思相同
inherit owner = yes 上傳的檔案繼承父目錄的所有者, 而不是使用登入的賬號名。
create mask = 1600 建立或上傳檔案時檔案的許可權
directory mask = 1777 建立或上傳目錄時目錄將被賦予的許可權
force directory mode = 1000 為目錄加上sbit許可權
writable = yes 是否可上傳檔案
[printers] 印表機共享引數,不要共享印表機可以忽略這部分配置資訊,甚至可以直接刪除
comment = Printer Drivers 說明資訊,內容可隨意
path = /var/tmp 共享路徑

印表機的功能我也沒有使用過,還有一些相關引數我也不寫了。

Samba服務配置

這裡是我自己的配置檔案內容,我在修改的時候先用cp命令做了一下備份。

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak

這裡是我的配置檔案資訊:

[global]
        workgroup = SAMBA
        security = user

        passdb backend = tdbsam

        printing = cups
        printcap name = cups
        load printers = yes
        cups options = raw

[home]
        comment = Do not arbitrarily modify the file
        path = /home
        public = no
        writable = yes

修改好後重啟samba服務,可以使用testparm命令檢查samba配置檔案內容是否正確。

sudo systemctl restart smb
sudo systemctl enable smb #第一次使用可以將其加入到開機啟動項,讓其開機自動啟動。

samba設定賬戶密碼登入

Samba中設定賬戶密碼訪問時要求使用系統中已存在的使用者,否則建立不成功。我這裡使用的是我係統中的普通賬戶,然後共享目錄為家目錄,這樣只需要為每位使用者建立samba賬戶密碼,就可以直接訪問各自的家目錄,然後有什麼需要上傳或者下載的檔案就可以非常方便地完成。

我使用我自己的普通賬戶作為samba賬戶,使用以下命令設定,然後輸入密碼即可設定成功,samba賬戶的密碼與使用者密碼不衝突,不需要設定成一樣的。

pdbedit -au test

出現這樣的提示資訊代表samba賬戶建立成功

防火牆開放samba服務

centOS8中使用firewalld服務作為預設的防火牆配置管理工具。只需要讓firewalld允許samba服務通過防火牆即可。

sudo firewall-cmd --zone=public --permanent --add-service=samba
sudo firewall-cmd --reload

如果使用的是圖形化介面,那麼也可以使用firewall-config工具,效果與firewall-cmd相同,但是比firewall-cmd要好用,不過cnetOS8好像沒有預設裝firewall-config,可以使用sudo dnf install firewall-config安裝。

防火牆開放samba服務的命令執行後,可以使用以下命令檢視是否成功

sudo firewall-cmd --zone=public --permanent --query-service=samba

出現success字樣說明啟動是成功的。

修改Selinux域策略

因為設定訪問家目錄,而linux中由於Selinux的存在,samba是無法訪問家目錄的(除非關閉Selinux)。不關閉Selinux的情況下,可以通過修改Selinux的域策略來允許通過Samba服務程式訪問普通使用者家目錄。

可以先使用下面的命令檢視一下有那些samba相關的域策略

getsebool -a | grep samba

然後修改Selinux域策略

setsebool -P samba_enable_home_dirs on

成功設定後,可以找一臺同一個區域網中的電腦,然後使用win+R組合鍵,在執行框中輸入\\samba伺服器ip地址,然後回車,如果設定沒有問題,就會彈出一個要求輸入賬號密碼的對話方塊。

結語

這篇博文介紹在CentOS8中配置samba服務程式,實現linux與windows之間檔案的共享,samba服務配置成功後,訪問linux上的程式就像訪問windows一樣簡單,是一個非常使用的工具了。其他linux發行版大同小異,若是嫌麻煩,甚至可以直接關掉防火前和Selinux,只需要將samba配置檔案設定好即可。_

文中都是我個人的理解,如有錯誤的地方歡迎下方評論告訴我,我及時更正,大家共同進步