介绍
samba 是基于SMB协议(ServerMessage Block,信息服务块)的开源软件,samba也可以是SMB协议的商标。SMB是一种Linux、UNIX系统上可用于共享文件和打印机等资源的协议,这种协议是基于Client\Server型的协议,Client端可以通过SMB访问到Server(服务器)上的共享资源。当Windows是 Client,CentOS是服务器时,通过Samba就可以实现window访问Linux的资源,实现两个系统间的数据交互。
安装samba服务
yum install samba
管理samba服务
查看SMB服务状态:systemctl status smb
启动SMB服务:systemctl start smb
重启SMB服务:systemctl restart smb
设置开机自启:systemctl enable smb
关闭SMB服务:systemctl stop smb
用户登录访问
添加一个系统用户user1
useradd user1
passwd user1
添加一个smb用户
smbpasswd -a user1 # 设置密码,创建user1用户
smbpasswd -e user1 # 激活该用户
建一个共享文件 /share
mkdir /share
将这个文件的权限交给user1,因为你是用root创建的,这个文件的所有者是root
chown user1 /share
配置文件:/etc/samba/smb.conf
# 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
workgroup = Workgroup
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 = @printadmin root
force group = @printadmin
create mask = 0664
directory mask = 0775
[share]
comment = share #描述信息
path = /share #共享文件的路径
public = no #是否允许匿名访问
writable = yes #是否有写权限
valid users = user1 #允许访问的用户
使用testparm命令可以测试smb.conf配置是否正确。使用testparm –v命令可以详细的列出smb.conf支持的配置参数。
重启一下
systemctl restart smb
访问共享文件夹
\\192.168.135.157 #\\ + ip
net use * /del 清除windows里面所有smb缓存
匿名访问
创建共享文件夹,任何人都可以访问
mkdir /public
chown 777 /public
cd /public
touch a.txt
chmod -R 0755 /public
chown nobody:nobody /public #给匿名用户一个权限
chcon -t samba_share /share
setenforce 0
systemctl stop firewalld 关闭防火墙
修改smb.conf ,在global添加一句,在public修改为yes
[global]
# workgroup = SAMBA
workgroup = Workgroup
security = user # 设置为用户登陆
map to guest = Bad User #允许匿名登录,记得加上这一句,这是新版smb服务器的设置和旧版不一样
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw
[public]
comment = share #描述信息
path = /tmp #共享文件的路径
public = yes #是否允许匿名访问
writable = yes #是否有写权限
重启smb服务器
systemctl restart smb
访问
\\192.168.135.157\public
一下是配置文件的全部内容
[global]
workgroup = SAMBA
security = user
map to guest = Bad 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 = @printadmin root
force group = @printadmin
create mask = 0664
directory mask = 0775
[share]
comment = share
path = /share
public = no
writable = yes
valid users = user1
[public]
comment = public
path = /public
public = yes
writable = yes
guest ok = yes
browseable = yes
当访问public文件夹时不需要输入密码,当访问其他文件夹时需要输入密码
可以看看下面的文章,写的很详细
参考文章:https://blog.csdn.net/weixin_40806910/article/details/81917077