linux之cifs文件系统及samba共享服务
- 什么是cifs文件系统
cifs(common internet system)是一个新提出的协议,他是程序可以访问远程internet计算即上的文件并要求此计算机提供服务。
cifs使用的是客户/服务器模式。客户程序请求源在服务器上的服务器程序为它提供服务。服务器获得请求并返回响应。
cifs是公共的或开放的SMB协议版本
- samba文件共享
Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。
实验环境准备:
client虚拟机:客户端,ip172.25.254.84
server虚拟机:samba文件共享服务端,ip172.25.254.184
真机ip:172.25.254.1
安装:
yum install samba samba-common samba-client -y
打开允许用户访问家目录的selinux开关
systemctl start smb
systemctl stop firewalld
getseboll -a |grep samba
setseboll -P samba_enble_home_dirs on
创建samba用户并测试:
smbpasswd -a student
smbclient -L //172.25.254.184 -U student
smbclient //172.25.254.184/student -U student
ls
访问windows:
smbclient -L //172.25.254.252 -U administrator
注意:访问windos必须指定用户,不支持匿名访问
- samba用户添加与删除
系统与samba的用户及密码相互独立
但是系统用户影响samba用户的创建,即必须有该系统用户才能创建。
useradd liu ##创建虚拟机用户
smbpasswd -a liu ##创建samba用户并设定密码
pdbedit -L ##查看samba用户
pdbedit -x liu ##删除samba的liu用户
pdbedit -L
- samba配置文件相关
修改Domain(域):
编写配置文件:
vim /etc/samba/smb.conf
89 workgroup = BLUE
systemctl restart smb
修改前:
修改后:
设置共享目录及共享文件:
创建共享目录和文件:
mkdir /smbshare
touch /smbshare/file{1..10}
编写配置文件:
vim /etc/samba/smb.conf
在文件末尾加入:
[HAHA]
comment = haha directory
path = /smbshare
systemctl resart smb
修改后查看:
修改samba共享目录安全上下文:
查看共享目录安全上下文:
vim /etc/samba/smb.conf
第34行可查看共享目录安全上下文
修改共享目录安全上下文:
ls -Zd /smbshare
semanage fcontext -a -t samba_share_t '/smbshare(/.*)?'
restorecon -RvvF /smbshare
ls -Zd /smbshare
挂载:
mount //172.25.254.184/HAHA /mnt/ -o username=student,password=123
匿名用户访问:
编写配置文件:
vim /etc/samba/smb.conf
编写加入:
124 map to guest = bad user
326 guest ok = yes
systemctl restart smb
测试:
smbclient //172.25.254.184/HAHA
注意:如果访问不成功,请先hostname查看主机名,并设置/etc/hosts的域名解析
限制ip访问:
编写配置文件:
vim /etc/samba/smb.conf
编写加入:
hosts allow = 172.25.254.184 ##允许184ip访问
hosts allow = 172.25.254. ##允许172.25.254网段ip访问
hosts deny = 172.25.254.184 ##限制184ip访问
hosts deny = 172.25.254. ##限制172.25.254网段ip访问
systemctl restart smb
测试allow:
172.25.254.84可以访问
172.25.254.1被限制访问
测试deny:
172.25.254.84被限制访问
管理本地用户是否可写:
编写配置文件:
vim /etc/samba/smb.conf
writable = yes ##所有用户可写
write list = + student ##student组用户可写
chmod 777 /smbshare/ #给共享目录权限
systemctl restart smb
测试所有本地用户可写:
测试只有student用户可写,其余用户不可写
管理本地用户是否可以登陆:
编写配置文件:
vim /etc/samba/smb.conf
vaild users = student
vaild users = +student ##“+”和“@”表示用户组
systemctl restart smb
测试:
本地liu用户被限制登录,student用户可登录访问
管理用户是否可以查看(与可写不冲突):
编写配置文件:
vim /etc/samba/smb.conf
browseable = no
systemctl restart smb
测试:
更改前可查看共享目录,更改后不显示该共享目录,虽被隐藏但是不影响该目录的挂载。
共享目录添加管理员:
编写配置文件:
vim /etc/samba/smb.conf #编辑配置文件
admin users = student #设置student用户为该共享目录的管理员
systemctl restart smb #重新启动服务
测试:
共享目录中文件的所有者以及所属组与创建该共享目录的用户没有关系,只和使用的是哪一个登陆smb在该共享目录中创建的文件。
但是作为管理员,其所新建的文件所有者为root
用不是管理员的liu用户登录并创建共享文件
通过是管理员的student用户登录
- samba多用户挂载
启用客户端的samba的安全锁,限制没有通过samba认证的用户不能查看共享的文件
超级用户挂载之后,可以读写samba共享内容
普通用户需要经过samba认证才可以读写samba共享内容
现象:在客户端root身份下指定用户挂载后,会发现root用户可在/mnt/目录下读写;
切换到普通用户student,会发现依然可以读写/mnt/下的文件,虽然创建文件会警告,但还是仍能创建成功,且文件的属性是属于客户端用户liu的。
这就存在了很大的安全隐患,普通用户没有通过samba认证就能够看到samba的共享内容。
设置步骤:
在客户端root用户:
编写配置文件:
vim /root/smbpass
编辑如下:
username=student
password=123
chmod 600 /root/smbpass
yum install cifs-utils -y
若想恢复客户端普通用户的权限:
使客户端student用户通过认证:
cifscreds add -u student 172.25.254.184
若是认证密码错误,那么下一次就不能进行认证,需要清除认证记录:
cifscreds clearall
测试:
mount -o credentials=/root/smbpass,sec=ntlmssp,multiuser //172.25.254.184/HAHA /mnt/
永久挂载:
vim /etc/fstab
//172.25.254.184/HAHA /mnt cifs defaults,credentials=/root/smbpass,sec=ntlmssp,multiuser 0 0
重启后查看:
END