环境:物理机windows8,vmware11虚拟机,服务器centos7系统
目的:实现window8通过用户名samba密码123456共享访问samba服务器/home/samba目录,用户名samba密码123456和用户user001密码123456共享访问samba服务器/home/user001目录。(以及linux内的共享)
1、安装samba服务
yum -y install
samba //服务器端软件,主要提供samba服务器的守护程序,共享文档,日志的轮替 samba-common //主要提供samba服务器的设置文件与设置文件语法检验程序testparm samba-client //客户端软件,主要提供linux主机作为客户端时,所需要的工具指令集
2、开启防火墙端口
iptables -I INPUT -p udp --dport 137 -j ACCEPT
iptables -I INPUT -p udp --dport 138 -j ACCEPT
iptables -I INPUT -p tcp --dport 139 -j ACCEPT
iptables -I INPUT -p tcp --dport 445 -j ACCEPT
3、配置/etc/samba/smb.conf。
[global] workgroup = SAMBA security = user //security=user(需要账号可密码)|share(不需要账号密码) passdb backend = tdbsam 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 [samba] comment =pubic stuff //描述‘公共资源’ path =/home/samba //共享目录路径 public = yes //公开共享,若为否则进行身份验证(只有当security = share 时此项才起作用) writeable = yes //可写,不以只读方式共享当与read only发生冲突时,无视read only browseable = yes //在浏览资源中显示共享目录,若为否则必须指定共享路径才能存取 guest ok = yes //公开共享,若为否则进行身份验证(只有当security = share 时此项才起作用) valid users =samba,user001 //默认所有用户;有效的用户列表 Write list =samba,user001 //默认无;可写入的用户列表 [user001] comment =pubic stuff path =/home/user001 public = yes writeable = yes browseable = yes guest ok = yes valid users =user001 Write list =user001
4、测试,添加账号
4.1、testparm:测试有效的exports内的属性
4.2、pdbedit:管理smb的用户数据库。
1
2
3
4
5
|
pdbedit -L [-vm] 列出数据库中的用户等信息,- v 详细信息,-w使用smbpasswd格式。 pdbedit -a -u [user] 新增一个用户,但必须存在实体用户。 pdbedit -r -u [user] 修改一个用户的信息,需搭配其他参数,可参考 man 文档。 pdbedit -x -u [user] 删除一个用户。 pdbedit -a -m -u [machine account计算机账号] 添加一个计算机账号,域相关。 |
4.3、smbpasswd:改变samba账户的密码。
1
2
3
4
5
|
smbpasswd -a [user] 新增用户以及密码。 smbpasswd -r [user] 修改用户密码。 smbpasswd -x [user] 删除用户。 smbpasswd -d [user] 禁止登陆。 smbpasswd -e [user] 启用用户。 |
4.4、smbclient:unix客户端访问工具。
1
2
3
4
5
6
7
8
9
|
smbclient -L //IPADDR [-U smbuser] 测试查看目标服务器所开放的共享文件夹 smbclient //IPADDR/dir -U smbuser 连接共享服务器文件夹。 [root@host2 ~] # smbclient //192.168.2.110/test -U zhanghe 命令行形式访问。 Enter zhanghe's password: Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.23-30.el6_7] smb: \> help ? allinfo altname archive blo cksize cancel case_sensitive cd chmod chown .... |
4.5文件夹权限设置
4.6、samba服务iptables服务的查看、重载、启动、自启
systemctl status smb //查看开启状态 systemctl reload smb //重载smb服务 systemctl restart smb //重启smb服务 systemctl enable smb //设置smb开机自启
service iptables save
service iptables restart
4.7.访问测试\192.168.2.110
7.错误处理。
-
如果拷贝文件时出现
目标文件夹访问被拒绝
错误,如下图所示。此时需要检查一下Samba服务器的Selinux和防火墙配置,确认一下Selinux是否关闭,同时确认一下防火墙是否已经打开了Samba服务端口(与Samba服务相关的端口有137、138、139和445
)。 最后确认一下Samba提供的共享文件夹是否具有读写权限,具体可以参考第2步和第3步配置(目录属性和Samba服务配置)。
-
当我们要进入不同的samba目录,如:进入
shared
共享文件夹,但是这些目录都有自己的密码设置时,如果我们在点击这个目录时输入访问该目录的用户名和密码时,会提示“不允许一个用户使用一个以上用户名与服务器或共享资源的多重连接。中断与此服务器或共享资源的所有连接,然后再试一次。”出现此问题是windows自身的限制,通常我们会注销当前windows用户,然后再重新登陆samba来访问其他目录。此时,我们可以打开命令行界面,输入
net use * /del /y
命令来切掉本机当前的所有远程共享文件信息,然后点击其他目录输入该目录具有访问权限的用户名和密码即可正常访问了。
更换访问目录
链接参考:https://www.linuxidc.com/Linux/2016-06/132609.htm
http://blog.sina.com.cn/s/blog_69d9d3d10100l0o4.html
番外篇:如何在samba服务器上添加用户和组
samba服务器作为公司的文件服务器,我现在需要增加用户可以在windows上读写和存放文档,
我是直接smbpasswd -a,这样仅仅只是成为samba服务器的用户而已,仅仅能登录到samba服务器上面,
而不能完成特定的任务先加个用户名,再设置密码。
其实SMB可以使用用户名列表,具体的吗,不怎么好说清楚,就是说SMB服务器可以设置账号映射,就是说SMB用户可以不是系统用户
在SMB.conf文件中可以开启用户账号映射, 方法: 先打开smb.conf这个文件,找到:username map =/etc/samba/smbusers 这一项
把前面的分号去掉,记住username map= 后面的路径 然后手动的编辑这个文件 使用命令: vi /etc/samba/smbusers 这个命令是
编辑 username map 所指定的那个文件 在这个文件里面添加虚拟用户名 如 root administrator admin
这里的意思是说 root这个系统用户名有两个虚拟的SMB用户名,一个是administrator,一个是admin就按这个方法去添加新的用户名,比如你先在系统中添加一个系统用户
命令: useradd username 这个命令是添加一个系统用户账号,账号名是:username ,你可以自己改账号名
然后 在/etc/samba/smbusers这个文件中添加虚拟账号:比如: username abc aaa aab
username是系统账号名 abc,aaa,aab这三个是SMB的虚拟账号,你公司有多少个用户就在这里添加,
把他们的用户名都添加到这个文件里面 然后在你的smb.conf的文件中建立共享目录,
比如 [tmp] path=/tmp public=no valid users=username 保存退出
重启动SMB service smb restart 如果你不用虚拟账号 要先建立系统账号
方式: useradd username smbpasswd -a username 设置密码 重启SMB服务器 service smb restart