linux运维总结十一:Samba文件共享
Samba是Linux,与Windows之间进行交互操作软件组件,Samba是基于GPL协议的自由开源软件。自1992年以来,Samba开始通过SMB/CIFS协议为
Windwos,OS/2,Linux以及众多其他支持协议操作系统提供安全,稳定,快速的文件与打印服务,在使用winbind将Linux无缝整合到活动目录环境中时,Samba也是一个重要组件。
所需要软件包括:Samba(服务器端软件包),Samba-client(客户端软件包)和Samba-common(Samba公共文件软件包)。其中,Samba由smbd和
nmbd两个守护进程组成 ,两个进程启动脚本是独立,下面分别介绍每个守护进程作用。
smbd服务进程为客户端提供 文件共享与打印机服务。另外 ,该进程还负责用户权限验证以及锁功能,smbd默认监听端口是TCP协议是139与445,Samba通过smb服务启动smbd进程,使用netstat-nutlp查看进程端口信息。
nmbd进程提供NetBIOS名称服务,以满足基于 Common Internet File System(CIFS)协议的共享访问环境。Samba通过nmb服务启动nmdb进程,该进程默认使用是UDP 137端口。
由于 iptables与SELinux默认策略会阻止远程用户对Samba的访问,目前我们暂时先关闭这些地服务,以确保共享正常使用,关于如何合理设置防火墙与SELinux策略在后续会介绍。
一、快速配置Samba服务器
下面第1至3步是操作前准备工作,主要是关闭防火墙及SELinux安全组件,安装相应软件包,以及创建共享目录和用于测试文件。
1、关闭防火墙及SELlinux
[root@puppet ~]# setenforce 0 #临时关闭SELlinux
[root@puppet ~]# set -i "/SELINUX=/c SELINUX=disable"\ #永久关闭SELlinux
> /etc/sysconfig/selinux
[root@puppet ~]# service iptables stop #临时关闭防火墙
[root@puppet ~]# chkconfig iptables off #永久关闭防火墙
2、安装Samba软件
[root@puppet ~]# yum -y install samba
3、创建共享目录
[root@puppet ~]#mkdir /common
[root@puppet ~]#chmod 777 /common
[root@puppet ~]#echo "hello the world">/common/smb.txt #创建测试文件
4、修改配置文件
做完以上准备工作后,如果希望Samba服务可以共享指定目录给客户端,就需要在其配置文件中写入共享代码段,Samba默认配置文件是/etc/samba/smb.conf 默认情况下,Samba已经配置为允许用户通过远程共享访问自己家目录,为了将我们在准备阶段创建的/common目录共享给客户端,需要在该配置文件末尾追加对common目录共享设置,实现快速自定义共享
[root@puppet ~]# vi /etc/samba/smb.conf
[common] #共享名称为common
comment = Common share #共享注释
path = /common #重要,指定共享路径
browseable = yes #所有人可见
guest ok =no #拒绝匿名访问
writable = yes #支持写入数据
5、创建访问帐号
客户端访问Samba共享时所使用帐户名称就是服务器端操作系统中真实存在系统帐户名称,但不同于微软共享调协 ,访问Samba共享密码必须是
独立Samba密码,而不可以使用系统密码,这样即使有人获得了Samba帐户和密码,也不能使用这些信息登录服务器本机操作系统。所以,成功访问
Samba服务器还需要使用smbpasswd将系统帐户添加到Samba,并设置相应密码,CentOS 6.3系统自带的Samba软件包安装后,默认会将帐户与密码
文件存放/var/lib/samba/private目录下。
[root@puppet ~]#useradd -s /sbin/nologin smbuser
[root@puppet ~]#smbpasswd -a smbuser #提示输入帐户密码
smbpasswd命令描述和用法如下:
描述:修改帐户samba密码
用法 :smbpasswd [选项]账号名称
选项
-a 添加帐户并设置密码
-x 删除SMB帐户
-d 禁用SMB帐户
-e 启用SMB帐户
6、启动服务
[root@puppet ~]#service smb start
[root@puppet ~]#chkconfig smb on
二、访问Samba共享
1、Windows 客户端访问
在 Windows环境中,通过“开始->运行”菜单或直接按WIN + R 快捷键开启运行对话框,在该对话框中输入\\IP(其中IP为
Samba服务的IP地址),单击“确定”按钮访问Samba共享,如果是基于用户名和密码的访问,系统会提示输入帐户与密码,登录成功后,会看到 Samba共享两个目录,一个是common目录,一个是smbuser帐号家目录。
2、Linux客户端访问
Linux客户端使用smbclient 命令可以访问服务器上共享资源,如果安装有图形环境,也可以通过Linux图形界面连接服务器,下面具体方法。
客户端首先要安装 yum -y install samba-client
[root@agent ~]# smbclient -L //192.168.32.200 #查看192.168.32.200主机共享信息,仅查看不用输入密码,直接回车。
[root@agent ~]# smbclient -U smbuser //192.168.32.200/common
#访问samba共享目录,输入帐户密码
有时候,挂载Samba共享目录实现如本地文件系统一样的使用体验是很有意义,使用root管理员身份运行mount命令可以挂载这样
文件系统,将挂载信息写入fstab文件可以实现永久挂载目的。
[root@agent /]# mount -t cifs //192.168.32.200/common /com -o username=smbuser,password=password
[root@agent /]# cd /com
[root@agent com]# ls
smb.txt
[root@agent com]# cat smb.txt
hello the world
三、Samba配置文件
配置文件非常简洁明了,所有设置都在/etc/samba/smb.conf配置中,通过对该文件修改,可以将Samba配置为一台匿名文件服务器,基于帐户文件服务器或打印服务器,默认情况下,Samba会已开启本地帐户家目录共享与打印共享,地文件中以 # 或 ; 符号开头行为 注释行,配置文件分为若干段,除了global(全局配置段)之外 的其余所有段用来描述共享资源,全局段中配置代表全局有效,是全局默认设置。但如果全局配置段中设置项与共享段中设置项有冲突,帽共享设置中设置为实际有效值。