Centos配置samba
samba(windows和linux系统之间共享文件 )
功能:windows和linux系统之间共享文件 CIFS协议
环境:
server 192.168.100.11 desk1.uplooking.com
client 192.168.100.12 desk2.uplooking.com
端口:udp/137 udp/138 名称解析 tcp/139 通信会话 tcp/445 cifs
服务器
一、查看软件包是否安装
rpm -qa | grep samba
samba-common-4.4.4-9.el7.noarch 通用组件包
samba-common-tools-4.4.4-9.el7.x86_64 工具包
samba-4.4.4-9.el7.x86_64 主程序包
samba-client-4.4.4-9.el7.x86_64 客户端软件包 linux
yum install samba -y //安装软件
二、服务器端的配置文件
rpm -ql samba-common
/etc/samba/smb.conf //主配置文件
/etc/samba/smb.conf.example
vim /etc/samba/smb.conf
---------------------------------------参考↓---------------------------------------------
[global] //全局设置
workgroup = SAMBA //定义工作组
security = user //安全验证的设置
user :需要提供用户名和密码才能访问共享,验证使用的是本地服务器
share:匿名用户,不需要提供用户名和密码直接就能访问共享 //7已废弃
passdb backend = tdbsam //用户和密码存放的格式 /var/lib/samba/private/
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 //继承acl权限
权限控制
read only = Yes
write list = 用户名 @组名 可写列表
read only = No
read list = 用户名 @组名 只读列表
访问控制
限制ip
hosts allow = 192.168.1. //只允许网段192.168.1.访问
hosts deny = 192.168.2. //拒绝网段192.168.2.访问
限制用户
valid users = 用户 @组名 //只允许哪些用户访问
invalid users = 用户 @组名 //拒绝哪些用户访问
共享一个/share目录,共享名叫sharetest,匿名用户可写可浏览
服务器配置:
mkdir /share
chmod 777 /share
vim /etc/samba/smb.conf
[global]
workgroup = SAMBA
security = user
map to guest = bad user
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw
//阿里云 smb ports = 1315 1314 #很重要,貌似阿里云屏蔽了samba默认的端口
[sharetest] //共享名
comment = share test 123 //描述信息
path = /share //共享文件的路径
browseable = Yes //可浏览
guest ok = Yes //允许guest用户访问
read only = No //可写
testparm //测试配置语法
systemctl restart smb
systemctl restart nmb
三、Samba网络配置
阿里云上配置,最重要的是要记得配置相应的端口开启,不然外网是访问不了的
-
一方法是关闭防火墙
systemctl stop firewalld.service
setenforce 0 -
二方法是添加规则(推荐)
firewall-cmd --permanent --zone=public --add-service=samba
firewall-cmd --reload-A INPUT -m state –state NEW -m tcp -p tcp –dport 139 -j ACCEPT -A INPUT -m state –state NEW -m tcp -p tcp –dport 445 -j ACCEPT -A INPUT -m state –state NEW -m udp -p udp –dport 137 -j ACCEPT -A INPUT -m state –state NEW -m udp -p udp –dport 138 -j ACCEPT -A INPUT -p tcp –dport 22 -j ACCEPT -A INPUT -p tcp –dport 21 -j ACCEPT -A INPUT -p tcp –dport 80 -j ACCEPT -A INPUT -p tcp –dport 443 -j ACCEPT -A INPUT -p icmp –icmp-type 8 -j ACCEPT -A INPUT -m state –state RELATED,ESTABLISHED -j ACCEPT -P OUTPUT ACCEPT
-
端口转发
由于我使用的阿里云,阿里云的445端口被屏蔽了,即使你在阿里云端开放了该端口也无效果,所以需要开放其他端口,并在Windows端进行端口转发。
//Windows
netsh interface portproxy add v4tov4 listenaddress=127.0.0.1 listenport=445 connectaddress=你的服务器地址 connectport=你的端口例如1314
netsh interface portproxy show all #命令查看端口转发是否成功。
netsh interface portproxy delete v4tov4 listenaddress=127.0.0.1 listenport=445 #删除所有已经有的转发
- 关闭SELINUX
setenforce 0
四、添加用户登录(samba用户)
pdbedit -a username(这里要是你本机以有的用户如:root)
[root@iZuf6dnzy9ygt2sur8q2iuZ /]# pdbedit -a root
new password:
retype new password:
Unix username: root
NT username:
Account Flags: [U ]
User SID: S-1-5-21-6561631652-1627451568-1611045335-1000
Primary Group SID: S-1-5-21-6561631652-1627451568-1611045335-513
Full Name: root
Home Directory: \\aaaaaaaaa\root
之后会让你输入新建用户的密码
pdbedit -L 显示已存在的用户
添加samba用户提示 Failed to add entry for user.
这是因为没有加相应的系统账号,只需增加相应的系统账号就可以了
(samba用户名=系统账号)
测试本地挂载
mount -t cifs -o username=username,password=123456,port=1314 //ip/sharetest /挂载目录
windows客户端:
在地址栏输入:\服务器的ip地址
以后想直接访问共享--->在共享文件夹上右键-->映射为网络驱动器-->选择驱动器R:-->\服务器的ip地址\共享名-->完成
例: \ip\sharetest
测试:把windows的文件拷贝到共享目录 如可以拷贝表示成功
1.共享一个/smbtest目录,共享名叫test,samba服务器提供三个smb用户,分别是smb1~smb3,smb1和smb2用户可写,smba3只能读和浏览,并且只允许192.168.100.11访问