基于linux下的cifs文件系统
###################1.cifs简介##################################################
CIFS(Common Internet File System)
通用网络文件系统
CIFS是针对Microsoft Windows操作系统的本地网络文件系统,linux系统可以挂载和访问CIFS文件共享,如同常见的网络文件系统一样。然而,由于CIFS是基于NTFS文件系统权限模型及其自身的身份验证系统来构建的,因而CIFS协议中的所有内容并不能很好的映射到linux中。
在windows主机之间进行网络文件共享,通过使用微软公司自己的cifs服务实现。
1.CIFS系统:Internet文件共享系统,也称服务器信;适用于MicrosoftWindows服务器和客户端的标准文件和打印机的共享系统息块(SMB)
2.Samba服务:用于将linux文件系统作为CIFS/SMB网络文件进行共享,并将linux打印机作为CIFS/SMB打印机进行共享
######网络共享方式cifs,主要用于windows
#######################2.samba的基本配置和登陆访问 ######################################
环境:重置两台虚拟机
改IP,改主机名称,改yum源,
desktop————————名字:client ip:104 作为 客户端
server—————————名字:server ip:204 作为服务端
服务端:yum search samba
yum install samba samba-client samba-common -y 安装(common 提供文件)
systemctl start smb 打开smb服务
syatemctl enable smb 开机自开启
systemctl stop firewalld 关闭火墙
systemctl disable firewalld 开机自关闭
netstat -antlpue | grep smb 查看smb的端口
smb服务的端口为:139和445.可用netstat -antlupe | grep smb查看
smb无用户,客户端smbclient -L //172.25.254.204可直接进入,
[[email protected] ~]# systemctl start smb
[[email protected] ~]# smbclient -L //172.25.254.108
Enter root's password:
Anonymous login successful
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]
Sharename Type Comment
--------- ---- -------
IPC$ IPC IPC Service (Samba Server Version 4.1.1)
Anonymous login successful
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]
Server Comment
--------- -------
Workgroup Master
--------- -------
如何添加smb用户:
smb的存在在真实用户基础之上,所有的smb用户必须是本地存在的用户,不然无法添加。
smbpasswd -a student ---------添加student用户
pdbedit -L ---------- 查看所有smb用户
pdbedit -x student ----------- 删除指定smb用户
在服务端开启服务:getsebool -a | grep samba
setsebool -P samba_enable_home_dirs on -P表示永久打开
客户端:yum install samba-client -y
smbclient -L //172.25.254.204 -----------匿名用户查看
smbclient -L //172.25.254.204 -U student ---------看看student用户(指定用户登陆,有密码,自己设置的)
smbclient //172.25.254.204/student -U student -------(指定用户查看指定文件)
在客户端被拒绝了,这是就要在服务端开启smb服务的开关。
########永久挂载#############
在客户端:
pwd
ls
cd /etc/
用户登陆:smbclient //172.25.254.204/student -U student
smb: \> !ls !ls显示/etc/下的所有文件
get passwd 在客户端上传
mount //172.25.254.204/student /mnt/ -o username=student,password=redhat 挂载
df 查看
如何永久挂载:
法一:vim /etc/fstab
//172.25.254.204/student /mnt cifs defaults,username=student,password=redhat 0 0
mount -a
df 已经挂载
解除挂载,reboot后,再df查看
法二:vim /etc/rc.d/rc.local
mount -o username=student,password=redhat //172.25.254.204/student /mnt ——————最佳写法
注意:/etc/rc.d/rc.local为一个脚本文件,此文件起始有#!/bin/bash
chmod +x /etc/rc.d/rc.local
sh /etc/rc.d/rc.local -----执行这个脚本文件
df
umount /mnt/
reboot后,再df查看
在服务端:
查看是否上传成功:cd /home/student ----上传的文件存在于这个目录
ls 查看到passwd
########更改组名#######
在客户端通过smbclient -L //172.25.254.204 可以看到组名,那么如何更改呢?
查找配置文件:rpm -qc samba-common
vim /etc/samba/smb.conf
更改89行:workgroup=WESTOS ____改组名
通过smbclient -L //172.25.254.200再次查看更改后的组名。
#######黑白名单######
vim /etc/samba/smb.conf
更改(添加)98行:hosts allow=172.25.254.100 ————白名单
或者更改(添加):hosts deny=172.24.254.100 --------黑名单
########目录共享######
(1)不存在的目录
服务端:
mkdir /linux/
semanage fcontext -a -t samba_share_t 'linux(/.*)?' -----修改安全上下文
seamanage fcontext -l | grep /linux
restorecon -FvvR /linux/ ------刷新安全上下文
vim /etc/samba/smb.conf
编写:321 [DIR]
322 comment=linux dir
323 path=/linux
systemctl restart smb.service
客户端:smbclient -L //172.25.254.204/DIR ——————可以看到DIR目录
smbclient //172.25.254.204/DIR -U student ————登陆
(2)存在的目录 注意:不能使用修改安全上下文的方式(修改之后系统的其他服务不能访问)
服务端:vim /etc/samba/smb.conf
再之前基础添加:
[mnt]
comment=/mnt dir
path=/mnt
:wq
systemctl restart smb.service
touch /mnt/file{1..5}
客户端在setenforce 0 可以看到文件file{1..5】
setenforce 1 不可以看到file{1..5}
可以在服务端永久打开服务:setsebool -P samba_export_all_ro on
客户端再次查看可以有file{1..5}
######smb用户的可写权限 ########
服务端:
vim /etc/samba/smb.conf
目录下添加:browseable=yes ###是否显示共享目录
systemctl restart smb.service
vim /etc/samba/smb.conf
添加:writable=yes ###所有用户具备权限
可不用重启服务
chmod 777 /linux/(不安全)
vim /etc/samba/smb.conf
添加: write list=+/@student ----student用户组可写
systemctl restart smb.service
vim /etc/samba/smb.conf
添加:admin users=westos ——————westos用户可在此目录以root用户权限
systemctl restart smb.service
#######smb的多用户挂载###
在客户端进行
yum install cifs-utils -y
man mount.cifs ---------查看如何使用
vim /root/smbpass ——————编写用于认证的用户和密码
写入:username=student
password=redhat
mount -o credentials=/root/smbpass,sec=ntlmssp,multiuser //172.25.254.204/DIR /mnt
----sec是认证方式,multiuser是多用户
cd /mnt/
ls
su - test
cifscreds add -u westos 172.25.254.204 test用户不能直接认证,通过westos用户在此目录中的超级用户身份进行认证
若输入密码错误,不能进行认证,因为内存中已经有了一个错误认证,要清除这个认证
cifscreds clearall
再cifscreds add -u westos 172.25.254.204重新认证
认证正确后,可touch /mnt/file5
然后:ll /mnt/
会看到新建文件所有人为root(因为用户认证的westos用户在此目录具有root身份)
所有组为用户自身test;
df查看已经挂载完成
######匿名用户挂载#####
在服务端:
vim /etc/samba/smb.conf
写入:328 guest ok=yes
125 map to guest=bad user ##匿名用户映射为guest
:wq
在客户端:
mount //172.25.254.204/DIR /mnt -o username=guest,password=""
df 可查看通过匿名用户已成功挂载