Samba简介:
Samba是在Linux和Unix系统上实现SMB协议的一个免费软件,提供CIFS(Common Internet File System)协议,由服务器及客户端程序构成,SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。
CIFS简介
CIFS(Common Internet File System)文件系统也称通用Internet文件系统,它使程序可以访问远程Internet计算机上的文件并要求此计算机的服务。CIFS使用客户/服务器模式。客户程序请求远在服务器上的服务程序为它提供服务,服务器获得请求并返回响应。CIFS是公开的开放的SMB协议版本。SMB协议现在是在局域网上用于服务器文件访问和打印的协议。像SMB协议一样,CIFS在高层运行。可以看做是应用程序协议如文件传输协议和超文本传输协议的一个实现。
CIFS可以提供以下功能:
1.访问服务器本地文件并读写这些文件
2.与其它用户一起共享一些文件块
3.在断线时自动恢复与网络的连接
4.使用统一码文件名
一.CIFS文件系统的安装以及与用户登陆配置
服务器端:
1.在服务端安装samba samba-common samba-client
yum install samba samba-common samba-client -y
2.打开samba服务,关闭防火墙
systemctl start smb
syatemctl stop firewalld
3.增加smb用户(如果不增加,在客户端只能匿名登陆),增加的smb用户必须是系统中已经存在的用户
smbpasswd -a student 输入两次密码
pdbedit -L 显示系统中的smb用户
pdbedit -x student 删除某一指定smb用户
客户端:
1.安装 samba-client
yum install samba-client
2.用smb用户身份显示内容
smbclient -L //172.25.254.210 -U student
3.用smb身份登陆smb
smbclient //172.25.254.210/student -U student
输入密码后,查看内容ls,我们发现系统提示访问被拒绝
4.这时我们考虑是sebool的问题,在服务端查看samba_enable_home_dirs的sebool值,并将其打开。
getsebool -a | grep samba 查看sebool值
setsebool -P samba_enable_home_dirs on 修改sebool值(-P表示永久设定)
5.重新在客户端以student身份登陆查看内容,成功
smbclient //172.25.254.210/student -U student
二.smb用户上传文件与smb用户挂载
(一)smb用户上传文件
1.登陆smb上传文件
注意:上传的文件只能是现在所在目录中的文件,如现在所处位置是/etc,那么我们只能上传/etc下的文件,如果上传别的地方的文件,那么系统会提示找不到该文件。
smbclient //172.25.254.210/student -U student 用student身份登陆smb
!ls 显示该目录下的文件
put passwd 上传passwd文件
上传完成之后,会在服务端的用户家目录中。
(二)smb用户挂载
1.我们之前用student用户查看,发现//172.25.254.210/student是一块磁盘,可以将其挂载在/mnt下
方法一:mount //172.25.254.210/student /mnt/ -o username=student,password=student
方法二:先卸载上边的挂载
编写自动挂载文件
vim /etc/rc.d/rc.local
mount //172.25.254.210/student /mnt -o username=student,password=student
/mnt是挂载点,username是smb用户名称,password是该用户的密码
chmod +x /etc/rc.d/rc.local
reboot
2.df查看系统挂载情况,可以看到//172.25.254.210/student已经自动挂载在了/mnt下
三.smb用户的访问控制
1.查看smb的主配置文件
rpm -qc samba-common
2.修改配置文件修改域名
第89行:workgroup = jay
3.添加白名单
第96行:hosts allow = 172.25.254.110 只允许172.25.254.110登陆访问,其余用户默认加入黑名单
白名单中的用户可以访问:
别的用户不可以访问:
4.添加黑名单
第96行:hosts deny = 172.25.254.110 不允许172.25.254.110登陆访问,其余用户默认加入白名单
四.在smb下共享目录
(一).共享自己创建的目录
1.建立目录
mkdir /jay
2.修改该目录的安全上下文和smb服务的安全上下文保持一致
semanage fcontext -a -t samba_share_t '/jay(/.*)?'
3.显示修改过程
restorecon -RvvF /jay
4.修改主配置文件
vim /etc/samba/smb.conf
在最后添加[DIR]
comment = jay dir
path = /jay
5.重启服务
systemctl restart sbm.service
6.在客户端登陆,查看是否能看到该目录
smbclient -L //172.25.254.210/ -U student
(二).共享系统目录
1.修改主配置文件,在最后加上
[mnt]
comment = /mnt dir
path = /mnt
2.在客户端能看到/mnt目录,但是不能看到/mnt里边的文件,修改selinux为警告模式,可以看到文件。如果将/mnt的安全上下文修改为samba_share_t,显然不太合适,因为/mnt是系统目录,还有别的用处。
3.在主配置文件中有关于该问题的说明,做如下设置
setsebool -P samba_export_all_ro on
4.在客户端可以看到/mnt里边的文件
smbclient //172.25.254.210/mnt -U student
(三).共享目录的功能设定
1.设定该目录是否可被浏览
browseable = no(设定该目录不允许被浏览,该目录会被隐藏)
browseable = yes(设定该目录允许被浏览,不隐藏)
2.设定该目录可以被写
writeable = yes(允许所有用户可写),并且在服务端修改/jay的权限为777才可写
mount //172.25.254.210/DIR /mnt -o username=student,password=student 将DIR挂载在/mnt
touch /mnt/file 在/mnt下建立文件
3.设定指定用户可写
write list = student 指定student用户可写
write list = +student或者@student 指定student组内成员可写
usermod -G student jay 将jay加入到student组中
mount //172.25.254.210/DIR /mnt -o username=jay,password=jay
touch /mnt/file1
4.设定指定用户为root用户
admin users = jay 设定jay用户为DIR 的超级用户
五.smb的多用户挂载
1.在客户端安装多用户挂载的软件
yum install cifs-utils
2.查看该软件的连机帮助
man mount.cifs
里边提到需要在多用户挂载时根据不同的版本号采取不同的加密方式,用rpm -qa |grep samba查看版本号
3.编写已知smb用户的认证文件
vim /root/smbpass
usernmae=student
password=student
4.挂载DIR
mount -o credentials=/root/smbpass,sec=ntlmssp,multiuser //172.25.254.210/DIR /mnt
首先用/root/smbpass来认证,采取的加密方式为ntlmssp,采用多用户挂载
5.在别的未经认证的用户中不能看到/mnt里边的内容,如果想看,必须用smb用户加以认证
su - hello
cifscreds --help
cifscreds: unrecognized option '--help'
Usage:
cifscreds add [-u username] [-d] <host|domain> 添加认证用户
cifscreds clear [-u username] [-d] <host|domain> 清除指定已认证的用户
cifscreds clearall 清除所有认证用户
cifscreds update [-u username] [-d] <host|domain> 更新认证信息
cifscreds add -u jay 172.25.254.210 认证jay用户
如果在输入密码的时候输入错误,我们需要清除缓存,重新认证
6.jay用户认证之后可以看到/mnt底下的内容
六.smb的匿名访问
1.在客户端编写主编写配置文件
vim /etc/samba/smb.conf
第329行: guest ok = yes 允许guest用户访问
第125行: map to guest = bad user guest用户的映射是非系统用户
2.重启系统
systemctl restart amb.service
3.在客户端匿名访问
smbclient //172.25.254.210/DIR 无密码,直接回车
4.在客户端匿名挂载
mount //172.25.254.210/DIR /mnt -o username=guest,password=""