实验前的说明:
Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。
SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。
SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。
Samba的软件构成有:samba主程序、samba-client客户端程序、samba-common其它公共程序。
主配置文件:/etc/samba/smb.conf
,配置文件中有以下设定;
1、全局设定:设置的参数对全局有效
2、特定共享的设定:有以下几个子共享设定
1)私有及目录共享
2)打印机共享
3)自定义共享
每个共享目录应该有独立的 [ ]
部分
[ 共享名称] 远程网络看到的共享名称
comment :注释信息
path :所共享的目录路径
public : 能否被guest 访问的共享,和guest ok 类似
browsable :是否允许所有用户浏览此共享, 默认为yes,no 为隐藏
writable=yes :可以被所有用户读写,默认为no
read only=no :和writable=yes 等价,如与以上设置冲突,放在
后面的设置生效
write list :三种形式:用户,@ 组名,+ 组名, 用,分隔如writable=no ,列表中用户或组可读写,不在列表中用户只读
valid users :特定用户才能访问该共享,如为空,将允许所有用户,用户名之间用空格分隔
环境准备:
1、关闭SELinux
临时关闭SELinux:
[root@centos6:~]#setenforce 0
永久关闭SElinux
[root@centos6:~]#vim /etc/selinux/config
SELINUX=disabled
重启生效
2、关闭防火墙
临时关闭防护墙:
[root@centos6:~]#iptables -F //临时关闭
永久关闭防火墙
[root@centos6:~]#service iptables stop
[root@centos6:~]#chkconfig iptables off
[root@centos6:~]#service iptables status
[root@centos6:~]#chkconfig --list iptables
3、查看软件安装情况
[root@centos6:~]#rpm -qa | grep samba
[root@centos6:~]#yum grouplist | grep file
[root@centos6:~]#yum groupinfo 'CIFS file server'
[root@centos6:~]#yum groupinstall 'CIFS file server'
实现samba共享
服务器配置:
1、在samba 服务器上安装samba包
[root@centos6:~]#yum install samba -y
2、samba服务器的配置
私有及目录的设置:
[homes] //私有家目录的名称用[]来表示
comment = Home Directories //描述信息
browseable = no //用户的家目录是否允许访问,这里通常设置为no
writable = yes //是否允许写入内容
; valid users = %S // ;表示注释,特定用户才能访问该共享,如为空,将允许所有用户,用户名之间用空格分隔
; valid users = MYDOMAIN\%S
打印机共享设置:
[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes
自定义共享:
[shared_name]
path = /app/sharedir/ //共享内容路径
comment = Comment String //描述信息
guest ok = {yes|no} //是否允许访客访问
public = yes //是否公开,与guest ok类似
writable = {yes|no} //是否只读
write list = +group_name //用户指明可写的用户列表,这里的 + 表示加组名,表示组里面的用户可以写
在完成配置文件定义后要测试配置文件是否有语法错误,以及显示最终生效的配置
[root@centos6:~]#testparm
3、创建samba用户密码
之后我们就要为samba用户创建密码,为什么说是创建密码而非账号和密码,因为samba用户其实就是系统用户,即在 /etc/passwd 中定义的用户,但是密码并非是系统用户密码,而是samba自己的密码文件,所以说我们要为samba用户创建密码,密码的创建时通过 smbpasswd 命令来实现的:
smbpasswd:
-a :添加系统用户为samba用户
-d : 禁用
-e : 启用
-x :删除
添加系统用户wangjian为samba用户,并为其设置密码:
[root@centos7:~]#useradd wangjian
[root@centos7:~]#smbpasswd -a wangjian
4、启动samba相关服务
启动samba的两个服务 nmb 和 smb
服务脚本:
- /etc/rc.d/init.d/nmb
- /etc/rc.d/init.d/smb
启动服务:
[root@centos6:~]#service nmb restart
[root@centos6:~]#service smb restart
samba客户端使用
我们知道在Windows上是以UNC路径的方式去访问网上邻居共享的内容,那因此我们可以在Windows系统上通过UNC路径进行访问,其格式为 \\SERVER_IP\share_name
,在linux上我们可以通过smbclient
命令来查看服务端共享的内容:
首先安装客户端工具:
[root@centos7:~]#yum install samba-client -y
连接samba服务器:
[root@centos7:~]#smbclient -L 192.168.247.130 -U wangjian
在获取到共享的信息后,可以使用
smbclient
命令进行交互式的数据访问:
首先在客户端要确定wangjian这个用户对你分享的文件目录(在这里是:/app/sharedir )有没有写权限,如果没有需要在服务端给其加上权限:
[root@centos6:~]#setfacl -m u:wangjian:rwx /app/sharedir
然后在用smbclient
命令进行交互式访问:
[root@centos7:~]#smbclient //192.168.247.130/shared_name -Uwangjian
在交互式窗口中可以像ftp中一样使用上传下载等命令,这里不再过多演示。
当然我们还可以通过基于挂载的方式访问,就是将共享的目录挂载(映射为磁盘驱动器的方式)到本地使用:
[root@centos7:~]#mount -t cifs //192.168.247.130/shared_name /mnt/wangjiandir/ -o username=wangjian,password=111111