许多桌面计算机都是以Windows操作系统为基础,如何使Windows可以访问linux服务器中的公共资源,是一个复杂的问题。
使用服务器信息块(Server Message Block)协议,可以共享文件、磁盘、目录、打印机等资源。
linux中的samba内置SMB协议,使用SMB实现局域共享资源,使Windows客户可访问这些公共资源。
在linux中架设一个samba服务器,可供客户端共享文件、打印机等资源。
SMB协议是局域网上共享文件/打印机的一种协议,该协议可以为网络内部的Windows和linux主机提供文件系统、打印服务。
通过“NetBIOS over TCP/IP”使用samba不但能与局域网络主机共享资源,也能与全世界的计算机共享资源。
samba是用来实现SMB的一种软件,该软件是运行在linux环境里的自由软件。
命令: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个软件包。
命令1:yum -y install samba
命令2:rpm -ivh samba-3.6.9-164.e16.x86_64.rpm
安装好samba并启动其守护进程后,便可以提供文件共享服务。
samba的守护进程有两个:smbd和nmbd。
如果没有启动nmbd进程,客户机只能使用ip地址访问samba服务器中的共享资源,启动nmbd进程后,就可以使用设定的主机名访问公共资源。如samba服务器的ip地址为192.168.1.11,共享资源名称为soft,主机名为samba1,若未启动nmbd进程,只能按以下方式访问共享目录soft:
\\192.168.1.11\soft
若启动了nmbd进程,还可以使用以下方式方式目录soft
\\samba1\soft
[root@summer ~]# service smb start
启动 SMB 服务: [确定]
[root@summer ~]# service nmb start
启动 NMB 服务: [确定]
其余命令:
service nmb status
service nmb restart
service nmb stop
若需要samba随系统的启动而启动,可以执行setup命令进行设置。
samba服务的配置文件是/etc/samba/smb.conf
。
该文件几乎包含了samba系统程序运行时所需的所有的配置信息。在smb.conf配置文件中,以分节形式分别配置不同的选项,除了[gloabal]节以外,其他每一节都看做是一个共享资源。
命令:
[root@summer samba]# wc -l < smb.conf
288
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配置的范例格式,默认不生效,可通过去掉前面的分号,并加以修改来设置想使用的功能。
#--------------
#
#======================= 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服务器一些常用选项,如属于什么工作组、名称等。
安全选项用来设置访问samba服务器时的安全设置,常用的安全选项如下。
security:设置samba服务器的基本安全级,包括share、user、server和domain 4个值。
根据设置值的不同,用户访问samba服务器共享资源时的认证方式也不同
设置为user(默认值),要求用户提供用户名和密码进行验证;设置为share时,不需要任何认证;
设置为server时,与user安全级类似;
设置为domain时,要求网络中存在一台NT PDC,用户和密码将在NT PDC中去验证。
注:一般只使用share和user两个安全级,其他两个很少用。
安全选项用来设置访问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.
#============================ 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
...
在主配置文件中,还有两个特殊的节:这两个节的设置是针对在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]
:
[printers]
:
如果samba服务器中的文件不需要用户登录就可以访问,则在全局设置中将security设置为share。
该服务器用来向局域网内各客户机提供软件共享服务,常用的软件的安装包都存放在服务器的/soft目录中,要求用户只能从该目录中读取文件,而不能修改目录中的文件。另外,各客户端还可利用samba服务器进行临时文件交换,即任何用户有权限将文件写到服务器的某一个目录(假设为/tmpdoc)。
命令:mkdir soft tmpdoc
因为所有用户都要有读取权限,该目录权限应设置为755。
命令:chmod 755 soft
命令:cp a b
由于匿名用户可以在/tmpdoc目录中写入数据,需要将该目录的属性修改为nobody(samba中使用匿名登录,默认的用户名为nobody)。
命令:chown nobody:nobody tmpdoc
修改/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
在输入配置选项时,有可能输入错误的字符。samba软件包中提供了一个检查命令testparm,可通过该命令对配置文件进行检查。
可以输入:testparm
查看是否有误
命令:
service smb restart
service nmb restart
关闭win和linux的防火墙,然后在windows我的电脑查看输入:\\ip地址
创建的匿名samba服务器的权限控制很简单,分为只读和可读写两种权限。若需要对权限进一步细化,则可通过设置security选项为user,按用户控制权限。
这种方式操作步骤要复杂一些,首先需要在服务器端添加用户和用户组,并用smbpasswd设置用户的权限,然后在smb.conf配置文件中对不同用户和用户组的权限进行设置。
useradd -s /sbin/nologin test
smbpasswd -a test
mkdir /test
chmod 700 /test
chown test.test /test
[suer_test]
comment = test_zhuangyong
path = /test
guest ok = no
writable = yes
重启服务器:service smb restart
service nmb restart
在win上输入:\\ip地址
通过smb.conf配置文件进行操作,是将linux配置为samba服务器,该服务器主要是让Windows用户访问linux系统中的文件。
如果要从linux系统访问Windows系统中共享的资源该如何操作?
挂载到linux文件系统
共享Windows系统中的文件,最常用的方法之一就是使用mount命令将Windows系统中的共享目录挂载到linux系统中。
在桌面创建文件,并在高级共享选择共享文件夹
命令:mkdir /mnt/windows
命令:mount -o username=administrator //windiip地址/test /mnt/windows