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和系统的用户中的一个地方存在,
总之是用户和密码有问题

  1. 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用户

关于samba的详细参数解释

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值