Samba簡介:
Samba實現的是Linux和Windows之間的一種共享,為兩種不同的作業系統架起了一座橋樑,使Linux系統和Windows系統之間能夠實現互相通訊,共享檔案系統、印表機及其他資源。
實驗環境:
基本配置
[root@lhh ~]# yum install samba -y # server安裝Samba服務
[root@lhh ~]# firewall-cmd –add-service=samba # 防火牆開啟Samba服務
success
[root@lhh ~]# firewall-cmd –add-service=samba –permanent # 永久生效
success
[root@lhh samba]# cd /etc/samba/ # Samba配置檔案目錄
[root@lhh samba]# ls
lmhosts smb.conf
[root@lhh ]# vim /etc/samba/smb.conf # Samba的主配置檔案
—————- 配置檔案重要的條目註釋說明 ————————
[global] # Samba全域性配置
workgroup = MYGROUP # 工作組名稱,Windows的為:WORKGROUP
server string = Samba Server Version %v # 伺服器介紹資訊,引數%v為顯示SMB版本號
# interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24 # Samba執行埠,預設是執行在所有埠上
# hosts allow = 127. 192.168.12. 192.168.13. # 訪問控制,預設是允許所以都可以訪問
====================================================================
log file = /var/log/samba/log.%m # 定義日誌檔案的存放位置與名稱,引數%m為來訪的主機名
max log size = 50 # 定義日誌檔案的最大容量為50KB
=====================================================================
security = user # 安全驗證的方式,總共有4種,如下:
#share:來訪主機無需驗證口令;比較方便,但安全性很差
#user:需驗證來訪主機提供的口令後才可以訪問;提升了安全性
#server:使用獨立的遠端主機驗證來訪主機提供的口令(集中管理賬戶)
#domain:使用域控制器進行身份驗證
passdb backend = tdbsam #定義使用者後臺的型別,共有3種 ,如下:
# smbpasswd:使用smbpasswd命令為系統使用者設定Samba服務程式的密碼
# tdbsam:建立資料庫檔案並使用pdbedit命令建立Samba服務程式的使用者
# ldapsam:基於LDAP服務進行賬戶驗證
==============================================================
load printers = yes # 設定在Samba服務啟動時是否共享印表機裝置,儲存預設即可!
cups options = raw # 印表機的選項,儲存預設即可!
溫馨提醒:
建立Samba使用者時,本地必須存在此使用者,但是Samba密碼可以與系統密碼不一致。
建立兩個作為Samba測試使用者
[root@lhh ~]# useradd -s /sbin/nologin test1
[root@lhh ~]# useradd -s /sbin/nologin test2
# /sbin/nologin:表示此使用者不可以登入系統,可以作為服務使用者使用
=================================================
[root@lhh ~]# echo 123456 | passwd –stdin test1
[root@lhh ~]# echo 123456 | passwd –stdin test2
# 設定兩個測試使用者密碼為:123456
如果沒有 smbpasswd 這個命令,則需要安裝命令
[root@lhh ~]# yum whatprovides */smbpasswd # 查詢命令相關的包
samba-client-4.1.1-31.el7.x86_64 : Samba client programs
[root@lhh ~]# yum install samba-client -y # 安裝命令
將兩個使用者新增到Samba服務裡
[root@lhh ~]# smbpasswd -a test1 # -a:新增使用者
New SMB password: # 設定 test1 密碼
Retype new SMB password: # 再次確認密碼
Added user test1. # 新增使用者完成
[root@lhh ~]# smbpasswd -a test2 # 繼續新增test2
New SMB password:
Retype new SMB password:
Added user test2.
=============================================
命令說明:# smbpasswd [選項] 使用者名稱
# -a:新增使用者
# -d:禁用使用者
# -e:啟用使用者
# -x:刪除使用者
=======================================
[root@lhh ~]# pdbedit -L # 檢視Samba的使用者
test1:1001:
test2:1002:
繼續註釋說明主配置檔案
————- 配置檔案重要的條目註釋說明 —————-
[homes] # 共享引數
comment = Home Directories # 描述資訊
browseable = no # 指定共享資訊是否在“網路上的芳鄰”中可見
writable = yes # 定義是否可以執行寫入操作,與“read only”相反
===============================================================
[printers] # 印表機共享引數
comment = All Printers
path = /var/spool/samba # 共享檔案的實際路徑(重要)。
browseable = no
guest ok = no # 是否所有人可見,等同於”public”引數。
writable = no
printable = yes
我們瞭解完Samba配置檔案的引數後,開始共享目錄測試
[root@lhh ~]# mkdir /aaa # 建立一個 aaa目錄作為共享
[root@lhh ~]# vim /etc/samba/smb.conf # 編輯主配置檔案,在底部編輯條目將aaa共享出去
——————– 省略部分輸出資訊 ————————
[aaa-test] # 共享名稱,可以隨意定義
comment = aaa-test # 描述名稱,可以隨意定義
path = /aaa # 共享的路徑
===========================================
[root@lhh ~]# systemctl restart smb # 重啟Samba服務
Windows訪問測試
雖然可以訪問samba-server的共享了,但是無訪問裡面的目錄!
[root@lhh ~]# chcon -R -t samba_share_t /aaa/ # 修改上下文,就可以訪問共享目錄了
[root@lhh ~]# setsebool -P samba_enable_home_dirs on # 開啟家目錄的bool值
此時就可以訪問裡面的內容
此時我們想建立檔案發現沒許可權!
檢查思路:
1、檢查配置檔案
[root@lhh ~]# vim /etc/samba/smb.conf # 進入主配置檔案
———————– 省略部分輸出資訊 ———————————-
[aaa-test] # 共享名稱,可以隨意定義
comment = aaa-test # 描述名稱,可以隨意定義
path = /aaa # 共享的路徑
writable = yes # 可寫許可權
=============================================
[root@lhh ~]# systemctl restart smb # 重啟Samba服務
# 發現還是無法建立
2、檢查檔案系統許可權
[root@lhh ~]# ls -ld /aaa/ # 檢視共享目錄許可權,發現test1沒有可寫許可權!
drwxr-xr-x. 2 root root 6 8月 13 20:16 /aaa/
[root@lhh ~]# chmod o+w /aaa/ # 給其他使用者加上可寫許可權,因為test1是屬於其他使用者
此時兩個使用者都可以正常有寫的許可權
訪問控制設定
一、自定義使用者寫的許可權
[root@lhh ~]# vim /etc/samba/smb.conf # 進入主配置檔案
—————- 省略部分輸出資訊 ———————-
[aaa-test] # 共享名稱,可以隨意定義
comment = aaa-test # 描述名稱,可以隨意定義
path = /aaa # 共享的路徑
writable = no # 可寫許可權
write list = test1 # 指定某個使用者可寫,如需要多個使用者格式為:test,test2……….
=========================================================
[root@lhh ~]# systemctl restart smb # 重啟Samba服務
Windows使用的是:test1使用者
Linux使用的是:test2使用者
[root@mail ~]# yum install samba-client -y # 安裝Samba客戶端
[root@mail ~]# smbclient //192.168.115.201/aaa-test -U test2%123456
———————– 命令註釋 ————————
# //192.168.115.201/aaa-test:共享IP地址+ 共享名稱
# test2%123456:使用者為:test2;密碼為:123456
——————– 輸出資訊 ——————
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 4.1.1]
smb: > mkdir test2 # 建立目錄
NT_STATUS_MEDIA_WRITE_PROTECTED making remote directory est2 # test2是沒有許可權無法建立
二、自定義使用者瀏覽的許可權
[root@lhh ~]# vim /etc/samba/smb.conf # 進入主配置檔案
————- 省略部分輸出資訊 ———————-
[aaa-test] # 共享名稱,可以隨意定義
comment = aaa-test # 描述名稱,可以隨意定義
path = /aaa # 共享的路徑
writable = no # 可寫許可權
write list = test1 # 指定某個使用者可寫
browseable = no # 拒絕所有使用者瀏覽共享目錄,增加條目
==================================================
[root@lhh ~]# systemctl restart smb # 重啟Samba服務
Linux客戶端瀏覽不了共享目錄
[root@mail ~]# smbclient -L //192.168.115.201/ -U test2%123456
————— 省略了輸出資訊 ——————-
test2 Disk Home Directories
# 此時就無法瀏覽aaa-test目錄,只能看見test2家目錄
Windows客戶端也瀏覽不了共享目錄
接下來我們就自定義某個使用者可以瀏覽共享目錄
———— 省略輸出資訊,跳到配置檔案90行左右,新增條目 ————
[global]
89 workgroup = WORKGROUP # 儲存預設
90 server string = Samba Server Version %v # 儲存預設
91 config file = /etc/samba/smb.conf.%U # 新增此條目
===================== 新增的條目簡單註釋 =============
# 哪個使用者登入過來的時候,回去看/etc/samba/有沒有 smb.conf.使用者名稱 的配置檔案
# 如果有,則使用自己字尾名的配置檔案
# 如果沒有,則使用 /etc/samba/smb.conf 主配置檔案
[root@lhh ~]# cp /etc/samba/smb.conf /etc/samba/smb.conf.test1
# 將主配置檔案複製一份作為test1的配置檔案
[root@lhh ~]# vim /etc/samba/smb.conf.test1 # 編輯test1生成的配置檔案
——————– 省略輸出資訊,直接跳到底端 ———————-
[aaa-test]
comment = aaa-test
path = /aaa
writable = no
write list = test1
browseable = yes # 原本是:no;修改為:yes
此時 Windows可以看得到共享目錄
但是Linux客戶端瀏覽不了共享目錄,就實現了自定義瀏覽控制
[root@mail ~]# smbclient -L //192.168.115.201/ -U test2%123456
—————– 省略了輸出資訊 ———————–
test2 Disk Home Directories
[root@lhh ~]# ls /etc/samba/
lmhosts smb.conf smb.conf.test1
—————— 最後整體的解釋 ———————-
# 因為上面主配置檔案新增了:config file = /etc/samba/smb.conf.%U
# 當test1訪問Samba時,會使用自己字尾名的配置檔案(smb.conf.test1)
# test1 不會使用主配置檔案,自己的配置檔案時允許可以瀏覽的,所以就可以瀏覽共享目錄
# test2 沒有自己的配置檔案,只能使用主配置檔案( smb.conf),但是主配置檔案是拒絕所有使用者瀏覽的,所有無法瀏覽
三、自定義IP地址訪問
[root@lhh ~]# vim /etc/samba/smb.conf # 進入主配置檔案
————— 省略部分輸出資訊 ———————–
[aaa-test]
comment = aaa-test
path = /aaa
writable = yes
hosts allow = 192.168.x.x # 如果增加這條目,只允許某個IP地址訪問
# hosts deny = 192.168.x.x # 如果增加這條目,只拒絕某個IP地址訪問
# 接下來我們只測試允許的條目,拒絕的同理
Windows-IP地址115.1,無法訪問
Linux-IP地址為:115.202-成功訪問
[root@mail ~]# smbclient //192.168.115.201/aaa-test -U test2%123456
—————- 省略部分輸出資訊 ————–
111 D 0 Mon Aug 13 21:18:33 2018
222 D 0 Mon Aug 13 21:18:37 2018
# Linux是可以正常訪問的
# 到此已經完成Samba的基本配置和自定義控制了