Linux中CIFS文件共享系统

samba文件共享
用 Internet 文件系统 (CIFS) 也称为服务器信是适用于MicrosoftWindows 服务器和客户端的标准文件和打印机共享系统信息块 (SMB)。
Samba 服务可用于将 Linux 文件系统作为 CIFS/SMB 网络文件共享进行共享 , 并将 Linux 打印机作为 CIFS/SMB 打印机共享进行共享。
实验要求:2台虚拟机
在进行实验之前先重置2台虚拟机

rht-vmctl reset desktop
rht-vmctl reset server

设置网卡IP

vim /etc/sysconfig/network-scripts/ifcfg-eth0

配置yum源

vim /etc/yum.repos.d/rhel_dvd.repo 

修改主机名
desktop虚拟机改为client.example.com

hostnamectl set-hostname client.example.com

server虚拟机改为server.example.com

hostnamectl set-hostname server.example.com

一、samba服务
服务端:
安装samba服务
Samba-common – Samba 的支持文件
Samba-client – 客户端应用程序
Samba – 服务器应用程序

[root@server ~]# yum install samba samba-client.x86_64 samba-common -y

开启samba服务

[root@server ~]# systemctl start smb

关闭防火墙

[root@server ~]# systemctl stop firewalld

查看samba服务端口:445、139

[root@server ~]# netstat -antlupe | grep smb

这里写图片描述

客户端:
安装samba客户端服务

扫描二维码关注公众号,回复: 1523340 查看本文章
[root@client ~]# yum install samba-client -y

匿名访问服务端samba

[root@client ~]# smbclient -L //172.25.254.208    ##-L 列出所有
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
    ---------            -------

二、samba用户
如果您没有Samba密码服务器,则必须在本地计算机上创建身份验证数据。使用smbpasswd创建Samba账户和密码。
服务端:
建立用户(smb 用户必须是本地存在的用户)
建立student用户

[root@server ~]# id student              ##查看用户是否存在
[root@server ~]# smbpasswd -a student    ##设置客户端使用student用户登陆samba的密码
New SMB password:                        ##输入新建密码
Retype new SMB password:                 ##重复输入新密码
Added user student.

这里写图片描述
建立westos用户

[root@server ~]# useradd westos
[root@server ~]# smbpasswd -a westos

列出samba用户

[root@server ~]# pdbedit -L              
student:1000:Student User
westos:1001:

删除student用户

[root@server ~]# pdbedit -x student  

这里写图片描述

客户端:
使用student用户连接服务端samba查看所有samba信息

[root@client ~]# smbclient -L //172.25.254.208 -U student
Enter student's password:                              ##输入student用户密码

这里写图片描述

[root@client ~]# smbclient //172.25.254.208/student -U student
ls
NT_STATUS_ACCESS_DENIED listing \*  ##由于服务端selinux的设置,默认情况访问拒绝

这里写图片描述

服务端:
查看samba的selinux设置

[root@server ~]# getsebool -a | grep samba
samba_enable_home_dirs --> off

这里写图片描述
将selinux的相关samba服务打开

[root@server ~]# setsebool -P samba_enable_home_dirs on  ##布尔值允许本地 Linux 主目录作为 CIFS 文件共享导出至其他系统

客户端:
使用student用户连接服务端samba(可以查看)

[root@client ~]# smbclient //172.25.254.208/student -U student
smb: \> ls

这里写图片描述

三、samba客户端的使用
1、上传文件
客户端:
只有进到目录才能上传该目录的文件

[root@client ~]# cd /etc/
[root@client etc]# smbclient //172.25.254.208/student -U student
smb: \> !ls              ##列出本地主机文件
smb: \> put passwd

这里写图片描述
这里写图片描述
不进到目录无法上传该目录文件

smb: \> put /bin/ls
NT_STATUS_OBJECT_PATH_NOT_FOUND opening remote file \/bin/ls  
smb: \> quit
[root@client etc]# cd /bin
[root@client bin]# smbclient //172.25.254.208/student -U student
smb: \> put ls

这里写图片描述

服务端:
在用户目录查看客户端上传的文件

[root@server ~]# cd /home/student/
[root@server student]# ls

这里写图片描述

2、samba挂载
客户端:
挂载到/mnt

[root@client ~]# mount //172.25.254.208/student /mnt -o username=student,password=123

查看挂载

[root@client ~]# df
//172.25.254.208/student  10473900 3153352   7320548  31% /mnt

这里写图片描述
进到挂载目录中建立文件

