Linux系统管理17:Samba服务器

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

上一篇:第十四天学习linux


下一篇:使用Samba或NFS实现文件共享