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文件格式
[root@samba ~]# pvcreate /dev/sdb
[root@samba ~]# vgcreate samba /dev/sdb
[root@samba ~]# lvcreate -L 5G -n java samba
[root@samba ~]# lvcreate -L 10G -n test samba
[root@samba ~]# lvcreate -L 30G -n art samba
[root@samba ~]# lvcreate -L 15G -n admin samba
[root@samba ~]# lvcreate -L 20G -n hr samba
[root@samba ~]# 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
挂在分区
[root@samba ~]# mkdir -p /samba/{java,test,art,admin,hr,sar}
[root@samba ~]# 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
[root@samba ~]# mount -a
[root@samba ~]# 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服务
[root@samba ~]# yum install -y samba samba-client samba-common
分部门进行samba配置文件设置
[root@samba /etc/samba]# cp smb.conf smb.conf.java
[root@samba /etc/samba]# cp smb.conf smb.conf.test
[root@samba /etc/samba]# cp smb.conf smb.conf.art
[root@samba /etc/samba]# cp smb.conf smb.conf.admin
[root@samba /etc/samba]# cp smb.conf smb.conf.hr
[root@samba /etc/samba]# cp smb.conf smb.conf.sar
[root@samba /etc/samba]# vim smb.conf
主配置文件不改
[root@samba /etc/samba]# vim smb.conf.java
结尾添加
[java]
comment = java's share dir
path = /samba/java
write list = java
create mask = 0664
directory mask = 0775
[root@samba /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用户,并将家目录设置为要共享的文件夹
[root@samba ~]# useradd java -d /samba/java
[root@samba ~]# useradd test -d /samba/test
[root@samba ~]# useradd art -d /samba/art
[root@samba ~]# useradd admin -d /samba/admin
[root@samba ~]# useradd hr -d /samba/hr
[root@samba ~]# useradd sar -d /samba/sar
vim创建一个密码文件
[root@samba ~]# cat pass
123456
123456
用非交互方式设置samba用户,导入密码
[root@samba ~]# smbpasswd -s -a java < pass
Added user java.
[root@samba ~]# smbpasswd -s -a test < pass
Added user test.
[root@samba ~]# smbpasswd -s -a art < pass
Added user art.
[root@samba ~]# smbpasswd -s -a admin < pass
Added user admin.
[root@samba ~]# smbpasswd -s -a hr < pass
Added user hr.
[root@samba ~]# smbpasswd -s -a sar < pass
Added user sar.
查看samba用户列表
[root@samba ~]# pdbedit -L
java:1000:
art:1002:
hr:1004:
test:1001:
admin:1003:
sar:1005:
设置目录访问权限
给文件夹设置对应的用户,组的权限
[root@samba /samba]# chown java:java java/
[root@samba /samba]# chown test:test test/
[root@samba /samba]# chown art:art art/
[root@samba /samba]# chown admin"admin admin/
[root@samba /samba]# chown hr:hr hr/
[root@samba /samba]# chown sar:sar sar/
[root@samba ~]# systemctl start smb
[root@samba ~]# 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访问提示这个
这种一般是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用户