[root@client ~]# cd /mnt
[root@client mnt]# touch file{1..3}

服务端:
在用户目录可以看到客户端在挂载目录建立的文件

[root@client ~]# cd /home/student
[root@server student]# ls

这里写图片描述

3、samba开机挂载
客户端:
取消挂载

[root@client mnt]# cd 
[root@client ~]# umount /mnt

设置开机挂载
方法一(不推荐使用该方法,因为重启时必须还要开启服务端,否则客户端系统起不来):
编辑开机挂载文件

[root@client ~]# vim /etc/fstab
//172.25.254.208/student /mnt cifs   defaults,username=student,password=123 0 0

这里写图片描述
重启查看是否挂载

[root@client ~]# reboot
[root@client ~]# df

方法二:
编辑开机挂载文件

[root@client ~]# vim /etc/rc.d/rc.local
mount //172.25.254.208/student /mnt -o username=student,password=123

这里写图片描述
给予文件权限

[root@client ~]# chmod +x /etc/rc.d/rc.local

重启查看是否挂载

[root@client ~]# reboot

这里写图片描述

四、修改samba工作组
服务端:
编辑samba配置文件、重启配置文件

[root@server student]# vim /etc/samba/smb.conf 
 89         workgroup = WESTOS      ##修改工作组
[root@server student]# systemctl restart smb.service 

这里写图片描述

客户端:
匿名连接客户端:

[root@client ~]# smbclient -L //172.25.254.208
Domain=[WESTOS] OS=[Unix] Server=[Samba 4.1.1]  ##成功修改工作组

这里写图片描述

五、samba黑、白名单
1、黑名单
编辑samba配置文件
服务端:

[root@server student]# vim /etc/samba/smb.conf 
 98        hosts deny = 172.25.254.108   ##禁止108主机连接samba
[root@server student]# systemctl restart smb.service 

这里写图片描述
108客户端:
无法连接

[root@client ~]# smbclient -L //172.25.254.208
Enter root's password: 
protocol negotiation failed: NT_STATUS_INVALID_NETWORK_RESPONSE ##无法连接

61客户端:
可以连接

[kiosk@foundation61 Desktop]$ smbclient -L //172.25.254.208 

这里写图片描述

2、白名单
编辑samba配置文件
服务端:

[root@server student]# vim /etc/samba/smb.conf 
 98        hosts allow = 172.25.254.108  ##只允许108主机连接samba
[root@server student]# systemctl restart smb.service

108客户端:
可以连接

[root@client ~]# smbclient -L //172.25.254.208

61客户端:
无法连接

[kiosk@foundation61 Desktop]$ smbclient -L //172.25.254.208
Enter kiosk's password: 
protocol negotiation failed: NT_STATUS_INVALID_NETWORK_RESPONSE

六、samba文件共享
1、共享自己建立的目录
服务端:
新建根目录

[root@server ~]# mkdir /westos

更改安全上下文

[root@server ~]# semanage fcontext -a -t samba_share_t '/westos(/.*)?'
samba_share_t    ##smb 共享目录的 selinux 安全上下文

查看安全上下文

[root@server ~]# semanage fcontext -l | grep /westos
/westos(/.*)?           all files          system_u:object_r:samba_share_t:s0 

刷新安全上下文

[root@server ~]# restorecon -FvvR /westos
restorecon reset /westos context unconfined_u:object_r:default_t:s0->system_u:object_r:samba_share_t:s0

编辑主配置文件

[root@server ~]# vim /etc/samba/smb.conf 
        [DIR]
        comment = westos dir
        path = /westos
[root@server ~]# systemctl restart smb.service 

这里写图片描述
客户端:

[root@client ~]# smbclient //172.25.254.208/DIR -U student
smb: \> ls

这里写图片描述

2、共享系统目录
服务端:
建立文件

[root@server ~]# touch /mnt/file{1..3}

编辑主配置文件

[root@server ~]# vim /etc/samba/smb.conf 
        [mnt]
        comment = /mnt dir
        path = /mnt
[root@server ~]# systemctl restart smb.service 

这里写图片描述
客户端:

[root@client ~]# smbclient //172.25.254.208/mnt -U student
smb: \> ls

这里写图片描述
服务端:
为了使客户端永久可见服务端建立的文件,需要更改布尔值:

[root@server ~]# setsebool -P samba_export_all_ro on  ##共享系统目录时要打开

客户端:

[root@client ~]# smbclient //172.25.254.208/mnt -U student
smb: \> ls

