smb文件共享
用internet文件系统(cifs)也称为服务器信息是适用于microsoftwindows服务器和客户端的标准文件和打印机共享系统信息块(smb)
samba服务可用于将linux文件系统作为cifs/smb网络文件共享进行共享,并将linux打印机作为gifs/smb打印机共享进行共享
1.安装部署samba
服务端:
[root@server ~]# yum install samba samba-client samba-common -y #安装
[root@server ~]# systemctl start smb #开启服务
[root@server ~]# systemctl enable smb
[root@server ~]# systemctl stop firewalld.service #关闭火墙
[root@server ~]# systemctl disable firewalld.service
[root@server ~]# netstat -antlupe | grep smb #查看默认端口
客户端:
[root@client ~]# yum install samba-client -y
[root@client ~]# smbclient -L //172.25.254.252 #匿名用户访问
服务端:
客户端:
2.用户添加
为sanma添加的用户必须是存在的用户,如果不存在,需要先建立出来
服务端:
[root@server ~]# useradd linux #建立用户
[root@server ~]# smbpasswd -a student #添加samba用户
New SMB password:
Retype new SMB password:
Added user student.
[root@server ~]# smbpasswd -a linux #添加samba用户
New SMB password:
Retype new SMB password:
Added user linux.
[root@server ~]# pdbedit -L #查看samba用户
客户端:
[root@client ~]# smbclient //172.25.254.252/student -U student #samba用户访问
Enter student's password:
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]
smb: \> ls
NT_STATUS_ACCESS_DENIED listing \* #查看失败的话需要修改服务端selinux的bool值
服务端:
[root@server ~]# getsebool -a | grep samba #查看samba的selinux布尔值
[root@server ~]# setsebool -P samba_enable_home_dirs on #更改bool值
客户端:
[root@client ~]# smbclient //172.25.254.252/student -U student #samba用户访问
smb: \> ls
服务端:
客户端:
3.上传文件
客户端:
[root@client ~]# cd /etc
[root@client etc]# smbclient //172.25.254.252/student -U student #samba用户访问
smb: \> !ls #查看本地文件
smb: \> put passwd #只能上传当前目录的文件,要上传其他目录的文件需要退出切换到其目录
putting file passwd as \passwd (195.8 kb/s) (average 195.8 kb/s)
服务端查看:
[root@server ~]# ls /home/student/
passwd
客户端:
服务端:
4.挂载
客户端:
临时挂载
[root@client ~]# mount //172.25.254.252/student /mnt -o username=student,password=lin #挂载
[root@client ~]# df
永久挂载:
[root@client ~]# vim /etc/fstab #开机自动挂载
//172.25.254.252/student /mnt cifs defaults,username=student,password=lin 0 0
客户端:
/etc/fstab内容:
5.主机访问权限设置
服务端:
[root@server ~]# vim /etc/samba/smb.conf
hosts deny|allow = 172.25.254.152 #允许/不允许
[root@server ~]# systemctl restart smb.service
客户端:
/etc/samba/smb.conf内容:
测试:172.25.254.155访问:
172.25.254.152访问:
6.共享目录
1)共享普通目录
服务端:
[root@server ~]# mkdir /kjy
[root@server ~]# vim /etc/samba/smb.conf
[DIR]
comment=kjy dir
path = /kjy
[root@server ~]# systemctl restart smb.service
[root@server ~]# semanage fcontext -a -t samba_share_t '/kjy(/.*)?' #更改安全上下文
[root@server ~]# semanage fcontext -l | grep /kjy #查看
[root@server ~]# restorecon -FvvR /kjy #刷新
客户端:
[root@client ~]# smbclient //172.25.254.252/DIR -U student
服务端:
/etc/samba/smb.conf内容:
2)共享系统目录
[root@server ~]# vim /etc/samba/smb.conf
[mnt]
comment=mnt dir
path = /mnt
[root@server ~]# systemctl restart smb.service
[root@server ~]# setsebool -P samba_export_all_ro on #更改bool值(更改安全上下文的方法只能samba服务访问,其他服务不能访问)
[root@server ~]# touch /mnt/file1
客户端:
[root@client ~]# smbclient //172.25.254.252/mnt -U student
Enter student's password:
Domain=[LINUX] OS=[Unix] Server=[Samba 4.1.1]
smb: \> ls
服务端
/etc/samba/smb.conf内容:
客户端:
7.共享目录权限设定
1)隐藏共享目录
服务端:
[root@server ~]# vim /etc/samba/smb.conf
[DIR]
comment=kjy dir
path = /kjy
browseable= yes|no #是否显示共享目录
[root@server ~]# systemctl restart smb.service
客户端:
[root@client ~]# smbclient -L //172.25.254.252
服务端:
/etc/samba/smb.conf内容:
客户端:
(共享目录被隐藏)
2)用户读写权限
服务端:
[root@server ~]# vim /etc/samba/smb.conf
[DIR]
comment=kjy dir
path = /kjy
writeable= yes|no #是否允许用户写入
write list = +student #允许哪些用户写入(有+或@表示对整个用户组可写)
admin users = linux #设置linux为共享目录的超级用户
[root@server ~]# systemctl restart smb.service
[root@server ~]# chmod 777 /kjy
客户端:
[root@client ~]# mount //172.25.254.252/DIR /mnt -o username=linux,password=lin
[root@client ~]# touch /mnt/file1
touch: cannot touch ‘/mnt/file1’: Permission denied
服务端:用户可写
客户端:
服务端:只允许student可写:
客户端:
服务端:允许student用户组可写:
客户端:先用linux登录测试,在服务端linux将其加入student用户组,再进行测试
服务端更改用户组
8.多用户挂载
直接执行mount //172.25.254.252/DIR /mnt -o username=linux,password=lin不安全,客户端的普用户也可以看到服务端共享目录的文件,需要对普通用户进行限制
客户端:
[root@client ~]# yum install cifs-utils.x86_64
[root@client ~]# vim /root/smbpass
username=student
password=lin
[root@client ~]# mount //172.25.254.252/DIR /mnt -o credentials=/root/smbpass,sec=ntlmssp,multiuser #挂载时的用户认证(sec=ntlmssp,multiuser 用户认证方式及支持多用户认证)
[root@client ~]# cd /mnt
[root@client mnt]# ls
[root@client mnt]# touch file2
[root@client mnt]# ls
file1 file2
[root@client mnt]# useradd test
[root@client mnt]# su - test
[test@client ~]$ ls /mnt
ls: cannot access /mnt: Permission denied
[test@client ~]$ cifscreds add -u linux 172.25.254.252 #添加
Password:
[test@client ~]$ ls /mnt
客户端:
/root/smbpass内容:
9.匿名用户挂载
服务端:
[root@server ~]# vim /etc/samba/smb.conf
map to guest = bad user
guest ok = yes
[root@server ~]# systemctl restart smb.service
客户端:
[root@client ~]# mount //172.25.254.252/DIR /mnt -o username=guest,password=''
[root@client ~]# df
服务端:/etc/samba/smb.conf内容:
客户端: