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配置檔案設定好即可。_
文中都是我個人的理解,如有錯誤的地方歡迎下方評論告訴我,我及時更正,大家共同進步