1.什么是cifs和samba?
CIFS :是一个新提出的协议,它使程序可以访问远程Internet计算机上的文件并要求此计算机提供服务。CIFS 使用客户/服务器模式。客户程序请求远在服务器上的服务器程序为它提供服务。服务器获得请求并返回响应。CIFS是公共的或开放的SMB协议版本,并由Microsoft使用。SMB协议在局域网上用于服务器文件访问和打印的协议。像SMB协议一样,CIFS在高层运行,而不像TCP/IP协议那样运行在底层。CIFS可以看做是应用程序协议如文件传输协议和超文本传输协议的一个实现。通用Internet文件系统,在windows主机之间进行网络文件共享是通过使用微软公司自己的CIFS服务实现的。
Samba:是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。
2.实验准备
配置ip搭建yum源
服务端:
客户端:
3.samba服务器环境部署
服务端
yum search samba
yum install samba-client.x86_64 -y ##客户端应用程序
yum install samba-common.x86_64 -y ##Samba的支持文件
yum install samba.x86_64 -y ##服务器应用程序
systemctl stop firewalld.service
getenforce ##查看此时selinux的状态
Enforcing
rpm -qc samba-common ##samba的配置文件
/etc/logrotate.d/samba
/etc/samba/lmhosts
/etc/samba/smb.conf ##主配置文件
/etc/sysconfig/samba
vim /etc/samba/smb.conf
修改配置文件写入以下内容并重启服务
vim /etc/samba/smb.conf
[szy] ##共享名称
path = /westos ##实际共享目录
systemctl restart smb
因为selinux=enforcing,所以要修改共享目录安全上下文
semanage fcontext -a -t samba_share_t '/westos(/.*)?'
restorecon -RvvF /westos/
添加snb用户
useradd westos ##添加系统用户
smbpasswd -a westos ##添加smb用户,输入密码(redhat)
pdbedit -L ##列出smb用户
客户端:
安装samba客户端软件
yum install samba-client -y
systemctl stop firewalld.service
测试:
smbclient -L //172.25.254.216
smbclient //172.25.254.216/szy
smbclient //172.25.254.216/szy -U westos
匿名查看
匿名可以登陆但查看不了内容
以westos用户登陆
挂载
mount //172.25.254.216/szy /mnt -o username=westos,password=redhat
配置文件的参数说明
每次修改完配置文件后都要重启smb服务
1.comment=szy dir 说明
修改服务端配置文件
vim /etc/samba/smb.conf
systemctl restart smb
客户端:
2.browseable=yes 可见,不隐藏;broweable=no 共享目录隐藏起来了,可以用,但-L看不到。
服务端:
客户端:
3.valid users = westos 有效用户即只用添加的用户可以登陆,可以添加多个但中间要用空格隔开。
服务端:
useradd szy
smbpasswd -a szy
useradd student
smbpasswd -a student
pdbedit -L ##列出smb用户
pdbedit -x student ##删除smb用户student
客户端:
4.valid users = @或+westos, westos组成员可以访问共享目录
服务端:
客户端:
返回服务端
id szy
usermod -G westos szy ##把用户szy加到westos组里
id szy
此时返回客户端发现szy用户可以访问了
5.writeable = yes 可以执行写权限
服务端:
客户端:
这是因为westos用户对/westos没有写的权力
返回服务端,给wetsos用户增加权限
此时客户端可以执行删除命令了
5.write list = szy 只有列表里用户(szy)可写
服务端:
客户端:
6.write list = @szy 只有szy这个用户组的成员可写
客户端:
默认情况下匿名用户是不可以登陆的,上文已经说了。
7.guest ok = yes 允许匿名用户登陆
服务端:
但我们发现匿名用户虽然可以登陆并查看内容,但仍不能挂载。
此时我们需要返回服务端,修改配置文件
map to guest = bad user 把匿名用户映射成guest,让mount识别到匿名用户的身份,可以挂载。
哉回到客户端,发现可以挂载。
8.admin users=student,登陆之后,使用的是root用户权限。
服务端:
smbpasswd -a student ##将student用户添加到smb中
客户端:
9.workgroup = WESTOS 工作组的名字
服务端:
客户端:
以下是参数的说明
参数 | 说明 |
---|---|
path | 实际共享目录 |
comment | 说明 |
workgroup | 修改工作域 |
browseable | 隐藏内容,但可以查询和使用(默认是yes,可以查看) |
valid users=具体用户 | 添加有效用户,其他用户被拒。+或@westos用户,其组成员可以登陆 |
writable=yes | 可写 |
write list | 可写用户列表(只有列表里用户可写) |
guest ok = yes | 匿名用户登陆 |
map to guest= bad user | 匿名用户可以挂载, 映射到用户=bad user |
admin users = student | 提升用户级别:在使用student登陆了samba之后,就对于这个目录相当于root身份 |
4.samba服务器多用户挂载(包含永久挂载)
之前所用的挂载是不安全的,可以看到用户密码,切换用户后其他用户还能看到之前用户挂载信息。
我们可以在客户端安装可以实现多用户挂载的cifs服务,并通过man手册查看该服务的具体配置信息:
yum install cifs -y
man 8 mount.cifs
我们新建一个文件/root/smb_auth,里面写入服务端smb用户的用户名和密码,并修改文件的权限,默认情况下只有root用户可读写:
vim /root/smb_auth
写入:
username=westos
password=westos
chmod 600 /root/smb_auth
通过这种方式可以直接挂载,而不显示出密码,但其他用户还是可以看到root用户挂载目录下的内容。
为解决上面问题我们可以采取以下方法:
mount //172.25.254.216/szy /mnt -o credentials=/root/smbauth,sec=ntlmssp,multiuser
用户linux要是想看目录下的内容,需要得到一个服务端smb用户的身份才可以
cifscreds --help ##--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 westos 172.25.254.216
cifscreds clear -u westos 172.25.254.216
多用户永久挂载
客户端:
vim /etc/fstab
写入:
//172.25.254.225/szy /mnt cifs defaults,credentials=/root/smb_auth,sec=ntlmssp,multiuser 0 0