一、samba相关概念
NFS可以让 Unix Like 的机器互相共享文件;
CIFS只能让Windows机器共享文件;
SMB(Server Message Block)即SAMBA,可以让Unix Like和WIndows不同的操作系统平台互相共享数据。
SAMBA使用的 NetBIOS (Network Basic Input/Output System)协议,但是NetBIOS是无法跨路由的。
通过NetBIOS over TCP/IP技术可以跨路由器的使用SAMBA服务器所提供的功能。目前,SAMBA还是比较广泛的使用在LAN内部。
1、SAMBA常见的应用
- 共享文件与打印机服务
- 可以提供用户登录SAMBA主机时的身份认证,以提供不同身份用户的个别数据;
- 可以进行Windows网络上的主机名解析(NetBIOS Name);
- 可以进行设备的共享(例如Zip、CD-ROM)。
2、SAMBA的基本信息
# /etc/samba/smb.conf 主配置文件
# /usr/share/doc/samba-4.1.1 含了SAMBA的所有相关的技术手册
- 服务端口:通常使用TCP/445进行所有连接。还使用UDP137、UDP138和TCP/139进行向后兼容
- 服务名称:smb --主机目录共享,文件与打印机等信息。nmb–管理群组和NetBIOS Name解析的。
- 软件包:Samba-common – Samba支持的文件,Samba-client – 客户端应用程序,Samba – 服务器应用程序
二、samba文件存储
实验环境:
1>服务端IP=172.25.254.205
2>关闭防火墙
[root@localhost ~]# systemctl stop firewalld
<1>安装并开启samba服务
[root@localhost ~]# yum install samba samba-common samba-client -y
[root@localhost ~]# systemctl start smb
<2>匿名用户访问——无密码
[root@localhost ~]# smbclient -L //172.25.254.205
Enter root's password: ##无密码,回车即可
Anonymous login successful
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1] ##域名MYGROUP
Sharename Type Comment
--------- ---- -------
IPC$ IPC IPC Service (Samba Server Version 4.1.1)
Anonymous login successful
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]
Server Comment
--------- -------
Workgroup Master
--------- -------
<2>设定访问域名及黑、白名单
[root@localhost ~]# vim /etc/samba/smb.conf ##配置文件
89 workgroup = WESTOS ##域名
96 hosts deny =172.25.254.205 ##黑名单
97 hosts allow =172.25.254.105 ##白名单
[root@localhost ~]# systemctl restart smb.service ##重启服务
测试:
<1>IP=172.25.254.105主机访问
[root@localhost ~]# smbclient -L //172.25.254.205 ##白名单用户访问
Enter root's password:
Anonymous login successful
Domain=[WESTOS] OS=[Unix] Server=[Samba 4.1.1] ##域名更改为WESTOS
Sharename Type Comment
--------- ---- -------
IPC$ IPC IPC Service (Samba Server Version 4.1.1)
Anonymous login successful
Domain=[WESTOS] OS=[Unix] Server=[Samba 4.1.1]
Server Comment
--------- -------
Workgroup Master
--------- -------
<2>IP=172.25.254.205主机访问,访问拒绝
注意:配置文件的查找
三、smb文件挂载
实验环境:selinux为permissive状态或disabled姿态
[root@localhost ~]# getenforce
Permissive
<1>创建smb用户(smb用户建立的前提:虚拟机必须存在该用户)
[root@localhost ~]# id student ##student用户存在
uid=1000(student) gid=1000(student) groups=1000(student),10(wheel)
[root@localhost ~]# smbpasswd -a student ##设定student用户在smb中的密码
[root@localhost ~]# useradd westos ##创建westos用户
[root@localhost ~]# smbpasswd -a westos ##设定westos用户在smb中的密码
[root@localhost ~]# pdbedit -L ##查看smb用户
示图:查看smb用户
注意:smb用户的删除
[root@localhost ~]# pdbedit -x 用户名
<2>本地用户登陆
[root@localhost ~]# smbclient -L //172.25.254.205 -U westos
示图:默认登陆目录为本地用户westos的家目录
<3>smb命令
注意:
<1>!ls 表示查看客户端
<2>? 输出为smb中支持的命令,命令少于shell中的命令,若需执行shell中的命令,需挂载。
<4>挂载
1)临时挂载
[root@localhost ~]# mount -o username=linux,password=123 //172.25.254.205/linux /mnt ##临时挂载
2)永久挂载
[root@localhost ~]# vim /etc/fstab ##永久挂载
//172.25.254.205/linux /mnt cifs defaults,username=linux,password=123 0 0
示图:永久挂载
四、smb共享设置
实验环境:
<1>SELinux为Enforcing状态
<2>删除永久挂载
[root@localhost ~]# getenforce
Enforcing
SELinux为Enforcing状态时,本地用户无法共享家目录
1、共享Samba用户家目录
[root@localhost ~]# setsebool -P samba_enable_home_dirs on ##开启此服务
测试:
注意:配置文件提示开启bool值
[root@localhost ~]# vim /etc/samba/smb.conf
2、共享用户自行建立的目录
[root@localhost ~]# mkdir /smbdir ##建立共享目录
[root@localhost ~]# semanage fcontext -a -t samba_share_t 'smbdir(/.*)?'
[root@localhost ~]# restorecon -RvvF /smbdir/
[root@localhost ~]# vim /etc/samba/smb.conf
322 [westos] ##任意
323 comment = smbdir directory ##任意
324 path = /smbdir
[root@localhost ~]# systemctl restart smb.service ##重启服务
示图:
<1>修改安全上下文
<2>配置文件,共享用户自行建立的目录/smbdir
测试:
示图:
<1>匿名用户登陆可查看共享目录
<2>本地用户可进入共享目录的家目录
注意:配置文件提示
[root@localhost ~]# vim /etc/samba/smb.conf
3、共享系统目录
注意:修改安全上下文会影响其他服务的使用,所以需要修改smb布尔值。修改此bool,也可共享用户自行建立的目录。
[root@localhost ~]# getsebool -a | grep samba
[root@localhost ~]# setsebool -P samba_export_all_rw on ##开启smb所有读写bool值
[root@localhost ~]# vim /etc/samba/smb.conf
325 [mnt]
326 comment = /mnt
327 path = /mnt
[root@localhost ~]# systemctl restart smb.service ##重启服务
示图:
<1>查看bool值
<2>配置文件,共享/mnt系统目录
测试:
<1>匿名用户可查看共享目录
<2>本地用户可进入共享目录的家目录
五、用户权限设置
<1>允许所有人可写
[root@localhost ~]# vim /etc/samba/smb.conf ##允许共享目录/smbdir可写
322 [westos] ##任意
323 comment = smbdir directory ##任意
324 path = /smbdir
325 writable = yes ##允许可写
[root@localhost ~]# systemctl restart smb.service ##重启服务
[root@localhost ~]# mount //172.25.254.205/westos /mnt -o password=123,username=linux
测试:
注意:文件系统需挂载,才可共享访问
<2>允许某用户可写
[root@localhost ~]# umount /mnt
[root@localhost ~]# vim /etc/samba/smb.conf ##允许共享目录/smbdir可写
322 [westos] ##任意
323 comment = smbdir directory ##任意
324 path = /smbdir
325; writable = yes ##注释,允许可写
326 write list = westos
[root@localhost ~]# systemctl restart smb.service ##重启服务
示图:
<1>配置文件,只允许westos用户可写
<2>查看文件允许某用户可写
mount 命令
测试:
<1>westos用户可写
<2>student用户不可写
<3>允许组成员可写
[root@localhost ~]# vim /etc/samba/smb.conf ##允许共享目录/smbdir可写
322 [westos] ##任意
323 comment = smbdir directory ##任意
324 path = /smbdir
325; writable = yes ##注释,允许可写
326 write list = @westos ##允许westos组成员可写,write list = +list
[root@localhost ~]# systemctl restart smb.service ##重启服务
[root@localhost ~]# id linux
uid=1002(linux) gid=1002(linux) groups=1002(linux) ##linux不属于westos组
[root@localhost ~]# usermod -G westos linux ##将linux加入westos组
[root@localhost ~]# umount /mnt
[root@localhost ~]# mount //172.25.254.205/westos /mnt -o password=123,username=linux
测试:
<1>组成员linux可写
<2>组成员student可写
4、共享浏览信息
[root@localhost ~]# umount /mnt
[root@localhost ~]# vim /etc/samba/smb.conf
[westos]
comment = smbdir directory
path = /smbdir
; writeable = yes
write list = @westos
browseable = no ##默认browseable = yes
[root@localhost ~]# systemctl restart smb.service
测试:
<1>默认browseable = yes,共享可浏览
<2>隐藏共享浏览
5、student对于westos目录以超级用户身份访问
[root@localhost ~]# vim /etc/samba/smb.conf
[westos]
comment = smbdir directory
path = /smbdir
writeable = yes
; write list = @westos
browseable = yes
admin users = student
[root@localhost ~]# systemctl restart smb.service
测试:
[root@localhost ~]# umount /mnt
[root@localhost ~]# mount //172.25.254.205/westos /mnt -o password=redhat,username=student
[root@localhost ~]# touch /mnt/file
6、允许匿名用户访问共享目录
[root@localhost ~]# vim /etc/samba/smb.conf
125 map to guest = bad user
322 [westos]
323 comment = smbdir directory
324 path = /smbdir
325 writeable = yes
326; write list = @westos
327 browseable = yes
328 admin users = student
329 guest ok = yes ##允许匿名用户
[root@localhost ~]# systemctl restart smb.service
测试:
[root@localhost ~]# mount //172.25.254.205/westos /mnt -o username=guset
[root@localhost ~]# smbclient //172.25.254.205/westos
六、多用户挂载
服务器:
[root@localhost ~]# vim /etc/samba/smb.conf
[westos]
comment = smbdir directory
path = /smbdir
write list = westos
browseable = yes
[root@localhost ~]# systemctl restart smb.service
客户端:真机
以普通方式挂载,会使用户登录信息泄漏 。使用cifs-utils进行加密,安装cifs-utils软件包,它包含了cifscreds命令,将用户的信息放在根下的某个文件中。
<1>使用cifs-utils进行加密
[root@foundation5 ~]# yum install cifs-utils -y #安装cifs-utils软件包,它包含了cifscreds命令
[root@foundation5 ~]# vim /root/smbuser ##新建用户信息文件
username=linux
password=123
<2>超级用户认证挂载(以linux用户认证信息)
[root@foundation5 ~]# mount -o credentials=/root/smbuser,sec=ntlmssp,multiuser //172.25.254.205/westos /mnt
<3>普通用户认证以westos用户登陆
[kiosk@foundation2 Desktop]$ cifscreds add -u westos 172.25.254.205