Samba服务器配置
许多桌面计算机都是以Windows操作系统为基础,如何使Windows可以访问linux服务器中的公共资源,是一个复杂的问题。
使用服务器信息块(Server Message Block)协议,可以共享文件、磁盘、目录、打印机等资源。
linux中的samba内置SMB协议,使用SMB实现局域共享资源,使Windows客户可访问这些公共资源。
在linux中架设一个samba服务器,可供客户端共享文件、打印机等资源。
一、SMB协议
SMB协议是局域网上共享文件/打印机的一种协议,该协议可以为网络内部的Windows和linux主机提供文件系统、打印服务。
通过“NetBIOS over TCP/IP”使用samba不但能与局域网络主机共享资源,也能与全世界的计算机共享资源。
samba是用来实现SMB的一种软件,该软件是运行在linux环境里的*软件。
1.samba功能:
- 共享目录
- 共享打印机
- 控制共享资源的权限
- 在linux客户端,可使用smbclient客户端软件,与使用ftp类似的方式访问Windows共享资源。
二、安装Sambda服务器
1.检查是否安装samba服务器
命令:rpm -qa | grep samba
[root@summer ~]# rpm -qa | grep samba
samba-winbind-clients-3.6.9-151.el6.x86_64
samba-client-3.6.9-151.el6.x86_64
samba-common-3.6.9-151.el6.x86_64
samba4-libs-4.0.0-55.el6.rc4.x86_64
samba-winbind-3.6.9-151.el6.x86_64
执行命令后,出现上述命令,则说明系统中已经安装了5个软件包。
2.安装命令
命令1:yum -y install samba
命令2:rpm -ivh samba-3.6.9-164.e16.x86_64.rpm
三、启动Samba
1.samba进程
安装好samba并启动其守护进程后,便可以提供文件共享服务。
samba的守护进程有两个:smbd和nmbd。
- smbd:是samba的主要启动进程,通过该进程可以让网络内的其他计算机知道samba服务器共享了哪些资源。
- nmbd:用来解析samba服务器所共享工作组及此工作组下的netbios name。
如果没有启动nmbd进程,客户机只能使用ip地址访问samba服务器中的共享资源,启动nmbd进程后,就可以使用设定的主机名访问公共资源。如samba服务器的ip地址为192.168.1.11,共享资源名称为soft,主机名为samba1,若未启动nmbd进程,只能按以下方式访问共享目录soft:\\192.168.1.11\soft
若启动了nmbd进程,还可以使用以下方式方式目录soft\\samba1\soft
2.启动samba
[root@summer ~]# service smb start
启动 SMB 服务: [确定]
[root@summer ~]# service nmb start
启动 NMB 服务: [确定]
其余命令:
-
service nmb status
-
service nmb restart
-
service nmb stop
若需要samba随系统的启动而启动,可以执行setup命令进行设置。
四、配置samba服务器
samba服务的配置文件是/etc/samba/smb.conf
。
该文件几乎包含了samba系统程序运行时所需的所有的配置信息。在smb.conf配置文件中,以分节形式分别配置不同的选项,除了[gloabal]节以外,其他每一节都看做是一个共享资源。
1.例:统计smb.conf的行数
命令:
[root@summer samba]# wc -l < smb.conf
288
2.查看smb.conf命令:vim smb.conf
# ----------------------- Network Related Options -------------------------
#
# workgroup = NT-Domain-Name or Workgroup-Name, eg: MIDEARTH
#
# server string is the equivalent of the NT Description field
#
# netbios name can be used to specify a server name not tied to the hostname
#
# Interfaces lets you configure Samba to use multiple interfaces
# If you have multiple network interfaces then you can list the ones
# you want to listen on (never omit localhost)
#
# Hosts Allow/Hosts Deny lets you restrict who can connect, and you can
# specifiy it as a per share option as well
#
workgroup = MYGROUP
server string = Samba Server Version %v
; netbios name = MYSERVER
"#"开头是注释,为用户提供相关的配置解释信息;以方便用户参考,不用修改。
“;”开头的,都是samba配置的范例格式,默认不生效,可通过去掉前面的分号,并加以修改来设置想使用的功能。
3.[globall]
#--------------
#
#======================= Global Settings =====================================
[global]
# ----------------------- Network Related Options -------------------------
#
# workgroup = NT-Domain-Name or Workgroup-Name, eg: MIDEARTH
#
# server string is the equivalent of the NT Description field
**[global]**节用来设置全局参数,该节设置的参数直接影响整个sanba系统。常用选项:1、基本选项。2、安全选项。3、打印设置选项。4、日志选项。5、网络配置选项。
①:基本选项
主要来设置samba服务器一些常用选项,如属于什么工作组、名称等。
- netbios name:设置samba服务器的netbios名,该参数可以不设置,samba将使用本机域名的第一部分作为该选项的值。
- workgroup:设置当前samba服务器所要加入的工作组,若security选项设置为domain,则workgroup可设置为域名。
- server string:用来设置本机描述,默认设置为samba server,可以设置为任意字符串。
②:安全选项
安全选项用来设置访问samba服务器时的安全设置,常用的安全选项如下。
-
security:设置samba服务器的基本安全级,包括share、user、server和domain 4个值。
根据设置值的不同,用户访问samba服务器共享资源时的认证方式也不同
设置为user(默认值),要求用户提供用户名和密码进行验证;设置为share时,不需要任何认证;
设置为server时,与user安全级类似;
设置为domain时,要求网络中存在一台NT PDC,用户和密码将在NT PDC中去验证。
注:一般只使用share和user两个安全级,其他两个很少用。
安全选项用来设置访问samba服务器时的安全设置,常用的安全选项如下。
- encrypt passwords:设置是否对密码进行加密。由于Windows默认状态下不能传送明文密码,这里建议设置为yes(进行加密)。
- username map:该选项的值为一个文件名,所指向的文件中包含来自客户机的用户名与samba服务器中linux系统用户名之间的映射。
-
guest account:设置来宾账户(guest)的用户名,可以是nobody、ftp等不需要密码的用户。
host allow:允许哪些计算机访问samba服务器,可以输入多个ip地址,如果ip地址后面设置为0表示允许某一个子网,如192.168.11.0表示该子网都可以访问。 - hosts deny:不允许哪些计算机访问samba。
③:打印设置选项
# --------------------------- Printing Options -----------------------------
#
# Load Printers let you load automatically the list of printers rather
# than setting them up individually
#
# Cups Options let you pass the cups libs custom options, setting it to raw
# for example will let you use drivers on your Windows clients
#
# Printcap Name let you specify an alternative printcap file
#
# You can choose a non default printing system using the Printing option
load printers = yes #若设置为yes,允许自动加载打印机列表,而不需要单独设置每一台打印机
cups options = raw
; printcap name = /etc/printcap #从指定文件中获取打印机的描述信息
#obtain list of printers automatically on SystemV
; printcap name = lpstat
; printing = cups #定义打印系统的类型
④:日志选项
# --------------------------- Logging Options -----------------------------
#
# Log File let you specify where to put logs and how to split them up.
#
# Max Log Size let you specify the max size log files should reach
# logs split per machine
log file = /var/log/samba/log.%m #定义日志文件
# max 50KB per log file, then rotate
max log size = 50 #设置日志文件的大小,单位KB(若设为0,表示不限大小)
⑤:网络配置选项
# ----------------------- Network Related Options -------------------------
#
# workgroup = NT-Domain-Name or Workgroup-Name, eg: MIDEARTH
#
# server string is the equivalent of the NT Description field
#
# netbios name can be used to specify a server name not tied to the hostname
#
# Interfaces lets you configure Samba to use multiple interfaces
# If you have multiple network interfaces then you can list the ones
# you want to listen on (never omit localhost)
#
# Hosts Allow/Hosts Deny lets you restrict who can connect, and you can
# specifiy it as a per share option as well
#
workgroup = MYGROUP
server string = Samba Server Version %v
; netbios name = MYSERVER
; interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24
; hosts allow = 127. 192.168.12. 192.168.13.
4.共享选项
#============================ Share Definitions ==============================
[homes]
comment = Home Directories
browseable = 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
...
- comment:对共享目录的注释说明。
- writable:用户对共享目录是否可写。注意:即使这里设置为yes,用户对linux中对应目录没有写权限,也不能进行写操作。
- browserable:设置用户是否可浏览到该共享目录。若设置为no,目录将隐藏,但通过直接输入共享目录名称,仍然可以访问。
- valid users:可以访问共享目录的用户列表
- invalid users:禁止访问共享目录的用户列表。
- public:设置共享目录是否允许匿名访问。
- path:设置共享目录对一个linux文件系统中的哪个目录。
5.特殊设置选项
在主配置文件中,还有两个特殊的节:这两个节的设置是针对在samba服务器中拥有账号的用户进行的。
[homes]
comment = Home Directories
browseable = 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
[homes]
:
- comment:对共享目录的注释说明。
- writable:用户对共享目录是否可写。注意:即使这里设置为yes,用户对linux中对应目录没有写权限,也不能进行写操作。
- browserable:设置用户是否可浏览到该共享目录。若设置为no,目录将隐藏,但通过直接输入共享目录名称,仍然可以访问。
- valid users:可以访问共享目录的用户列表
- invalid users:禁止访问共享目录的用户列表。
- create mode:在home目录中创建文件时,对文件设置的权限属性(如设置为0664)
- directory mode:在home目录中创建目录时设置的权限属性(如设置为0775)
- read only:设置目录是否为只读模式。
[printers]
:
- comment:对打印机的注释说明。
- writable:该选项必须设置为no
- browserable:设置其他用户是否可浏览到打印机
- path:设置打印机spool目录
- guest ok:设置guest用户是否可使用打印机
- printable:打印机是否可用,设为yes才
五、匿名服务器配置
如果samba服务器中的文件不需要用户登录就可以访问,则在全局设置中将security设置为share。
实例:架设一台samba服务器。
该服务器用来向局域网内各客户机提供软件共享服务,常用的软件的安装包都存放在服务器的/soft目录中,要求用户只能从该目录中读取文件,而不能修改目录中的文件。另外,各客户端还可利用samba服务器进行临时文件交换,即任何用户有权限将文件写到服务器的某一个目录(假设为/tmpdoc)。
1、创建目录:/soft,/tmpdoc
命令:mkdir soft tmpdoc
2.修改soft的目录权限
因为所有用户都要有读取权限,该目录权限应设置为755。
命令:chmod 755 soft
3.将常用软件赋值到/soft目录下
命令:cp a b
4.修改tmpdoc属性
由于匿名用户可以在/tmpdoc目录中写入数据,需要将该目录的属性修改为nobody(samba中使用匿名登录,默认的用户名为nobody)。
命令:chown nobody:nobody tmpdoc
5.修改配置文件
修改/etc/samba/smb.conf文件,删除原来的内容,输入以下内容:
[global]
workgroup=WORKGROUP
server string=summer
security=share
log file=/var/log/samba/log.%m
max log size = 50
#============================ Share Definitions ==============================
[soft]
comment = user's soft
path=/soft
public=yes
writable=no
[tmpdoc]
comment = linshi directory
path = /tmpdoc
guest ok = no
writable = no
6.保存配置文件
在输入配置选项时,有可能输入错误的字符。samba软件包中提供了一个检查命令testparm,可通过该命令对配置文件进行检查。
可以输入:testparm
查看是否有误
7.重启服务器
命令:
service smb restart
service nmb restart
8.测试
关闭win和linux的防火墙,然后在windows我的电脑查看输入:\\ip地址
六、需登录samba服务器
创建的匿名samba服务器的权限控制很简单,分为只读和可读写两种权限。若需要对权限进一步细化,则可通过设置security选项为user,按用户控制权限。
这种方式操作步骤要复杂一些,首先需要在服务器端添加用户和用户组,并用smbpasswd设置用户的权限,然后在smb.conf配置文件中对不同用户和用户组的权限进行设置。
1.创建用户
useradd -s /sbin/nologin test
2.将用户添加到samba密码文件中
smbpasswd -a test
3.准备目录
mkdir /test
4.修改权限
chmod 700 /test
chown test.test /test
5.修改配置文件
[suer_test]
comment = test_zhuangyong
path = /test
guest ok = no
writable = yes
6.测试
重启服务器:service smb restart
service nmb restart
在win上输入:\\ip地址
七、访问windows系统
通过smb.conf配置文件进行操作,是将linux配置为samba服务器,该服务器主要是让Windows用户访问linux系统中的文件。
如果要从linux系统访问Windows系统*享的资源该如何操作?
挂载到linux文件系统
共享Windows系统中的文件,最常用的方法之一就是使用mount命令将Windows系统中的共享目录挂载到linux系统中。
1.先在Windows*享一个文件夹。共享完成,在我的电脑—地址栏输入:\本地物理机ip地址。
在桌面创建文件,并在高级共享选择共享文件夹
2.创建挂载点
命令:mkdir /mnt/windows
3.使用挂在命令
命令:mount -o username=administrator //windiip地址/test /mnt/windows