一、samba的简介
Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。
二、samba服务的管理
1.服务端的配置
yum install samba-client samba-common.x86_64 samba.x86_64 -y
# (主要文件) (服务提供)
systemctl stop firewalld.service ##关闭火墙
getenforce ##查看selinux的状态
rpm -qc samba-common ##查看samba的配置文件
vim /etc/samba/smb.conf ##编辑共享配置
[YY] ##共享名称
path=/mnt ##实际共享目录
semanage fcontext -a -t samba_share_t '/mnt(/.*)?' ##修改共享目录的安全上下文
restorecon -RvvF /mnt/ ##目录全部内容生效
getsebool -a | grep samba ##查看在selinux开启的时候一些被默认限制的服务
setsebool -P samba_enable_home_dirs on ##允许进入samba的用户家目录
smbpasswd -a student ##给smb服务添加一个可以让客户端登录使用的用户身份,且 student 必须是本机用户
pdbedit -L ##查看能使用smb服务的用户身份
systemctl restart smb ##重启服务
#在客户端进行测试:
yum install samba-client.x86_64 -y ##安装samba客户端软件
smbclient -L //172.25.254.100
2.服务端对共享目录匿名用户的管理:
chmod 777 /westos ##开启文件目录本身可写的权限
vim /etc/samba/smb.conf
[westos]
comment = local directory westos ##显示说明
path = /westos
guest ok = yes ##允许匿名用户登陆
writable = yes ##服务允许所有人可写
测试:
3.服务端对smb用户的权力限制:
vim /etc/samba/smb.conf
[westos]
comment = local directory westos ##显示说明
path = /westos
guest ok = yes ##允许匿名用户登陆
writable = yes ##服务允许所有人可写
#write list = +lee lee组成员可写
#valid users = lee westos 有效用户,中间可以用空格隔开指定多个
#valid users = @lee(+lee) lee组成员可以访问共享目录
#browseable = no no为隐藏目录
#admin users = lee lee在登陆共享目录后它就会变成共享目录的root用户
systemctl restart smb ##修改配置文件后重启smb服务
#客户端测试:
#服务端修改参数:
##客户端测试:
#服务端修改参数:
##客户端测试:
#服务端修改参数:
##客户端测试:
#服务端参数设置:
4.smb共享目录的挂载使用:
mount //172.25.254.121/YY /media -o username=tom,password=123 ##将共享目录挂载到本地进行操作
##匿名用户挂载的方法:
#服务端设置:
vim /etc/samba/smb.conf
129 map to guest = bad user
##把匿名用户映射成guest,让mount识别到匿名用户的身份,可以被客户端挂载到本地使用
5.smb服务的多用户挂载:
#为什么要使用多用户挂载:
6.客户端实现多用户挂载的设定:
yum install cifs-utils ##安装提供服务所用的软件
vim /root/passfile
##将密码和smb用户名写在文件里,避免输入时暴露用户密码(挂载后mount仍然可以看到使用的smb用户名称)
username=smb用户名称
passowrd=smb用户密码
chmod 600 /root/passfile ##让普通用户无法看到这个密码文件
mount //172.25.254.100/YY /mnt -o credentials=/root/passfile,multiuser,sec=ntlmssp
# (读取用户名和密码文件) (身份验证) (密码验证)
df ##查看挂载是否成功,成功即可以文件里的smb用户身份对共享目录进行操作
#切换成普通用户测试:
df ##root挂载过的目录仍然存在
cd /mnt ##共享目录仍然可以进入
ls ##无法查看到内容
cifscreds add -u westos 172.25.254.121 ##给这个普通用户添加一个smb的用户身份,输入密码通过验证(即使输入错误密码也不会报错,但是仍然无法查看目录,而且不能再直接以相同方式输入正确密码)
cifscreds clear -u westos 172.25.254.121 ##删除缓存中的这个身份认证信息,可以重新添加用户并输入密码
smb共享目录的自动挂载
vim /etc/fstab
//172.25.254.121/YY /media cifs defaults,credentials=/root/smbfile,multiuser,sec=ntlmssp 0 0