CentOS7搭建Samba共享服务器指南
一、服务部署
1.环境准备
一台centos7的虚拟机,网卡IP地址为192.168.4.215。


2.安装samba
yum install -y samba


安装好后使用rpm -qa | grep samba查询,版本是4.7.1

3.编辑配置文件
配置文件是/etc/samba/smb.conf
这个配置文件中定义了全局设置([global])和共享定义
配置文件的开始注释说

更详细的配置文件请参阅 smb.conf.example 或
查阅 smb.conf 手册页。
修改配置后,请运行 "testparm" 以验证配置是否正确。
字段介绍
(1).全局配置
全局配置可以设置这些配置项
|
workgroup |
定义Samba服务器所在的工作组。如果网络中没有特定的工作组要求,通常使用默认的WORKGROUP即可。 |
|
netbios name |
在网络邻居中显示的名称。不超过15个字符 |
|
server string |
在网络邻居中显示的描述文本 |
|
security |
定义安全模式。可选user(用户级安全,指需要用户名密码),domain(域成员模式),ads(Active Directory域模式) |
|
passdb backend |
选择密码存储的后端。可选tdbsam(TDB数据库,适合小型网络),ldapsam:(LDAP后端,适合大型网络),smbpasswd(旧式文本文件) |
|
max log size |
单个日志文件最大KB数 |
|
log file |
指定日志存放位置。一般会命名为/var/log/samba/log.%m,这里的%m指会为每个客户端创建独立日志 |
|
map to guest |
设定用户认证失败时的处理方式。可选bad user(用户名不存在时映射为guest),bad password(密码错误时映射为guest),never(从不映射),always(总是映射为guest) |
|
guest account |
指定guest用户对应的系统账户 |
|
interfaces |
指定监听的网络接口 |
|
smb ports |
指定监听的网络端口 |
|
max connections |
设置最大连接数 |
|
hosts allow |
设置允许访问的主机(如“192.168.1. 127. ” ) |
|
hosts deny |
设置拒绝访问的主机 |
|
create mask |
控制新建文件的最大权限,与客户端请求权限做与运算 |
|
directory mask |
控制新建目录的最大权限 |
|
force create mode |
强制设置新建文件的某些权限位,会与最终权限做"或"运算。优先级比create mask高 |
|
force directory mode |
强制设置新建目录的某些权限位。优先级比directory mask高 |
(2).共享定义
|
comment |
显示给用户的描述信息 |
|
path |
服务器上共享目录的绝对路径 |
|
browseable |
是否在网络邻居中显示此共享(yes/no) |
|
guest ok/public |
是否允许访客访问(yes/no) |
|
guest only |
是否只允许访客访问(yes/no) |
|
valid users |
允许访问的用户/组列表。表示组名时,须在组名前加@ |
|
invalid users |
禁止访问的用户/组列表 |
|
read list |
只有读取权限的用户 |
|
write list |
有写入权限的用户 |
|
admin users |
有完全控制权限的用户 |
|
read only |
是否只读(yes/no) |
|
writable/write ok |
是否可写(yes/no) |
|
hosts allow |
设置允许访问的主机(如“192.168.1. 127. ” ) |
|
hosts deny |
设置拒绝访问的主机 |
配置内容
按照上述的字段名,可以分出两种类型
(1).共享用户访问
vim /etc/samba/smb.conf
|
[global] workgroup = SAMBA security = user passdb backend = tdbsam
netbios name = ZKSERVER server string = Samba Server
[single_user] comment = config for single_user xthy1 path = /samba/share valid users = xthy1 writable = yes browseable = yes create mask = 0644 directory mask = 0755
|
(2).匿名用户访问
vim /etc/samba/smb.conf
|
[global] workgroup = SAMBA security = user map to guest = bad user guest account = nobody passdb backend = tdbsam netbios name = zkserver server string = Samba Server
[anonymous] comment = Anonymous File Share path = /samba/anonymous writable = yes browseable = yes guest ok = yes create mask = 0644 directory mask = 0755 |
在4.0版本前可以指定security为share实现匿名用户访问,后因为安全问题被废弃。现在使用用户名不对就映射为访客的方式实现。
这里使用共享用户名的方案。修改好后,使用testparm检查。
出现以下的信息即是成功,否则有语法错误
|
Load smb config files from /etc/samba/smb.conf rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384) Processing section "[temp]" Processing section "[anonymous]" Loaded services file OK. Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
|
4.创建用户
如果确定使用共享用户访问,则这里需要创建相应的用户
创建用户一个linux用户(普通用户或是系统用户都行),并设置密码
useradd -M -s /sbin/nologin xthy1
echo "123456" | passwd xthy1 --stdin

创建Samba用户
smbpasswd -a xthy1 #添加用户,会提示设置samba的密码(可以不和用户密码一致)
smbpasswd -e xthy1 #启动用户

5. 创建目录并修改权限
在共享目录需要存在且修改权限
mkdir -p /samba/share
chmod 777 /samba/share
chown sambauser:sambauser /samba/share

6.配置selinux
为了防止由selinux导致的失败,需要进行下面的设置
1.关闭selinux
setenforce 0
2.为共享目录设置
chcon -Rt samba_share_t /samba/
(具体的解决方案可以参考/etc/samba/smb.conf.example的开始部分)
(可能需要去下载coreutils包)
7.放行服务
我们需要配置防火墙
由于samba涉及的端口较多,这里使用指定服务
firewall-cmd --permanent --add-service=samba
firewall-cmd --reload

8.启动服务
systemctl restart smb nmb

8.真机访问
在windows上win+R 输入ip地址,我这里是
92.168.4.215

会要求输入密码

(不知道怎么了,没点也会跳一个用户名或密码不正确的红字)
成功输入密码后,会进入到这样的页面

可以尝试将文件复制进去

这样samba文件共享就部署完毕了
二、排查错误
1.使用testparm时出错

检查语法是否有误
2.win+r 输入ip地址时长时间无反应,然后报错

(1).检查网络,需能互相ping通
(2).检查防火墙
3.在进入共享文件夹时

进入文件夹发现无法进入

(1).可能没权限设置有误
(2).可能selinux设置有误
三、其他
清除凭据
方法1.控制面板,点击用户账户

凭据管理器


方法2.打开powershel,输入
net use
查看,再输入
net use 92.168.4.215你要删除的 /delete
删除