这里写图片描述

七、samba主配置文件的参数

321         [DIR]
322         comment = westos dir
323         path = /westos
324         browseable = yes         ##是否允许浏览
325         writable = yes           ##是否可写
326         write list = @student    ##指定哪个用户可写;@student表示指定student组可写
327         admin users = westos     ##指定超级用户是westos。对于DIR这个共享,westos就是超级用户

实验:

[root@server ~]# vim /etc/samba/smb.conf 
[root@server ~]# systemctl restart smb.service 

1、是否允许浏览
服务端:
修改参数

[DIR]
browseable = yes|no   ##是否允许浏览

客户端:
查看目录是否存在

[root@client ~]# smbclient -L //172.25.254.208/ -U student

这里写图片描述

2、是否可写
服务端:
修改参数

[DIR]
#browseable = yes
writable = yes         ##可写

客户端:
挂载

[root@client ~]# mount //172.25.254.208/DIR /mnt -o username=student,password=123

无法建立文件:权限限制

touch /mnt/file
touch: cannot touch ‘file’: Permission denied

服务端:
给予权限

[root@server ~]# chmod 777 /westos/

客户端:
能够建立文件

[root@client mnt]# touch file1

参数改为no时不可以建立文件
这里写图片描述

3、指定student用户可写
服务端:
修改参数

[DIR]
#browseable = yes
#writable = yes
write list = student   ##student用户可写

客户端:
student用户挂载(可写)

[root@client ~]# mount //172.25.254.208/DIR /mnt -o username=student,password=123
[root@client ~]# touch /mnt/file2

westos用户挂载(不可写)

[root@client ~]# mount //172.25.254.208/DIR /mnt -o username=westos,password=123
[root@client ~]# touch /mnt/file3
touch: cannot touch ‘/mnt/file3’: Permission denied

这里写图片描述

4、指定student组可写
服务端:
修改参数

[DIR]
#browseable = yes
#writable = yes
write list = student   ##student用户可写
write list = @student  ##指定student组可写

客户端:
将westos用户的组改为student

[root@server ~]# usermod -G student westos
[root@server ~]# id westos
uid=1001(westos) gid=1001(westos) groups=1001(westos),1000(student)

服务端:
原本不可写的westos用户组改为student后可写

[root@client ~]# mount //172.25.254.208/DIR /mnt -o username=westos,password=123
[root@client ~]# touch /mnt/file3

这里写图片描述

5、指定westos用户为root用户
服务端:
修改参数

[DIR]
#browseable = yes
 writable = yes
#write list = student
#write list = @student
 admin users = westos    ##对于DIR这个共享,指定超级用户是westos

客户端:
挂载

[root@client ~]# mount //172.25.254.208/DIR /mnt -o username=westos,password=123
touch /mnt/file4

查看文件信息

[root@client ~]# ll /mnt
-rw-r--r-- 1 root       1001 0 Jun  5 07:21 file4

这里写图片描述

八、samba多用户挂载
客户端:
安装服务

[root@client ~]# yum install cifs-utils.x86_64 -y

编辑加密文件

[root@client ~]# vim /root/smbpass
username=student
password=123

这里写图片描述
设置samba多用户挂载加密

[root@client ~]# mount -o credentials=/root/smbpass,sec=ntlmssp,multiuser //172.25.254.208/DIR /mnt
[root@client ~]# ls /mnt
file  file1  file2  file4 

使用其他用户登陆无法查看

[root@client ~]# useradd test
[root@client ~]# su - test
[test@client ~]$ ls /mnt
ls: cannot access /mnt: Permission denied

添加用户认证

[test@client ~]$ cifscreds add -u westos 172.25.254.208
[test@client ~]$ ls /mnt
file  file1  file2  file4 

九、匿名用户登陆与挂载
一般来说,匿名用户不能登陆。如何设置匿名用户登陆:
服务端:
编辑主配置文件:

[root@server ~]# vim /etc/samba/smb.conf 
125         map to guest = bad user
329         guest ok = yes
[root@server ~]# systemctl restart smb.service 

这里写图片描述
这里写图片描述
客户端:
匿名用户登陆

[test@client ~]$ smbclient //172.25.254.208/DIR

这里写图片描述
匿名用户免密挂载

[root@client mnt]# mount //172.25.254.208/DIR /mnt -o username=guest,password=""

这里写图片描述

猜你喜欢

转载自blog.csdn.net/weixin_41927237/article/details/80586617