samba服務
RHEL7配置samba:開機自動掛載以及多用戶掛載
安裝samba(centos 7/redhat 7提供的samba版本是samba 4)
開機啓動
啓動服務
查看監聽端口(使用netstat或ss命令查看連接狀態)
防火牆放行
然後我們看看配置文件 smb.conf
注意配置任何服務的時候,涉及到權限訪問的配置都有一個基本的順序:
1.配置文件,各種conf文件裏面的設置
2.文件權限的訪問,用戶是否有對應的rwx權限
3.SELinux的上下文和布爾值是否打開了
SMB也不例外。
配置文件一開始就提醒SELinux的配置。
標號1:告訴我們可以執行testparm檢測samba配置文件的語法正確性
標號2:samba_enable_home_dirs布爾值允許訪問用戶的家目錄
標號3:samba_share_t需要把這個上下文分配給對應的共享文件
global的配置部分主要設置工作組名、描述信息、netbios名、監聽接口或IP、允許域名或網絡範圍等等
注:hosts allow表示允許的IP或域名,書寫格式可以用以下方式表示
1. 主機IP:多個IP地址用空格分隔,如:172.25.0.1172.25.0.2
2. 網段:可以用掩碼長度或子網掩碼錶示,如:172.25.0.0/24或172.25.0.0/255.255.255.0
3. IP子網前綴:172.25.0.或172.25.表示以172.25.0.或172.25.開始的地址
4. 主機名或主機後綴名:如desktop.example.com或.example.com
5. IPV6地址:2001:db8:0:1::/64
日誌存放點,本地驗證的方式使用user(用戶名方式驗證)
samba 4 下參數security的值不再允許是share和server,建議使用user
samba 4 下如果希望有匿名訪問共享,可將 map to guest = Bad User 打開
在[global]節中加入map to guest = Bad User,這個配置的意思是將所有samba系統主機所不能正確識別的用戶都映射成guest用戶,這樣其他主機訪問samba共享目錄時就不再需要用戶名和密碼了,在定義共享部分添加guest ok = yes。
最後是共享文件
例1:接下我們來創建一個目錄(如:/common),通過samba輸出共享
通過 SMB 共享/common 目錄,samba服務器必須是 STAFF 工作組的一個成員,共享名必須爲 common,只有 group3.example.com 域內的客戶端可以訪問 common 共享(group3.example.com中的系統都在子網172.24.3.0/24中),同樣在這個子網中的系統都在,common 必須是可以瀏覽的,用戶 harry 必須能夠讀取共享中的內容,如果需要的話,驗證的密碼是 migwhisk
#yum install –y samba samba-client samba-common //該包裏有 smbpasswd 命令
# mkdir /common
# chcon -R -t samba_share_t /common
# setsebool -P samba_export_all_rwon
# vim /etc/samba/smb.conf
workgroup = STAFF
[common]
path = /common
browseable = yes
# useradd harry
# smbpasswd -a harry ->密碼設置爲 migwhisk
注:與samba配套使用的smbpasswd在samba-client中,建議安裝時一併安裝samba-client
# systemctl start smb
# systemctl enable smb
#firewall-cmd --zone=public --permanent–add-rich-rule=’rule family=”ipv4” source address=172.24.3.0/24 service name=samba accept’
#firewall-cmd –reload
或者
在smb.conf配置文件的共享定義中使用hosts allow = 172.24.3.只允許group3.example.com 域內的客戶端訪問。
在客戶端上測試訪問samba共享
Windows客戶端
輸入”//samba服務器的IP”回車
輸入用戶名和密碼,回車
從linux客戶端測試訪問
注:掛載smb共享使用的是cifs文件系統
或使用mount.cifs掛載
注:mount.cifs命令由cifs-utils軟件提供
注:sec選項的作用是選擇安全模型
注:linux作爲客戶端掛載windows的共享(共享目錄是ntfs文件系統)也需要安裝cifs-utils包
可以用man mount.cifs查看手刪頁
例2:配置多用戶SMB掛載
在system1共享通過SMB目錄/devops滿足以下要求:
共享名爲devops
共享目錄devops只能被group3.example.com域中的客戶端使用
共享目錄devops必須可以被瀏覽
用戶kenji必須能以讀的方式訪問此共享,該問密碼是atenorth
用戶chihiro必須能以讀寫的方式訪問此共享,訪問密碼是atenorth
此共享永久掛載在system2.group3.example.com上的/mnt/dev目錄,並使用用戶kenji作爲認證。任何用戶可以通過用戶chihiro來臨時獲取寫的權限。
在 system1 (smb共享服務器)上創建目錄
# mkdir /devops
創建相關用戶
# useradd kenji
# useradd chihiro
設置/devops目錄的acl權限
# setfacl -m u:chihiro:rwx /devops
設置selinux
# chcon -R -t samba_share_t /devops
# setsebool -P samba_export_all_rw on
修改配置文件
# vim /etc/samba/smb.conf
[devops]
path = /devops
browseable = yes
write list = chihiro
添加samba用戶
# smbpasswd -a kenji
# smbpasswd -a chihiro
重啓服務
# systemctl restart smb nmb
system2 (smb客戶端)上的配置如下:
創建用於測試相關用戶
# useradd lisi
# useradd zhangsan
創建掛載點:
# mkdir /mnt/dev
創建密碼文件
# vim /root/multiuser.txt
username=kenji
password=atenorth
在 fstab 中寫入:
//system1.group3.example.com/devops /mnt/dev cifs
defaults,credentials=/root/multiuser.txt,multiuser,sec=ntlmssp 0 0
注:在客戶端掛載smb共享若使用credentials(指定驗證憑證)參數則要安裝cifs-utils軟件包。
或在 fstab 中寫入:
//system1.group3.example.com/devops /mnt/dev cifs
defaults,username=kenji,password=atenorth,multiuser,sec=ntlmssp 0 0
# mount –a
執行df –hT驗證掛載
#su – lisi
從上圖可以看到客戶端用戶lisi沒有任何權限,lisi若要以只讀方式訪問共享目錄則執行下面的命令同步服務器kenji用戶身份
#cifscreds add system1 -u kenji
如下圖所示:
從上圖可以看到客戶端用戶lisi可以進行讀操作但仍然不能執行寫操作。
客戶端zhangsan用戶可以對共享目錄執行寫操作又如何實現呢?
方法是執行下面的命令同步服務器chihiro用戶身份
#su – zhangsan
#cifscreds add system1 –u chihiro
注:cifscreds是管理認證憑據(用戶名和密碼),用於多用戶建立會話目的的工具
例3:需求描述
共享名路徑權限
sharedoc/smb/docs所有人員包括來賓均可以訪問
rddocs /smb/tech 僅允許特定組的用戶進行讀寫訪問
特定組的組名爲rd,目前的Alice、Jack、Tom三個人
配置samba服務器
創建共享目錄(假設共享/smb目錄下的文件)
# mkdir -p /smb/docs
# mkdir -p /smb/tech
編輯smb.conf文件
在全局部分添加map to guest項
在共享定義部分添加如下共享配置項
創建系統用戶和組賬戶
將用戶添加到rd組
創建samba用戶
修改目錄權限
重啓smb服務
在客戶端上測試訪問smb共享
以windows系統爲例,在客戶端上輸入:\\samba服務器ip
直接打開共享窗口,當訪問rrdocs共享目錄時,需要輸入用戶名和密碼