标签:建议 mkdir font cli rom mes 主机名 网上 none
Linux 服务器搭建之Samba服务一、Samba服务基础
Samba是著名的开源软件项目之一,它在Linux/UNIX系统中实现了微软的SMB/CIFS网络协议,从而使得跨平台的文件共享变得更加容易。在部署Windows、linux/UNIX混合平台的企业环境时,选用Samba可以很好地解决不同系统之间的文件互访问题。
1、Samba软件的组成
1.1)、Samba软件包的构成
在RHEL6.5系统的DVD安装光盘中可以找到与Samba相关的几个软件包,主要包括服务端软件Samba、客户端软件samba-client,用于提供服务端和客户端程序的公共组件samba-common。
大部分软件包已经随RHEL6.5系统默认安装好了,用户可以查询系统中samba相关软件包的安装情况。
[root@twgdh ~]# rpm -qa | grep "^samba" samba-client-3.6.9-164.el6.x86_64 ……//samba服务器软件包 samba-common-3.6.9-164.el6.x86_64 ……//samba通用工具和库文件 samba-3.6.9-164.el6.x86_64 ……//samba提供服务器程序文件 samba-winbind-3.6.9-164.el6.x86_64 ……//它允许Linux/UNIX系统利用Windows NT的用户帐号信息。 samba4-libs-4.0.0-58.el6.rc4.x86_64 ……//samba相关依赖包 samba-winbind-clients-3.6.9-164.el6.x86_64
只需要从RHEL6.5光盘中找到安装包文件samba-3.6.9-164.elb.x86_64.rpm并进行安装即可。
1.2)、Samba服务的程序组件
Samba服务器提供smbd、nmbd两个服务程序,分别完成不同的功能。其中,smbd负责为客户机提供服务器中共享资源(目录和文件等)的访问;nmbd负责提供基于NetBIOS协议的主机名称解析,以便为Windows网络中的主机进行查询服务。
安装好samba软件包以后,在RHEL6.5系统中会添加名为smb和nmb的标准系统服务,管理员可以通过service工具来控制Samba服务的启动与终止。
[root@twgdh ~]# service smb start 启动 SMB 服务: [确定] [root@twgdh ~]# service nmb start 启动 NMB 服务: [确定]
使用netstat命令可以验证服务进程状态,其中smbd程序负责监听TCP协议的139端口(SMB协议)、445端口(CIFS协议),而nmbd服务程序负责监听UDP协议的137~138端口(NetBIOS协议)。
2、主配置文件smb.conf
Samba服务的配置文件位于/etc/samba/目录中,其中smb.conf是主配置文件。在smb.conf文件中,以“#”号开始的行表示注释性的文件,以“;”开始的行表示是位置样例。在配置共享文件夹时,用户可以参考文件中提供的样例行进行设置。删除注释行、样例行及空行以外的内容,才是Samba服务器的有效配置。例如,使用grep命令可以过滤出smb.conf文件中的有效配置。
[root@twgdh ~]# grep -v "#" /etc/samba/smb.conf | grep -v "^;" | grep -v "^$" [global] workgroup = MYGROUP server string = Samba Server Version %v log file = /var/log/samba/log.%m max log size = 50 security = user passdb backend = tdbsam load printers = yes cups options = raw [homes] comment = Home Directories browseable = no writable = yes [printers] comment = All Printers path = /var/spool/samba browseable = no guest ok = no writable = no printable = yes
从以上内容可以看出,smb.conf文件中的配置内容默认包括以下三部分。
■ [global] 全局设置:这部分配置项的内容对整个Samba服务器都有效。
■ [homes] 宿主目录共享设置:设置Linux用户的默认共享,对应用户的宿主目录。当用户访问服务器中与自己同名的共享目录时,通过验证后将会自动映射到该用户的宿主文件夹中。
■ [printers] 打印机共享位置:如果需要共享打印机设备,可以在这部分进行配置。
若需要在smb.conf文件中设置新的共享文件夹,只需要增加一段如“[myshare]”开始的共享设置即可,其中“myshare”为用户自定义的共享名。新的共享文件夹设置可以参考“[homes]”和“[printers]”部分内容。
Samba服务器的常见配置项及含义说明
配置项 | 设置服务器所在的工作组名称。 |
server string | 设置服务器的说明文字 |
security | 设置服务器的安全级别,可设为以下四个值中的一个:share(可匿名访问)、user(需由本服务器验证用户名及密码)、server(需指定另一台服务器来验证用户名及密码)、domain(由Windows域控制器验证用户名及密码) |
log file | 设置Samba服务器的日志文件,默认设置为“/var/log/samba/log.%m”,表示将日志文件保存到/var/log/samba/目录中,按每个客户机建立一个日志文件,其中“%m”变量表示客户端主机名或IP地址 |
comment | 设置对应共享目录的注释、说明信息 |
path | 设置对应共享目录在服务器中的文件夹路径 |
browseable | 设置该共享目录在“网上邻居”中是否可见,设置为no时相当于影藏共享目录 |
guest ok | 设置是否所有人都可以访问共享目录,与“public”配置项的作用相同 |
writable | 设置该共享目录是否可写,与“read only”配置项的作用相反 |
passwd backend | 设置共享账户文件的类型,默认使用tdbsam(TDB数据库文件)。若网络内拥有LDAP目录认证,这里可以改用ldapsam数据库文件;另外,若要兼容旧版的Samba密码文件,也可以将类型设为smbpasswd |
Samba服务器提供了一个配置文件检查工具—testparm程序,使用testparm工具可以对smb.conf配置文件的真确性进行检查。
二、构建文件共享服务
1、构建可匿名的共享
可匿名访问的共享使用于公开的资源分享,一般只建议提供只读访问。由于匿名共享不需要验证用户名和密码(或允许提供任意用户名、密码)就可访问,在安全性要求不高的情况下,可以非常方便、快捷地与其他主机共享资源。
设置匿名共享文件夹时,在主配置文件smb.conf中主要调整两个地方即可:其一,可以将默认的安全级别修改为share;其二,添加一段共享目录配置。其他配置项根据实际需要进行更改。
例如,若要将本地挂载的光盘目录/media/发布为共享文件夹,共享名为rhel6,可以参照以下步骤进行设置。
[root@twgdh ~]# mount /dev/cdrom /media/ ……//挂载rhel6.5的dvd光盘 [root@twgdh ~]# vim /etc/samba/smb.conf [global] workgroup = MYGROUP ……//使用Windows主机的默认工作组 security = share ……//默认允许匿名访问 ……//省略部分内容 [rhel6] ……//用户访问共享时显示的文件名 comment = RHEL 6.5 DVD directory ……//注释内容,随便写 path = /media/ ……//指定真实共享目录存储的位置 public = yes ……//是否为公共的 read only = yes ……//只读 [root@twgdh ~]# service smb reload 重新载入 smb.conf 文件: [确定]
配置完毕后,就可以从Windows客户机或Linux客户机中浏览并匿名访问此共享了。
注意需要关闭iptables和Selinux!
2、构建需要用户验证的共享
匿名共享虽然用起来非常方便,但因为任何人都可以访问到共享的文件数据,在某些时候可能会导致信息的泄露。
设置用户验证的共享文件夹时,在主配置文件smbl.conf中同样需要调整两个地方:其一,将默认的安全级别修改为share;其二,添加共享目录配置,指定用户权限。在此之前,还需要先创建授权的共享账户。
2.1)、建立Samba用户数据库
为了区别于Linux主机中的系统用户,通常将用于访问Samba共享资源的用户成为共享用户。Samba服务器使用独立的共享账号数据库文件,其中的账号名称必须有与它同名的系统用户相对应,以便主机对共享访问的读写权限进行控制;但共享用户的密码时额外设置的,可以与系统用户的密码不一样。
Samba共享用户的账号数据库文件默认位于/var/lib/samba/private/passdb.tdb,是一个经过加密的文件,其中保存了Samba用户的账号名称、登录密码、账号可用状态等信息。使用pdbedit工具可以对共享用户进行管理。
[root@twgdh ~]# useradd vina ……//先添加系统用户vina [root@twgdh ~]# pdbedit -a -u vina ……//再添加共享用户vina new password: ……//设置共享用户vina的密码 retype new password: ……//重复输入密码进行确认 Unix username: vina NT username: Account Flags: [U ] User SID: S-1-5-21-3721989042-1553083320-1330393282-1000 Primary Group SID: S-1-5-21-3721989042-1553083320-1330393282-513 ……//省略部分内容
当指定的Samba用户不再需要使用时,可以通过pdbedit工具进行删除,只要结合“-x”选项并指定Samba用户的名称即可,“-L”选项用来列出所有Samba用户,“-v”选项可以输出更详细的内容。
2.2)、设置用户访问授权
若要使用用户验证的Samba共享,应将security安全级别提升为“user”。共享目录的用户授权设置主要由“valid users”、“write list”配置项指定。当需要授权多个共享用户时,以逗号或空格进行分隔。如果需要授权一个用户组,可以使用“@组名”的形式,但需要为组内的每个系统用户都创建对应的Samba共享用户。
例如,若要将本地目录/opt/mytools/发布为共享文件夹,共享名为tools,要求只有共享用户vanko、hunter能够访问,其中hunter用户具有写入权限,可以参照以下步骤。
■ 创建共享用户vanko、hunter,确认共享目录。
[root@twgdh ~]# useradd vanko [root@twgdh ~]# useradd hunter [root@twgdh ~]# pdbedit -a -u vanko [root@twgdh ~]# pdbedit -a -u hunter [root@twgdh ~]# mkdir /opt/mytools
■ 修改smb.conf配置文件,添加名为tools的共享目录配置段。
[root@twgdh ~]# vim /etc/samba/smb.conf [global] security = user ……//提升默认的安全级别 [tools] comment = zhe shi bei zhu!! ……//备注 path = /opt/mytools ……//文件路径 public = no ……//是否为公共的 read only = yes ……//是否为只读的 valid users = vanko,hunter ……//设置指定用户可以进行访问 write list = hunter ……//指定可以写入的用户
■ 重新加载smb.conf文件中的配置,或重启smb服务。
[root@twgdh ~]# service smb reload 重新载入 smb.conf 文件: [确定]
2.3)、确定目录访问授权
通过Samba服务器共享本地的文件夹时,用户最终是否拥有读取、写入权限,除了需要设置用户授权以外,还要满足一个前提条件—在服务器本集中,与共享用户同名的系统用户对发布为共享的本地文件夹(如/opt/mytools)必须要有相应的读取、写入权限。
因此,在上一步骤的例子中,还需要调整/opt/mytools目录的权限,使vanko用户能够读取,hunter用户能够写入。这里为了做实验方便,将/opt/mytools文件夹的权限设置为777。
[root@twgdh ~]# chmod 777 /opt/mytools/
另外,当通过共享目录上传文档时,对于共享用户所上传的文件,创建子目录的默认权限可以分别使用配置项“directory mask”、“create mask”进行指定。例如,若要使用户访问tools共享时,所上传的目录的默认权限为755,文件的默认全向为644,可以参考以下步骤在[tools]配置段添加相关内容。
[toools] directory mask = 0755 ……//创建目录默认权限 create mask = 0644 ……//创建文件默认权限 [root@twgdh ~]# service smb reload 重新载入 smb.conf 文件: [确定]
重载服务之后即可使用,在客户机上登录使用!
标签:建议 mkdir font cli rom mes 主机名 网上 none
原文地址:http://blog.51cto.com/houliangjin/2066474