文章目录
- 一、SAMBA概念
-
- 1. 什么是SAMBA
- 2. SAMBA主要进程
- 3. SAMBA软件安装(服务器搭建)
- 4. smb配置文件
- 二、SAMBA使用案例
-
- 1. 环境准备
-
- 1)配置静态ip
- 2)关闭防火墙和SELinux
- 3)安装SAMBA
- 4)在服务端创建共享目录和文件
- 2. 修改配置文件
- 3. 创建用户
- 4. 启动nmb和smb服务
- 5. 测试基于Windows共享文件
-
- 解决挂载后目录不能写
- 6. 基于Linux或Linux共享文件
-
- 把SAMBA挂载到Linux系统(类似NFS)
- 三、FTP、NFS、SAMBA的区别
一、SAMBA概念
1. 什么是SAMBA
SMB(Server Message Block)协议实现文件共享,又称CIFS(Common Internet File System ) 是Windows和类Unix系统之间共享文件的协议
- 主要是客户端,支持多节点同时挂载并写入
- 主要用于Windows和Linux下面的文件共享、打印和共享
- 匿名与本地文件共享
- SAMBA也是一个C/S架构软件,Client主要是Windows
2. SAMBA主要进程
smbd
过程:控制共享目录和权限的发布,负责文件的传输TCP(139 445)nmbd
流程:用于名称分析netbios ; 基于NETBIOS协议获取计算机名称——>解析为相应IP实现信息通信的地址
NetBIOS是Network Basic Input/Output System(网络基本输入/输出系统)的缩写一般是指局域网通信的一套API
3. SAMBA软件安装(服务器搭建)
命令:yum -y install samba -y
查看相关软件包
[root@samba ~]# rpm -qa | grep ^samba samba-common-libs-4.10.16-19.el7_9.x86_64 samba-common-tools-4.10.16-19.el7_9.x86_64 samba-common-4.10.16-19.el7_9.noarch samba-client-libs-4.10.16-19.el7_9.x86_64 samba-libs-4.10.16-19.el7_9.x86_64 samba-4.10.16-19.el7_9.x86_64 [root@samba ~]#
4. smb配置文件
通过命令:vim /etc/samba/smb.conf
查看配置文件
[global] 全局选项 workgroup = SAMBA 定义samba服务器所在的工作组 security = user 认证模式:share匿名|user用户密码|server外部服务器用户密码 passdb backend = tdbsam 密码格式 load printers = yes 加载打印机 cups options = raw 打印机选项 [homes] 局部选项(共享名称) comment = Home Directories 描述 valid users = %S, %D%w%S 有效用户 browseable = No 隐藏共享名称 read only = No 是否只读 inherit acls = Yes 继承ACL writable = yes 可读可写 [printers] 共享名称 comment = All Printers 描述 path = /var/tmp 本地共享目录 printable = Yes 可打印 guest ok = no ——>(等价于) public = no 需要帐户和密码访问 writable = no ——>(等价于) read only =yes 不可写 browseable = No 隐藏 [print$] comment = Printer Drivers path = /var/lib/samba/drivers write list = @printadmin root force group = @printadmin create mask = 0664 directory mask = 0775
二、SAMBA使用案例
搭建一个SAMBA共享目录/服务samba/share,客户端使用user01/123通过windows或者Linux文件删除文件可以在目录中创建
1. 环境准备
1)配置静态ip
命令:vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE="Ethernet" BOOTPROTO="static" IPADDR=192.168.44.170 NETMASK=255.255.255.0 GATEWAY=192.168.44.2 DNS1=8.8.8.8 NAME="ens33" DEVICE="ens33" ONBOOT="yes"
2)关闭防火墙和SELinux
关闭防火墙: 命令:systemctl stop firewalld
开机不自启:systemctl disable firewalld
关闭SELinux: 命令:setenforce 0
开机不自启 vim /etc/selinux/config
SELINUX=disabled
4)在服务端创建一个共享目录并创建文件
命令:mkdir -p /samba/share
[root@samba share]# touch /samba/share/test.txt
[root@samba share]# echo "hello word" >> test.txt
[root@samba share]# ll
total 4
-rw-r--r--. 1 root root 11 Jul 18 16:18 test.txt
[root@samba share]#
2. 修改配置文件
命令:vim /etc/samba/smb.conf
[samba_share] 共享名称
comment = samba service 描述
path = /samba/share 本地的共享目录
guest ok = no 需要帐号和密码访问
writable = yes 可读可写
或者可以修改成 因为 guest ok = no 等价于 public = no
[samba_share]
path = /samba/share
public = no
writable = yes
3. 创建用户
创建一个test用户,然后添加到samba认证中,设置密码为123456
[root@samba ~]# useradd test
[root@samba ~]# smbpasswd -a test
New SMB password:
Retype new SMB password:
Added user test.
[root@samba ~]#
4. 启动nmb和smb服务
命令:systemctl start nmb
systemctl start smb
5. 测试基于Windows实现文件共享
打开控制面板:
点击程序
进入计算机
输入刚创建并加入到SAMBA数据库中的用户名和密密码 最后看到之前创建的共享目录里的文件
解决挂载后目录不可写
解决方案: 给用户添加写权限,或者用ACL单独给刚刚创建的test用户添加权限 命令:setfacl -m u:test:rwx /samba/share
6. 基于Linux或Linux实现文件共享
注意:samb_share
参数是配置文件里标签名 现在LInux上安装SAMBA客户端 命令:yum -y install samba-client
命令:smbclient -L 192.168.44.170 -U test
[root@samba ~]# smbclient -L 192.168.44.170 -U test
Enter SAMBA\test's password:
Sharename Type Comment
--------- ---- -------
print$ Disk Printer Drivers
samba_share Disk samba service
IPC$ IPC IPC Service (Samba 4.10.16)
test Disk Home Directories
Reconnecting with SMB1 for workgroup listing.
Server Comment
--------- -------
SAMBA Samba 4.10.16
Workgroup Master
--------- -------
SAMBA SAMBA
[root@samba ~]#
使用smbclient查看目录信息
命令:smbclient //192.168.44.170/samba_share -U test
通过help
命令查看命令使用和NFS类似
smb: \> help
? allinfo altname archive backup
blocksize cancel case_sensitive cd chmod
chown close del deltree dir
du echo exit get getfacl
geteas hardlink help history iosize
lcd link lock lowercase ls
l mask md mget mkdir
more mput newer notify open
posix posix_encrypt posix_open posix_mkdir posix_rmdir
posix_unlink posix_whoami print prompt put
pwd q queue quit readlink
rd recurse reget rename reput
rm rmdir showacls setea setmode
scopy stat symlink tar tarmode
timeout translate unlock volume vuid
wdel logon listconnect showconnect tcon
tdis tid utimes logoff ..
!
smb: \>
把SAMBA挂载到Linux系统(类似NFS)
先创建一个目录用来挂载:mkdir /temp
安装cifs:yum install cifs-utils -y
挂载命令:mount.cifs -o user=test,pass=123456 //192.168.44.170/samba_share /temp
访问权限
控制读写权限
writable = yes/no
readonly = yes/no
如果资源可写,但只允许某些用户可写,其他都是只读
write list = admin, root, @staff(用户组)
read list = mary, @students
控制访问对象
valid users = tom,mary,@itcast
invalid users = tom
注意:以上两个选项只能存在其中一个
网络访问控制:
hosts deny = 192.168.0. 拒绝某个网段
hosts allow = 192.168.0.254 允许某个IP
hosts deny = all 拒绝所有
hosts allow = 192.168.0. EXCEPT 192.168.0.254 允许某个网段,但拒绝某个单个IP
注意:deny和allow同时存在,allow优先
三、FTP、NFS、SAMBA的区别
- ftp 局域网和外网都可以
- nfs 局域网 挂载方式访问 mount.nfs 侧重于Linux与Linux之间
- samba 局域网 直接访问(smbclinet)挂载的方式mount.cifs 侧重于Windows与Linux之间