SMB (Service Message Block,服务信息块):局域网上共享文件夹/打印机的一种协议。既可以用在TCP/IP之上,亦可以在其他网络协议之上。
提供两种服务:文件共享服务 smbd
名称解析服务 nmbd
进程:winbindd 将linux加入到windows 域中,使用windows域中的资源。
软件包:samba(服务器端),samba-client(客户端),samba-common(额外组件)
samba-swat 基于web接口,提供samba服务器配置管理。
samba-client samba-common 默认已经安装
主配置文件:/etc/samba/smb.conf
启动脚本:/etc/init.d/smb
语法检查工具:testparm
端口:137 (向别人提供服务 服务器端) 提供netbios服务
138 (接受别人服务 客户端) 提供netbios服务
139 (文件传输) 445(文件传输)
主配置文件相关参数:
[global]
workgroup = MYGROUP //** 工作组
server string = Samba Server Version %v //** 说明信息
interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24 //**定义监听接口
hosts allow = 127. 192.168.12. 192.168.13. //** ACL 白名单
log file = /var/log/samba/%m.log //** 定义日志
security = user //** 安全级别 默认 user
安全等级:share 不用账号和密码可以直接登录,最不安全。
user 需要输入有效地账号和密码,通过验证后才能使用服务器的共享资源。
server 与user等级,也需要输入有效地账号和密码,但密码的验证会由另一
台SMB服务器负责,必须指定口令服务器,即“password server”选项。
[homes]
comment = Home Directories //**注释信息
browseable = no //** 是否可被浏览
writable = yes //** 是否可写
; valid users = %S //** 哪些用户可以使用此类共享
; valid users = MYDOMAIN\%S
[printers]
printable = yes //** 标识一个打印设备
下面就来共享一个目录:
[root@mail samba]# mkdir /share
编辑/etc/samba/smb.conf 添加一个共享目录
[tools]
comment = Public Software
path = /share
browseable = yes
writable = yes
public = yes //**允许所有人访问
保存退出。
添加samba用户:
smbpasswd -a 添加一个用户
-d 禁用一个用户
-e 启用用户
-x 删除用户
PS:Samba要求来访问的用户必须是系统账号,但是密码必须是samba提供的密码。
[root@mail samba]# setenforce 0
为用户添加写权限:
[root@mail samba]# setfacl -m u:lucy:rwx /share
只允许某些用户有写权限:
编辑主配置文件
[tools]
comment = Public Software
path = /share
browseable = yes
write list = lucy //** 如果允许一组用户有写权限 则 write list = @develop
public = yes
为组添加/share目录的写权限:
[root@mail samba]# setfacl -m g:develop:rwx /share/
在SElinux开启的情况下允许用户有写权限:
首先改变目录的标签:
[root@mail samba]# chcon -R -t samba_share_t /share
[root@mail samba]# ls -dZ /share
drwxrwxr-x+ root root root:object_r:samba_share_t /share
开放samba家目录的访问权限:
[root@mail samba]# setsebool -P use_samba_home_dirs 1
[root@mail samba]# setsebool -P samba_enable_home_dirs 1
利用smbclient访问共享资源:
列出目标主机上所有可以访问的共享资源
[root@mail samba]# smbclient -L //192.168.0.39
[root@mail samba]# smbclient -L //192.168.0.39 -U lucy%lucy //** 以某个用户身份来查看
访问共享目录:
[root@mail samba]# smbclient //192.168.0.39/tools -U lucy
将远端共享目录挂载到本地主机目录下
[root@mail ~]# mount -t cifs //192.168.0.39/share /samba -o username=lucy
设置开机设置自动挂载
编辑/etc/fstab
//192.168.0.181/tools /mnt cifs credentials=/etc/samba/cred 0 0
credentials=/etc/samba/cred //** 验证信息存放位置
建立cred文件:
uername=lucy
password=lucy
实现samba的访问控制功能
编辑主配置文件:
hosts allow = 127. 192.168.0. line 81
设置iptables规则:
[root@mail ~]# iptables -t filter -A INPUT -s 192.168.0.1 -d 192.168.0.39 -p tcp -m multiport --dports 139,445 -j ACCEPT
[root@mail ~]# iptables -t filter -A INPUT -s 192.168.0.1 -d 192.168.0.39 -p udp -m multiport --dports 137,138 -j ACCEPT
[root@mail ~]# iptables -A INPUT -s 0.0.0.0/0.0.0.0 -d 192.168.0.39 -p tcp -m multiport --dports 139,445 -j REJECT
[root@mail ~]# iptables -A INPUT -s 0.0.0.0/0.0.0.0 -d 192.168.0.39 -p udp -m multiport --dports 137,138 -j REJECT