Samba文件共享
cifs是实现文件共享服务的一种文件系统,主要用于实现windows系统中的文件共享,linux系统中用的比较少
linux系统中利用cifs文件系统实现文件共享,需要安装smaba服务
samba
samba是在linux和unix系统上实现smb协议的一个免费软件,由服务器及客户端程序构成smb(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。smb协议是 客户机/服务器型协议,客户及通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源smaba实现的是linux和windows不同平台的资源共享.
服务器端:
1.安装smb服务
yum install samba samba-client samba-common -y
systemctl start smb ##开启服务
systemctl stop firewalld ##关闭火墙
smbclient -L //172.25.254.145 ##查看172.25.254.145主机的smb共享,匿名用户登陆
enter ##不需要密码
2.添加smb用户
smbpasswd -a westos ##此用户必须是主机已有用户,否则无效
pdbedit -L ##查看smb用户信息
pdbedit -x westos ##删除smb用户
smbclient -L //172.25.254.145 -U student ##-L是列出的意思 使用smb用户查看172.25.254.145共享列表
##默认共享出来的是用户的加目录
smbclient //172.25.254.145/student -U student #student查看自己的家目录 但是不能看到student家目录里面的内容,是由于selinux的限制.有两种方法可以解决
1.此时将selinux限制打开(setenforce 1),就可以看到student家目录里边的内容
2.在enforcing状态下登陆smb用户
getsebool -a | grep samba
setsebool -P samba_enable_home_dirs on ##开启家目录的访问权限
ls ## 查看当前目录下的文件及目录
!ls ##当前用户在系统中所处路径下存在的文件及目录(从根下登陆smb)
put:只能上传相对路径下的文件
3.挂载
挂载后上传及创建文件比起使用smbclient命令更方便
临时挂载文件系统:
mount -o username=student,password=student //172.25.254.145/student /mnt
df
永久挂载该文件系统
vim /etc/fstab
//172.25.254.145/student /mnt cifs defaults,username=student,password=student 0 0
mount -a
切换到挂载在目录/mnt下,建立一个文件,再次用student登陆samba服务,ls可以看到建立的文件
在服务端/home/student下也看到,三者同步,客户端的一个文件保存
二 、自定义添加共享目录
第一种情况:自建目录的共享
服务端:(172.25.254.145)
1.添加新的共享目录的基本设定
mkdir /westos ##新建目录
touch /westos/westosfile{1..3} ##新建目录下新建文件
vim /etc/samba/smb.conf ##将新建的文件目录编辑进去
[DATA] ##共享名称 使用smbclient命令进入此目录时,需使用linux而不是westos
comment=对共享目录的描述
path=共享目录的绝对路径
browseable=yes ##隐藏共享文件,yes时不隐藏
systemctl restart smb ##重启服务
客户端:(172.25.254.245)
smbclient -L //172.25.254.145 -U student ##查看共享信息,可
以看到刚刚编辑的DATA(也就是westos目录)
此时虽然可以看到共享目录(出现linux),但用户却无法访问
方法一:setenforce 0(这里指的是服务端的selinux)
方法二:改变/westos的安全上下文(服务端:172.25.254.145)
semanage fcontect -a -t samba_share_t '/westos(/.*)?' ##改变此目录的安全上下文列表
restorecon -RvvF /westos ##改变完成后记得刷新查看
修改完客户端安全上下文之后在客户端(172.25.254.245)查看
方法三:修改服务端(172.25.254.145)setsebool -P samba_export_all_ro on打开这个权限 就可以进行访问(172.25.254.245),并且自己建立的目录不改变安全上下文也可以进行访问(因为这个开放的权限大)
第二种情况:系统级目录的共享(/mnt为例)
服务端(172.25.254.145):
vim /etc/samba/smb.conf ##在主配置文件里编辑好相关配置信息:名字、说明、绝对路径
重启服务后,使用student用户登陆/mnt目录时(客户端172.25.254.245),查看不到共享的文件file1,file2,file3
设置 setsebool -P samba_export_all_ro on(服务端) 权限比给单独文件设置安全上下文大
客户端测试:
三、挂载共享目录权限的设定
1.本地用户访问配置
rpm -qc samba ##查看smb服务相关配置文件
vim /etc/samba/smb.conf
91 hosts allow = 172.25.254.45 ##仅允许该ip主机进行访问
92 hosts deny = 172.25.254.45 ##仅拒绝该用户主机访问
systemctl restart smb
测试:
在测试主机 sbmclient //172.25.254.145/student -U student
1)设置只允许172.25.254.45主机访问
基本配置信息
workgroup ##工作组的设定
server string ##全局共享信息
hosts deny ##客户端黑名单
在已经安装了samba-client的客户机测试(172.25.254.45)
2)设置只拒绝172.25.254.45主机访问服务器端smb共享文件
在已经安装了samba-clent的客户机(172.25.254.245)中访问
3)如果设置为
hosts allow = 172.25.254.0/24 ##表示服务重启后ip为172.25.254这个网段的ip都可以挂载
在客户端(172.25.254.245)中测试;
2,本地用户挂载配置
1) valid users= westos 设置有效用户为westos(westos必须是系统中存在且添加到smb服务中的用户)
5)valid users= @westos 用户在westos组中都为有效用户
3.本地用户写权限配置
1)writeable = yes 允许用户可写(选项为no时即使给777的权限也不能有写权限)
2)writelist = westos 设置可写的用户名单
2.匿名用户挂载配置
1)vim /etc/samba/smb.conf
map to guest = bad user ##匿名用户为除了本地用户外的用户
writeable = yes ##可写权限
guest ok = yes ##匿名用户可登陆
systemctl restart smb
##进行这一步时需要将上一步本地用户权限注释掉
2)browseable = no 用户在查询目录时不隐藏linux目录
browseable = yes 用户在查询目录时隐藏linux目录
3)admin users = westos 设置westos为超级用户
设定student用户为当前共享的root(因为将文件改为755只有超级用户可以建立文件而且不用重启服务即可生效)
chmod 755 /westos/
2) 在服务端进行匿名用户挂载,挂载上以后载/mnt目录下新建文件的所属人和所属组都为nobody说明为匿名用户:
mount //172.25.254.145/linux /mnt -o username=guest
cd /mnt
ls
touch sj
ls -l
##客户端也可以进行挂载
2) 在服务端进行匿名用户挂载,挂载上以后载/mnt目录下新建文件的所属人和所属组都为nobody说明为匿名用户:
mount //172.25.254.145/linux /mnt -o username=guest
smb多用户挂载(在客户端中完成):
在客户端下载认证插件:yum install cifs-utils
1.在客户端/root下新建文件:vim /root/smbauth(文件名自定义),将用户身份和密码编辑进去,
username=shijin
password=shijin
chmod 600 /root/smbauth ##文件设置权限设置
然后挂载:
mount -o credentials=rootsmbauth,multiuser,sec=ntlmssp //172.25.254.145/DATA /mnt
##credendtials=/root/smbauth ##为指定挂载时用到的用户文件,即用户名和密码
##multiuser 表示多用户认证
##sec=ntlmssp表示认证方式为标准smb认证方式
df
ls /mnt
然后切换到新建的本地用户tom,tom想要查看/mnt目录的文件。或者写入,则需要经过用户认证,
输入/root/smbauth中的密码才可以进入:
su - tom
cifscreds add -u shijin 172.25.254.145
shijin ##密码
ls /mnt