Samba For Linux是一款最初被设计为一个开放源码的服务器消息块(SMB)协议实现基于Linux操作系统。它主要是用来提供打印/文件共享服务的CIFS(通用互联网文件系统)和SMB客户。换句话说,桑巴是标准的当我们谈到之间的互操作性,基于Windows操作系统和Linux / UNIX服务器。如果你想分享Linux / UNIX主机和Windows客户机之间的文件,你需要安装Samba。
软件说明
功能一目了然
Samba是设计以这样一种方式,它提供了安全,快速和稳定的无缝文件和打印两SMB/CIFS客户服务。此外,它支持活动目录(AD)。Samba项目是由两个重点项目,中小企业saemon(smbd),负责“用户模式”和“共享模式”的授权和认证过程,和nmbd,用来处理名称解析和浏览。
实现了多种服务和协议
随着时间的推移,Samba项目演变成一个综合的软件,实现了多种服务和协议,包括NBT(TCP / IP协议),DCE/RPC(入侵防护),WINS服务器,安全帐户管理器(山姆)数据库,本地安全机构(LSA)服务,以及更多。它使用TCP / IP协议,允许用户对Linux的分布可以没有任何麻烦,微软Windows操作系统访问创建股份。
应该由Linux发行版默认安装的任何
总体而言,我们认为,应该用在任何Linux Samba配置默认安装,为了让用户能够有效地与其他操作系统共享文件。该软件在后台运行,完全在任何Linux分布很容易安装,直接从其默认的软件库,但它也可以在不同的平台上使用,如OpenVMS,IBM系统390,UNIX,等。
Linux中搭建samba服务器
SMB协议是局域网中共享文件/打印机的一种协议,该协议可以为网络内部的Windows和Linux主机提供文件系统、打印服务。SMB的工作原理是让NetBIOS和SMB运行在TCP/IP之上,且使用NetBIOS的nameserver让Linux机器可以在Windows网络邻居中被浏览。这样Windows就可以方便地与linux进行资源的共享了。
Samba是一种用来实现SMB的软件,是运行在Linux环境里的自由软件。它的主要功能包括以下几点:
1.共享目录:就是将服务器上的一个或几个目录设置为共享,例处在同一局域网内的Windows用户可以访问这些目录。
2.共享打印机:可共享服务器中的打印机,供其他客户机使用。
3.控制共享资源的权限:对于设置的资源(目录和打印机),可以通过权限设置,控制不同的用户具有不同的操作权限。
4.在Linux客户端,可以使用smbclient客户端软件登录,与使用FTP类似的方式访问Windows共享资源。
下面来看一下搭建Samba服务器的具体过程:
一、首先就是安装Samba了,可以使用RPM包安装,也可以使用tar源码包来安装。RPM包的话需要安装两个包:samba-common-版本和samba-版本两个包。可以使用rpm-vih 命令来安装。
二、配置服务器的IP地址,一般服务器的IP地址最好使用静态的。具体如何配置,可以参考搭建DHCP服务器那篇。
三、启动Samba服务,启动Samba服务后就可以为客户机提供共享服务了,Samba的守护进程有2个:smbd和nmbd。
1.smbd是Samba的主要启动进程,通过该进程可以让网络内的其他计算机知道Samba服务器共享了哪些资源。
2.nmbd进程用来解析Samba服务器所共享工作组及在些工作组下的netbios name。
四、配置Samba服务器的配置文件,RHEL5的Samba配置文件存放在/etc/samba/smb.conf中。我们可以修改此配置文件来使Samba更为安全的工作。它的配置文件里的参数如下:
1.全局选项 [gloabal]:
NetBIOS name:设置Samba服务器的netbios名,这个参数可以不设置,Samba将使用本机域名的第一部分作为该选项的值。
Workgroup:设置当前Samba服务器所要加入的工作组,若security选项设置为domain,则workgroup可以设置为域名。
server string:用来设置本机描述,可以任意写。
security:设置Samba服务器的基本安全级,包括share、user、server和domain4个值。根据设置的不同,用户访问samba服务器共享资源时的认证方式也不同;设置为user时,要求提供用户名和密码进行验证;设置为share时,不需要任何认证;设置为server时,与user安全级类型;设置为domain时,要求网络中存在一台NT PDC,用户名和密码将在NT PDC中进行验证。
注意:一般我们只使用share和user两个安全级,server和domain安全级很少用。
encrypt passwords:设置是否对密码进行加密。由于Windows默认状态下不能传送明文密码,这里建议设置为yes(对密码进行加密)。
username map:该选项的值为一个文件名。所指向的文件中包含来自客户机的用户名与Samba服务器中Linux系统用户名之间的映射。
guest account:设置来宾账户(guest)的用户名,可以是nobody、ftp等不需要密码的用户。
host allow:允许哪些计算机可以访问Samba服务器,可以输入多个IP地址,也可以设置成某个网段。
host deny:与上面host allow相反。
printcap name:设置从指定文件中获取打印机的描述信息(通常是/etc/printcap文件)。
load printers:若设置为yes,表示允许自动加载打印机列表,而不需要单独设置每一台打印机,即不使用配置文件后面[printer]节的内容。
printing:定义打印机系统的类型。
log file:定义日志文件。
max log size:设置日志文件的大小,单位为KB,设置为0,大小不限。
interface:如果服务器有多个网络接口,需要在这里指定使用哪些网络接口。
2.共享选项:
comment:对共享目录的注释说明。
writable:用户对共享目录是否可写(注意:如果这里设置为yes,但是你共享的目录用户没有写入权限,那么用户不能往这个共享目录里写入数据)。
browseable:设置用户是否可浏览到该目录(通过指定共享目录名仍然可以访问)。
valid users:可以访问共享目录的用户列表 。
invalid users:与valid users相反。
create mode:在共享目录中创建文件时,对文件设置的权限属性(如0664)。
readonly:设置共享目录是否为只读模式。
public:设置共享目录是否允许匿名访问。
guest ok:与public相同 。
path:设置共享目录对应linux文件系统的哪一个目录。
writable:设置对该共享目录是否为写入权限。
read only:设置共享目录是否为只读(no为可写,yes为只读,注意别与上面的readonly混淆)。
read list:只能以读权限访问共享目录的用户列表。
write list:具有写入权限的用户列表,无论writeable和read list设置的是什么 ,在该选项中设置的用户都具有写权限。
3.特殊设置选项:
在smb.conf文件中,还有两个特殊的节:[home]和[printers],这两节的设置是针对在Samba服务器中拥有账号的用户进行的。
[home]
此项是对在Samba服务器中拥有账号的用户,使用账号登录到Samba服务器后,则可以对应的看到用户自己的home目录,常用选项有:
comment、writable、browseable、valid users、create mode、directory mode、readonly这几项,其作用说明同上。
[printers]
此选项定义共享打印机相关选项,使Linux可以通过Samba向网络中其他计算机提供打印服务,常用设置选项如下:
comment、path、browseable、gueset ok、writable、printable除最后一项外别的选项上面都有说明,最后一项是指打印机是否允许使用,设置为yes才能使用网络打印。
五、添加Samba用户
当在[gloabal]节中设置security选项为user时,要访问Samba服务器中的共享资源,用户必须输入用户名和密码,经过认证才能访问。这里的用户名必须是Linux系统中存在的用户名,而密码则不一定是登录Shell时的密码,密码可使用Samba提供的程序smbpasswd来单独创建。
注意:通常为了系统的安全,使用useradd命令创建不能登录Shell的用户,并且不使用passwd命令为其设置密码。
smbpasswd命令的使用方法如下:
smbpasswd [选项] [用户名]
常用选项:
-a :添加用户。
-d :禁止用户。
-e :允许用户。
-x :删除用户。
六、Samba应用实例:
1.匿名Samba服务器:
实例背景:企业计划架设一台Samba服务器,用来向局域网内各客户机提供软件共享服务,常用的软件包都存放在服务器上的/usr/soft/目录中,要求用户只能从该目录中下载东西,而不能上传修改目录中的文件。另外,各客户端还可心利用Samba服务器进行临时文件存放,也就是任何用户都有权限将文件写到服务器上某个目录里,如:/usr/temp/目录下。
根据以上要求配置步骤如下:
首先创建目录/usr/soft/和/usr/temp/,然后修改权限。
#mkdir /usr/soft
#mkdir /usr/temp
#chmod 755 /usr/soft
#chown nobody:nobody /usr/temp
#vi /etc/samba/smb.conf
#==============================Global settings=============================
[global]
workgroup = WORKGROUP
server string = Samba Server
security = share
#==============================Share Definitions===========================
[soft]
path = /usr/soft
public = yes
read only = yes
[temp]
path = /usr/temp
public = yes
read only = no
#service smb restart
以上就是根据公司要求搭建的匿名Samba服务器,下面我们来看一下如何设置需要身份验证的Samba服务器配置,修改以上案例达到以下要求:
1.soft目录:保存常用软件,所有用户都只有读的权限,管理员admin除外,admin可以向该目录写入文件,用来更新安装软件包。
temp目录:仍然作为临时的文件交换目录,的有用户都可以进行读写操作。
tech目录:保存技术部的资料,该目录只有技术部的员工可以进行读写操作,其他人员不能访问(经理manager可访问该目录,不能修改)。
market目录:保存市场部的资料,该目录只有市场部的员工可以进行读写操作,其他人员不能访问(经理manager可访问该目录,不能修改)。
实现以上案例要求的步骤如下:
#groupadd tech
#groupadd market
#useradd -s /sbin/nologin admin
#useradd -s /sbin/nologin manager
#useradd -g tech -s /sbin/nologin li
#useradd -g market -s /sbin/nologin wei
#smbpasswd -a admin
输入密码:
#重复以上命令把每个用户都建立好后
#mkidr /home/tech
#mkidr /home/market
#chown manager:tech tech
#chown manager:market market
#chmod 570 /home/market
#chmod 570 /home/tech
#chmod 777 /usr/temp
#chown admin /usr/soft
做完上面的步骤后,然后修改配置文件,在配置文件里面添加以下条目:
#=====================Global Setting==================
[global]
workgroup = WORKGROUP
server string = Samba Server
security = user
======================Share Definitions================
[soft]
path = /usr/soft
public = yes
writable = no
write list = amdin
[temp]
path = /usr/temp
public = yes
writable = yes
[tech]
path = /home/tech
valid users = manager,@tech
write list = @tech
read list = manager
[market]
path = /home/market
valid users = manager,@market
read list = manager
write list = @market
:wq
修改好配置文件后保存退出,然后重启smb服务:service smb restart
以上就是Samba服务器的搭建,搭建完之后可以到Windows客户端上输入//Samba服务器的IP地址,来验证实验是否成功。