一、SMB共享
用internet文件系统(CIFS)也称为服务器信息是使用于Microsortwindosw 服务器和客户端的标准文件和打印机共享系统信息块(SMB
Samba 服务可用于将Linux文件系统作为CIFS/SMB网络文件共享进行共享,并将Linux打印机作为CFIS/SMB打印共享进行共享
CIFS简介
CIFS(Common Internet File System)文件系统也称通用Internet文件系统,它使程序可以访问远程Internet计算机上的文件并要求此计算机的服务。CIFS使用客户/服务器模式。客户程序请求远在服务器上的服务程序为它提供服务,服务器获得请求并返回响应。CIFS是公开的开放的SMB协议版本。SMB协议现在是在局域网上用于服务器文件访问和打印的协议。像SMB协议一样,CIFS在高层运行。可以看做是应用程序协议如文件传输协议和超文本传输协议的一个实现。
CIFS可以提供以下功能:
1.访问服务器本地文件并读写这些文件
2.与其它用户一起共享一些文件块
3.在断线时自动恢复与网络的连接
4.使用统一码文件名
下载smb文件包
下载安装包 [root@apache-server ~]# yum install samba samba-common-tools.x86_64 -y
打开samba,关闭防火墙
[root@apache-server ~]# getenforce 查看selinux级别为enforcing
Enforcing
[root@apache-server ~]# systemctl stop firewalld.service 关闭火墙
[root@apache-server ~]# getsebool -a | grep samba
samba_create_home_dirs --> off
samba_domain_controller --> off
samba_enable_home_dirs --> off
samba_export_all_ro --> off
samba_export_all_rw --> off
samba_load_libgfapi --> off
samba_portmapper --> off
samba_run_unconfined --> off
samba_share_fusefs --> off
samba_share_nfs --> off
sanlock_use_samba --> off
tmpreaper_use_samba --> off
use_samba_home_dirs --> off
virt_use_samba --> off
[root@apache-server ~]# setsebool -P samba_create_home_dirs on 开启创建目录的服务
[root@apache-server ~]# systemctl start smb 开启smb服务
增加smb用户(如果不增加,在客户端只能匿名登陆),增加的smb用户必须是系统中已经存在的用户
smbpasswd -a student 输入两次密码
pdbedit -L 显示系统中的smb用户
pdbedit -x student 删除某一指定smb用户
设置登陆密码
[root@apache-server ~]# smbpasswd -a student
New SMB password: 输入两次密码
Retype new SMB password:
Added user student.
客户端:
1.安装 samba-client
[root@apache-server ~]# yum install samba-client -y
2,用smb身份登陆用户查看有哪些服务
3,以smb身份登陆用户查看文件内容
[root@apache-server ~]# smbclient //192.168.100.200/student -U student
输入密码后,查看内容ls,我们发现系统提示访问被拒绝
这时我们考虑是sebool的问题,在服务端查看samba_enable_home_dirs的sebool值,
并将其打开 getsebool -a | grep samba 查看sebool值
setsebool -P samba_enable_home_dirs on 修改sebool值(-P表示永久设定)
查看是没有打开的,然后将其打开再次查看
打开之后在重新以smb身份登陆查看,已经成功
二.smb用户上传文件与smb用户挂载
pdbedit -L 查看有什么用户
pdbedit -L xxx 查看指定用户
pdbedit -x xxx 删除指定用户
smbpasswd -a xxx 设置共享密码
(一)smb用户上传文件
1.登陆smb上传文件
注意:上传的文件只能是现在所在目录中的文件,如现在所处位置是/etc,那么我们只能上传/etc下的文件,如果上传别的地方的文件,那么系统会提示找不到该文件。
1 smbclient //172.25.254.210/student -U student 用student身份登陆smb
2 !ls 显示该目录下的文件
3 put passwd 上传passwd文件
上传完成之后,会在服务端的用户家目录中。
(二)直接查看共享
做本地域名解析
[root@apache-server ~]# vim /etc/hosts
[root@apache-server ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.100.200 server.westos.com
以smb身份直接登陆查看
(三)smb用户挂载
1.我们之前用student用户查看,发现//192.168.100.200/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
2.df查看系统挂载情况,可以看到//172.25.254.210/student已经自动挂载在了/mnt下
三、匿名用户登陆访问控制
关闭火墙,更改名称做域名解析
[root@apache-server ~]# systemctl stop firewalld
[root@apache-server ~]# hostnamectl set-hostname server.westos.com
[root@apache-server ~]# hostname
server.westos.com
- 编辑smb主配置文件
匿名用户可以登陆 。允许200的这台主机可以登陆访问,拒绝180这台主机访问
四.在smb下共享目录
1.创建新的共享目录,并且更改目录的安全下文和smb服务的安全上下文保持一致
[root@server ~]# mkdir /bbo
[root@server ~]# semanage fcontext -a -t samba_share_t '/bbo(/.*)?'
[root@server ~]# restorecon -RvvF /bbo 刷新
restorecon reset /bbo context unconfined_u:object_r:default_t:s0->system_u:object_r:samba_share_t:s0
2.修改主配置文件
[root@server ~]# vim /etc/samba/smb.conf
####### 3.服务重启
[root@server ~]# systemctl restart smb.service
6.在客户端登陆,查看是否可以查看到该目录
smbclient -L //192.168.100.200/ -U student
(二) 共享系统目录
服务端:
1.修改主配置文件,在最后加上
vim /etc/samba/smb.conf
[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 //192.168.100.200/mnt -U student
五.多用户访问控制
1.下载插件
下载 yum install cifs-utils.x86_64 -y
2.创建新的共享用户并且编辑
vim /root/smbpass
usernmae =kok
password =kok
3.赋于权限只能自己查看
chmod 600 /root/smbpass
4.挂载
mount //192.168.100.200/bbo /mnt -o credentials=/root/smbpass,sec=ntlmssp,multiuser
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底下的内容