開心一刻
一家飛機上邊有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
force directory mode = 1000
修改好后重啟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配置文件設置好即可。_
文中都是我個人的理解,如有錯誤的地方歡迎下方評論告訴我,我及時更正,大家共同進步