SAMBA的配置及故障排除
- SAMBA
-
- 功能:
- 特点:
- 配置文件路径:
- SAMBA服务分类
- 端口和协议
- 安装及配置
-
-
- 设置单独的目录指定某个用户访问
- 生产环境配置
-
- 部署应用
-
- 构建lvm:
- 挂在分区
- 配置samba:
- 添加samba用户,并将家目录设置为要共享的文件夹
- 设置目录访问权限
- 维护:
- 匿名访问(基本不用)
-
- 故障排除
SAMBA
功能:
实现linux和windows之间跨平台共享的工具,实现局域网内的共享,公司内网的更新和备份
共享服务器。windows共享。
特点:
不需要下载文件,可以直接在服务器上编辑文件
配置文件路径:
vim /etc/samba/smb.conf
SAMBA服务分类
匿名访问:
用户名和密码访问
设置单独的目录指定某个用户访问
端口和协议
TCP 139
TCP 445
安装及配置
(安装前检查防火墙,selinux ,setenforce 0 是否关闭)
**安装服务端和客户端:**yum install samba samba-client samba-common -y
samba-common 包含一些命令
服务器端 创建需要访问的文件夹(不同部门创建不同的文件夹)
设置单独的目录指定某个用户访问
创建两个共享目录
mkdir /test/samba
mkdir /test/sale
创建samba的访问用户
useradd smb1
useradd smb2
指定组创建用户smb3 ,smb3跟smb2是一个组
useradd -g smb2 smb3
创建密码:
smbpasswd -a smb1
smbpasswd -a smb2
smbpasswd -a smb3
修改配置文件
smbshare只给smb1用户访问的权限
[smbshare] 表示ip访问时候的路径
comment = Samba Share #描述
path = /test/samba #共享的目录
browseable = no #是否可以预览目录文件
public = no #是否公开,如果是yes也可以注释掉
writable = yes #是否可以写入
valid users = smb1 #设置访问的用户
sale只给smb2用户访问的权限
[sale]
comment = Samba Share
path = /test/sale
browseable = no
#public = no
writable = yes
valid users = smb2
如果不需要对文件夹进行限制,只要把valid users = 删除掉即可
valid users = smbuser1 smbuser2 可以设置多个用户,用空格分开
valid users = @smbuser2 @组名 表示限制组的用户访问
对共享目录的权限设置
read list = smbuser2 //只读
谁可写,谁只读
writable =yes //可写
read list = user或者group
read only = yes //只读
write list = user或者group
invalid users = user或者group 禁止访问共享目录的用户或者组
启动服务:
systemctl start smb 启动smb服务
systemctl enable smb 开机启动
生产环境配置
功能:
共享服务器。windows共享。
应用:
可以在windows上,使用共享文件夹,像用本地的存储设备一样。
依赖局域网带宽。
百兆 --> 千兆
需求:
研发部
内部同事
开发
测试
美工
其他部门
行政
人事
财务
销售
…
需求的邮件或工单:
空间需求
开发-java 50G
测试 100G
美工 300G
行政 150G
人事 200G
财务 50G
如果不够,可以扩充。
访问需求
直接可以在windows资源管理器使用
只允许部门内部人员访问,其他人任何权限都没有
使用的账号、密码会提供
申请一个服务器
硬盘 4块 2块做系统–160G 2块做存储–2T raid1
2块 系统和存储 2T raid1
安装操作系统–centos7
部署应用
构建lvm:
构建可扩展的lvm分区,指定为xfs文件格式
[[email protected] ~]# pvcreate /dev/sdb
[[email protected] ~]# vgcreate samba /dev/sdb
[[email protected] ~]# lvcreate -L 5G -n java samba
[[email protected] ~]# lvcreate -L 10G -n test samba
[[email protected] ~]# lvcreate -L 30G -n art samba
[[email protected] ~]# lvcreate -L 15G -n admin samba
[[email protected] ~]# lvcreate -L 20G -n hr samba
[[email protected] ~]# lvcreate -L 5G -n sar samba
mkfs.xfs /dev/samba/java
mkfs.xfs /dev/samba/test
mkfs.xfs /dev/samba/art
mkfs.xfs /dev/samba/admin
mkfs.xfs /dev/samba/hr
mkfs.xfs /dev/samba/sar
挂在分区
[[email protected] ~]# mkdir -p /samba/{java,test,art,admin,hr,sar}
[[email protected] ~]# vim /etc/fstab
/dev/mapper/samba-java /samba/java xfs defaults 0 0
/dev/mapper/samba-test /samba/test xfs defaults 0 0
/dev/mapper/samba-art /samba/art xfs defaults 0 0
/dev/mapper/samba-admin /samba/admin xfs defaults 0 0
/dev/mapper/samba-hr /samba/hr xfs defaults 0 0
/dev/mapper/samba-sar /samba/sar xfs defaults 0 0
[[email protected] ~]# mount -a
[[email protected] ~]# df -h | tail -6
/dev/mapper/samba-java 5.0G 33M 5.0G 1% /samba/java
/dev/mapper/samba-test 10G 33M 10G 1% /samba/test
/dev/mapper/samba-art 30G 33M 30G 1% /samba/art
/dev/mapper/samba-admin 15G 33M 15G 1% /samba/admin
/dev/mapper/samba-hr 20G 33M 20G 1% /samba/hr
/dev/mapper/samba-sar 5.0G 33M 5.0G 1% /samba/sar
配置samba:
安装samba服务
分部门进行samba配置文件设置
[[email protected] /etc/samba]# cp smb.conf smb.conf.java
[[email protected] /etc/samba]# cp smb.conf smb.conf.test
[[email protected] /etc/samba]# cp smb.conf smb.conf.art
[[email protected] /etc/samba]# cp smb.conf smb.conf.admin
[[email protected] /etc/samba]# cp smb.conf smb.conf.hr
[[email protected] /etc/samba]# cp smb.conf smb.conf.sar
[[email protected] /etc/samba]# vim smb.conf
主配置文件不改
[[email protected] /etc/samba]# vim smb.conf.java
结尾添加
[java]
comment = java's share dir
path = /samba/java
write list = java
create mask = 0664
directory mask = 0775
[[email protected] /etc/samba]# vim smb.conf.test
结尾添加
[test]
comment = test's share dir
path = /samba/test
write list = test
create mask = 0664
directory mask = 0775
其他的,操作相同
添加samba用户,并将家目录设置为要共享的文件夹
[[email protected] ~]# useradd java -d /samba/java
[[email protected] ~]# useradd test -d /samba/test
[[email protected] ~]# useradd art -d /samba/art
[[email protected] ~]# useradd admin -d /samba/admin
[[email protected] ~]# useradd hr -d /samba/hr
[[email protected] ~]# useradd sar -d /samba/sar
vim创建一个密码文件
[[email protected] ~]# cat pass
123456
123456
用非交互方式设置samba用户,导入密码
[[email protected] ~]# smbpasswd -s -a java < pass
Added user java.
[[email protected] ~]# smbpasswd -s -a test < pass
Added user test.
[[email protected] ~]# smbpasswd -s -a art < pass
Added user art.
[[email protected] ~]# smbpasswd -s -a admin < pass
Added user admin.
[[email protected] ~]# smbpasswd -s -a hr < pass
Added user hr.
[[email protected] ~]# smbpasswd -s -a sar < pass
Added user sar.
查看samba用户列表
[[email protected] ~]# pdbedit -L
java:1000:
art:1002:
hr:1004:
test:1001:
admin:1003:
sar:1005:
设置目录访问权限
给文件夹设置对应的用户,组的权限
[[email protected] /samba]# chown java:java java/
[[email protected] /samba]# chown test:test test/
[[email protected] /samba]# chown art:art art/
[[email protected] /samba]# chown admin"admin admin/
[[email protected] /samba]# chown hr:hr hr/
[[email protected] /samba]# chown sar:sar sar/
[[email protected] ~]# systemctl start smb
[[email protected] ~]# systemctl enable smb
维护:
删除windows保存的用户凭据:
控制面板 --> 用户管理 --> 凭据管理器 --> 删除即可
删除windows保存的用户密码信息:
命令提示符 -->
net use * /del
Y
等待几分钟就可以了
在 我的电脑 资源管理器 添加网络位置
实现共享文件夹直接保存下来,可以访问
匿名访问(基本不用)
匿名访问的安全性较低,所以不建议配置
在global全局配置里添加如下
map to guest = Bad User 匿名访问
故障排除
1.session setup failed: NT_STATUS_LOGON_FAILURE
该错误表示用户有误, 可能是用户不存在, 也有可能是密码错误, 或者用户只是在samba和系统的用户中的一个地方存在,
总之是用户和密码有问题
-
tree connect failed: NT_STATUS_BAD_NETWORK_NAME
这个错误则表示共享目录有误, 可能是目录不存在, 或者权限不对
我的情况是这样的. 我有一个明为xiaowang的用户, 在xiaowang的主目录下我新建了一个share目录,
并且吧share添加到smb.conf中成为一个共享目录myshare, 但是我有指定该共享目录的有效用户为guest(也是系统中的一个用户),
结果guest没有访问xiaowang主目录下的文件的权限. 现在我把share目录健在home下就好使了.
windows访问提示这个
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TPB5EMjpWT3VlaNBDOsJGcohVYsR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZwpmL1QDN4MDNwUTM2ETMxkTMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
这种一般是windows本地已经有了其它的访问记录
解决方法如下:
在window命令行cmd—输入命令 net use 查看记录
清除所有访问的记录 命令 net use * /del /y
在重新操作就可以重新输入用户密码访问了
windows无法访问samba,linux可以访问samba.
同样是windows本地策略的问题,进入注册表
解决方法:
1、本地安全策略,本地策略-安全选项,需要修改成默认的值的修改方式:
查找注册表浏览到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA
直接删除 LMCompatibilityLevel 键。确定删除后。
2、运行secpol.msc命令。打开本地安全策略。
3、查看 网络安全:LAN管理器身份验证级别,安全设置已经变为默认“没有定义”
修改后发现输入账户密码就可以直接访问了。
扩展
这是我的配置 大家一看就知道我的需求了,
用户 design01 design02 为design 组
用户 project01 project02为project组
我想让design01 02 拥有本身自己的宿主目录同事都可以访问公共目录 /workspace/samba/design
peoject同理
可现在 peoject design两个目录 可以被所有用户看到 不过进入时候没有权限 需要输入密码?
请问大家我哪里配置的有错误
编辑/etc/samba/smb.conf
在[global]
加入hide unreadable=yes #对无read权限的用户隐藏
或者hide unwriteable=yes #对无write权限的用户隐藏
重启samba,OK
参考
pdbedit -L 查看samba用户列表
smbpasswd -a 用户名 添加samba用户并设置samba密码
smbpasswd -x 用户名 删除samba用户
关于samba的详细参数解释