Linux——搭建Samba(CIFS)服务器
一、Samba的基本概念
Samba服务:是提供基于Linux和Windows的共享文件服务,服务端和客户端都可以是Linux或Windows操作系统。并且可以基于特定的用户访问,功能比NFS更强大。(cifs格式:Samba默认的文件系统类型)
Samba与ftp和nfs的区别:
- ftp服务:也是基于Linux和Windows共享文件的服务,但是不安全,因为ftp可以匿名访问,匿名用户可以获取读写权限,所以不常用
- nfs服务:只能做Linux的共享文件服务,服务端和客户端都只能是Linux操作系统
samba的服务名 | 对应端口号 | 作用 |
---|---|---|
smbd | 139 | 提供文件的共享访问 |
nmbd | 445 | 提供基于域名的访问 |
二、Samba服务搭建步骤:
准备:配置网络、yum源(client相同)
点击查看代码
# 1、更改主机名:
[root@localhost ~]# hostnamectl set-hostname server
[root@localhost ~]# bash
[root@server ~]#
# 2、配置网络
# (1)虚拟交换机配置为192.168.100.0网段,网络适配器选择仅主机模式;
# (2)编辑网络配置文件:
[root@server ~]# cd /etc/sysconfig/network-scripts/
[root@server network-scripts]# vim ifcfg-ens33
#需要修改的参数为:
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.100.10
PREFIX=24
# (3)重启网络服务:
[root@server network-scripts]# systemctl restart network
# 3、配置yum源
# (1)先进入虚拟机设置,把系统镜像连接到虚拟机的光驱上;
# (2)挂载光驱里的镜像:
[root@server ~]# mount /dev/cdrom /media/
mount: /dev/sr0 is write-protected, mounting read-only
# (3)修改yum源配置文件:
[root@server ~]# cd /etc/yum.repos.d/
[root@server yum.repos.d]# ls
[root@server yum.repos.d]# vim local.repo
[rhel]
name=rhel
baseurl=file:///media
enabled=1
gpgcheck=0
# (4)清空yum源缓存并检索yum源
[root@server yum.repos.d]# yum clean all
[root@server yum.repos.d]# yum repolist
Server端配置步骤:
1、安装Samba的所有软件包
[root@server ~]# yum -y install samba*
2、创建共享文件夹及标记文件
[root@server ~]# mkdir /opt/samba
[root@server ~]# cd /opt/samba
[root@server samba]# touch flag
[root@server samba]# ls
flag
3、修改共享目录的权限
[root@server samba]# chmod -R o+w /opt/samba
4、打开Samba的示例文件
[root@server samba]# vim /etc/samba/smb.conf.example
# 克隆会话配置selinux
[root@server samba]# setsebool -P samba_domain_controller on
[root@server samba]# setsebool -P samba_enable_home_dirs on
[root@server samba]# chcon -t samba_share_t /opt/samba/ #Samba的共享目录
[root@server samba]# setsebool -P samba_export_all_rw on
5、编辑Samba的主配置文件
[root@server opt]# vim /etc/samba/smb.conf
加入:
[wangzhigang]
comment = wangzhigang directories #对共享目录的注释、说明信息
path = /opt/samba #Samba的共享目录
interfaces = 192.168.100.10/24 #提供服务的主机
hosts allow = 192.168.100. #允许访问的主机或者网段
browseable = yes #该共享目录对客户机是否可见
valid users = luna,tom #可访问的用户名(只读)
write list = luna #具有写权限的用户
点击查看详情
# See smb.conf.example for a more detailed config file or
# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it.
[global]
workgroup = SAMBA
security = user
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw
[homes]
comment = Home Directories
valid users = %S, %D%w%S
browseable = No
read only = No
inherit acls = Yes
[printers]
comment = All Printers
path = /var/tmp
printable = Yes
create mask = 0600
browseable = No
[print$]
comment = Printer Drivers
path = /var/lib/samba/drivers
write list = root
create mask = 0664
directory mask = 0775
[wangzhigang]
comment = wangzhigang directories
path = /opt/samba
interfaces = 192.168.100.10/24
hosts allow = 192.168.100.
browseable = yes
valid users = luna,tom
write list = luna
smb.conf文件的配置内容的含义:
[global]:全局设置
[homes]:用户目录共享设置
[printers]:打印机共享设置
[wangzhigang]:自定义名称的共享目录设置
workgroup:所在工作组名称
security:安全级别,可用值为:share、user、server、domain
passwd backend:设置共享账户文件的类型
6、检测Samba配置文件格式是否正确
[root@server ~]# testparm
# 回车之后显示出部分内容
7、创建Samba用户(前提:必须是系统存在的用户)
[root@server ~]# useradd luna #先创建系统用户
[root@server ~]# useradd tom
[root@server ~]# passwd luna #设置系统用户密码
[root@server ~]# passwd tom
[root@server ~]# smbpasswd -a luna #再创建为Samba用户,同时设置samba密码
[root@server ~]# smbpasswd -a tom
8、查看所有Samba用户
[root@server ~]# pdbedit –L
9、启动samba服务并设置为开机自启
[root@server ~]# systemctl restart smb
[root@server ~]# systemctl restart nmb
[root@server ~]# systemctl enable smb
[root@server ~]# systemctl enable nmb
10、查看端口(139,445)启动情况(如果命令不可用,需要安装net-tools包)
[root@server ~]# netstat -pant
11、关闭防火墙
[root@server ~]# firewall-cmd --permanent --add-service=samba
success
[root@server ~]# firewall-cmd --reload
success
[root@server ~]# firewall-cmd --list-all
Client端配置步骤:
1、Windows作Client:
访问:\192.168.100.10,然后输入用户和密码即可访问
注意(CIFS特点):windows会自动记录上次访问的用户,所以第一次访问的用户,下一次仍旧默认使用该用户访问
解决用户切换的方法:进入cmd,输入net use * /del命令,等待若干分钟后,即可切换其他用户登录Samba服务器
2、Linux作Client:
1)单用户访问:
方法一:使用Samba的Linux客户端软件访问
# 安装客户端软件包
[root@client ~]# yum -y install samba-client
# 使用tom访问
[root@client ~]# smbclient -U tom //192.168.100.10/wangzhigang
Enter tom's password:
Domain=[SAMBA] OS=[Windows 6.1] Server=[Samba 4.4.4]
smb: \> ls
. D 0 Sun Dec 19 16:44:58 2021
.. D 0 Sun Dec 19 14:12:28 2021
flag N 0 Sun Dec 19 14:12:53 2021
# 测试tom写权限(不可写)
smb: \> touch abc
touch: command not found
smb: \> ls
smb: \>
smb: \> quit
方法二:使用挂载方式访问
# 以tom用户挂载到/mnt
[root@client ~]# mount -t cifs -o username=tom,password=123456 //192.168.100.10/wangzhigang /mnt
# 查看是否访问到,并测试tom写权限(不可写)
[root@client ~]# cd /mnt
[root@client mnt]# ls
flag
[root@client mnt]# touch abc
touch: cannot touch ‘abc’: Permission denied
[root@client mnt]#
2)多用户访问:
# 安装软件包
[root@client mnt]# yum -y install samba-client cifs-utils
# 取消上面/mnt的挂载
[root@client mnt]# cd ~
[root@client ~]# umount /mnt/
[root@client ~]# cd /mnt/
[root@client mnt]# ls
# 创建/mnt/multi为挂载目录
[root@client mnt]# mkdir multi
[root@client mnt]# ls
multi
# 编辑永久挂载的配置文件(先使用tom获取读权限)
[root@client ~]# vim /etc/fstab
于末行添加://192.168.100.10/wangzhigang /mnt/multi cifs username=tom,password=000000,multiuser,sec=ntlmssp 0 0
[root@client ~]# mount -a
# 查看是否访问到,并测试tom写权限(不可写)
[root@client ~]# cd /mnt/multi
[root@client multi]# ls
flag
[root@client multi]# touch abc
touch: cannot touch ‘abc’: Permission denied
# 创建luna用户,并切换为luna
[root@client multi]# cd
[root@client ~]# useradd luna
[root@client ~]# su - luna
# 使用luna登录并临时获取写权限
[luna@client ~]$ cifscreds add -u luna 192.168.100.10
Password:
# 查看是否访问到,并测试写权限(创建成功即获取写权限)
[luna@client ~]$ cd /mnt/multi/
[luna@client multi]$ ls
flag
[luna@client multi]$ touch abc
[luna@client multi]$ ls
abc flag
声明:未经许可,不得转载