1.安装软件包
rpm -q samba samba-common samba-client cifs-utils
yum -y install samba samba-common samba-client cifs-utils
smbd 管理Samba主机共享的目录,文件与打印机等。使用TCP 139 445进行可靠的数据传递
nmbd 管理工作组、NetBIOS Name等解析,使用UDP 137 138来负责名称解析的任务
2.修改主配置文件
security
share 不需要密码可以访问
user 需要密码(默认)
smbclient -L 服务器ip
smbclient -U 账户名 //服务器ip/共享名
useradd nick
useradd hunter
smbpasswd -a nick 等于 pdbedit -a nick 设置密码
cd /etc/samba/
[root@test01 samba]# cp smb.conf smb.conf.bak
[root@test01 samba]# vim smb.conf
workgroup = Tarena 工作组
server string = Windows Server 2008 链接时的提示(建议改掉默认)
[tools]
path = /usr/src //指定共享路径
public = no //不对所有人开放
read only = yes //默认的权限为只读
valid users = nick,hunter //指定合法用户
write list = hunter //用户hunter可读可写
3.启动服务
[root@test01 samba]# testparm 检测配置命令
[root@test01 samba]# service smb,nmb restart; chkconfig nmb,smb on
[root@test01 samba]# netstat -tulnp | grep smb
tcp 0 0 0.0.0.0:139 0.0.0.0: LISTEN 1489/smbd
tcp 0 0 0.0.0.0:445 0.0.0.0: LISTEN 1489/smbd
tcp 0 0 :::139 ::: LISTEN 1489/smbd
tcp 0 0 :::445 ::: LISTEN 1489/smbd
4.设置权限
[root@test01 ~]# setfacl -m u:hunter:rwx /usr/src/
[root@test01 ~]# getfacl /usr/src/
5.测试
Windows:
UNC路径 \192.168.10.10
Linux:
[root@test02 ~]# yum -y install samba-client
[root@test02 ~]# smbclient -L 192.168.10.10
[root@test02 ~]# smbclient -U nick //192.168.10.10/tools
smb: \> !ls
anaconda-ks.cfg anon.txt install.log.syslog local.tgz
anon.tgz install.log lisi.txt
smb: \> put install.log
smb: \> quit
[root@test02 ~]# smbclient -U hunter //192.168.10.10/tools
smb: \> ls
smb: \> put install.log
smb: \> ls
smb: \> quit
[root@test02 ~]# mkdir /mnt/smbdir
[root@test02 ~]# mount -o username=nick,password=redhat //192.168.10.10/tools /mnt/smbdir/ 7不支持-o密码的设置了,只能手动
6.设置开机自动挂载
[root@test02 ~]# grep smbdir /etc/fstab
//192.168.10.10/tools /mnt/smbdir cifs defaults,username=nick,password=redhat 0 0 还可以调用文件credentials=文件 文件权限600
[root@test02 ~]# mount -a
[root@test02 ~]# df -hT
试验二:Samba账户别名与访问地址控制
1.修改Samba用户别名文件
[root@test01 ~]# vim /etc/samba/smbusers
Unix_name = SMB_name1 SMB_name2 ...
root = administrator admin
nobody = guest pcguest smbguest
hunter = hijack
2.修改主配置文件
[root@localhost ~]# vim /etc/samba/smb.conf
username map = /etc/samba/smbusers 别名
[tools]
path = /usr/src
public = no
valid users = nick,hunter 有效用户
write list = hunter 可写用户
hosts allow = 192.168.10.20 访问控制
3.客户端测试
[root@test02 ~]# smbclient -U hijack //192.168.10.10/tools
Enter hijack's password:
Domain=[TARENA] OS=[Unix] Server=[Samba 3.6.9-164.el6]
smb: \> ls
针对RHEL7
设置防火墙等
Firewall-cmd --permanent --add-service=samba; firewall-cmd --reload
semanage fcontext -a -t samba_share_t '/smb1(/.*)?' (chcon -R -t samba_share_t /smb1) smb1为共享目录
restorecon -RFvv /smb1/
semanage fcontext -l | grep smb1 查看内核默认上下文
//ip/smb1 /mnt/smb1 cifs defaults,credentials=/root/smb1.passwd 0 0
Chmod 600 /root/smb1.passwd
//ip/smb2 /mnt/smb2 cifs defaults,credentials=/root/smb2.passwd,multiuser,sec=ntlmssp 0 0
/root/smb2.passwd 写任意一个能访问的 chmod 600 /root/smb2.passwd
基于多用户安全
su - 用户
cifscreds add server0(服务器) 分层管理,,(针对多用户,有的可读,有的可写)
例子
多用户挂载
读写 setfacl -m u:ldapuser5:rwx /smb2
Vim /etc/samba/smb.conf
[smb2]
Path = /smb2
Valid users = user1, user2, @hr
Write list = user2
Systemctl enable nmb smb;systemctl restart nmb smb
semanage fcontext -a -t samba_share_t '/smb2(/.*)?' (chcon -R -t samba_share_t /smb1)
restorecon -RFvv /smb2/
客户端
Vim /etc/fstab
//ip/smb2 /mnt/smb2 cifs defaults,credentials=/root/smb2.passwd,multiuser,sec=ntlmssp 0 0
/root/smb2.passwd 写任意一个能访问的 chmod 600 /root/smb2.passwd
cifscreds add server0