办公必备文件服务器之Samba应用详解

简介:
在国内,不论是大企业还是小公司,都使用windows操作系统作为桌面操作系统来办公。工作时,大家难免要传递一些共享文件。这样文件共享服务器就诞生了。虽然用windows也可以作文件共享服务器,但是三天两头的重启服务器,谁都会受不了的。今天我们就来了解一下Linux下的开源文件服务器Samba。
获取和安装Samba
Samba是目前Linux/UNIX与windows之间共享文件最流行的软件。因此,大部分Linux发行版都已经自带了Samba的安装包,我们可以通过不同发行版的检测命令来检查当前系统是否已经安装了Samba,这里以Centos 5.5 x64环境来为大家讲述如何使用Samba。
检查当前系统中是否安装了Samba:
# rpm -qa|grep samba
如看到如下图所示,说明你已经安装了Samba。
01
如果你没有看到如上信息,说明你在安装系统的时候没有安装Samba。那你就需要光在光盘,然后安装Samba。
# mount -t iso9660 /dev/cdrom /mnt/
# # rpm -ivh /mnt/CentOS/samba-3.0.33-3.28.el5.x86_64.rpm
直接安装rpm包唯一不足的地方是,你需要解决麻烦的依赖关系。如下图所示:
02
所以建议你最好使用YUM来安装。
# yum -y install samba
它会为你解决麻烦的依赖关系。如下图所示:
03
正在下载安装。
04
你也可以使用源码包来安装Samba。
# tar zxvf samba-3.6.1.tar.gz     解压缩
# cd samba-3.6.1    进入解压目录
# find ./ -name configure   这里的configure并不在解压出来的根目录。所以需要查找一下它的位置。
05
# cd source3   进入configure所在目录
下面可选参数大家以实际环境为准来设定。
# ./configure --prefix=/usr/local/samba    指定安装路径
--enable-cups    开启CUPS打印系统的支持,默认自动检测。如果系统安装了CUPS开发库,那么就会自动打开该系统的支持
--enable-iprint    开启iPrint支持,如果支持CUPS,那么这个是默认打开的。
--with-ldap     开启LDAP支持,默认开启,如果想将Samba与其它一些系统认证集成到一起,LDAP是个不错的选择,同样需要系统中安装有LDAP开发库
--with-ads    开启微软活动目录支持,默认为自动检测,当系统中存在Kerberse开发库时,会打开这个选项
--with-smbmount    是否包含smbmount命令,默认是不包含的
--with-cifsmount    是否包含cifsmount支持以加载CIFS文件系统,默认包含
--with-pam   是否启用PAM支持,默认不支持,但建议打开这个选项,这个选项也需要系统中存在PAM的开发文件
--with-quotas   是否支持磁盘限额,默认不支持,但如果为用户提供空间,那么最好打开限额的支持
--with-utmp    是否开启utmp审计,utmp审计会记录用户登录、退出等操作,默认为支持。
--with-acl-support   是否支持ACL访问控制,默认为不支持,但最好打开
--with-aio-support   是否支持异步I/O模式,默认为不支持,异步I/O可以提高性能,但一旦系统出现故障,可能导致部分数据丢失
--with-winbind   是否支持Winbind,Winbind是一种与Windows集成的方式
# make && make install    编译并安装
Samba的进程和常用命令
  • nmbd 这个进程为Windows网络提供NetBIOS Name Service和WINS服务,也就是支持Windows资源列表和浏览功能。
  • smbd 这个进程用来提供共享功能,同时对共享请求进行认证。
  • smbpasswd 相当于adduser、passwd。Samba使用它来对计算机域账号和用户账号进行管理。
        -a 只有root用户可以使用。添加用户到Samba密码文件,如果用户已经存在,它会认为是修改用户密码而不是添加用户
        -c 指定不同的配置文件
        -d 临时禁止某个用户,参数为用户名
        -e 激活某个用户
        -x 永久删除某个用户
        -n 在添加或修改用户时,加上这个参数,smbpasswd将不提示输入密码,而直接把密码设置为空
        -r 修改远程计算机上的密码
        -U 当修改远程密码时,使用这个参数指定连接到远程机器时的用户名
        -w 当Samba把LDAP作为账号和密码后台时,把这个参数后面指定的字符串作为LDAP服务器连接的密码
        -W 与-w类似,不同的是,-W会提示用户输入密码,而不是读取字符串
        -i 使用这个参数时,如果Samba是域的PDC,那么添加一个信任域账号,以这个信任域账号与其他域建立信任关系
        -R 指定smbpasswd查询名字时的顺序
        -m 告诉smbpasswd当前处理的不是一个用户账号,而是一个计算机域账号
  • testparm 这个命令用来检查smb.conf的配置语法是否正确。
        -s 自动模式,使用这个参数时,不会提示用户输入回车,就直接打印配置文件信息
        -t 以不同的编码格式输出信息,默认是当前的编码环境
        --parameter-name 打印指定的配置选项,例如:testparm --parameter-name “workgroup”
        --section-name 打印指定的小节内容,例如:testparm --section-name software
        -v 打印出当前Samba版本支持的配置选项及默认值
  • smbstatus 显示当前Samba服务器的状态
  • smbclient 是一个可以模拟Windows客户端同时具有Samba特点的小工具,它可以访问Winddows或Samba共享
        -L 指定要访问的共享的IP地址或主机名
        -N 不提示输入密码
        -U 指定要使用的访问账号
        以FTP方式访问共享:smbclient //192.168.1.10/software -N
  • net 大致跟Windows系统的net一样
  • tdbdump:打印 TDB 文件的内容
  • tdbbackup:备份并验证 TDB 文件
  • tdbtool:创建、查看并修改 TDB 文件
Samba的基本配置
smb.conf是Samba的主配置文件。对于随发行版一起安装的Samba来说,这个配置文件的路径是是/etc/samba/smb.conf。
对于源码编译安装的Samba来说,配置文件就取决于编译者的设置了。假如我们将Samba安装到/usr/local/samba/目录,默认是不会安装smb.conf配置文件的,需要我们手工在/usr/local/samba/lib/目录下创建smb.conf。
或者我们可以这样拷贝一个smb.conf配置文件:
# cp /root/samba-3.6.1/examples/smb.conf.default /usr/local/samba/lib/smb.conf
smb.conf主配置文件由两个部分组成,第一部分是全局([global])选项,控制了整个Samba服务器的行为,第二部分是各种共享的配置,以[共享名]小节区分。
我们先来了解一下smb.conf的各个参数:
全局部分[global]有
  • workgroup 工作组名称。
  • server string 主机说明字符串
  • hosts allow 可访问此服务的IP范围
  • hosts deny 拒绝访问此服务的IP范围
  • interfaces 如果有多个网络接口,就必须在这里指定
  • unix charset Samba所在的Linux计算机上所使用的字符编码
  • dos charset Windows计算机浏览Samba共享时,Samba显示时使用的字符编码
  • security 文件共享安全级别,可选项有share、user、server、domain
  • encrypt passwords 是否使用加密密码
  • log file 设置Samba服务器的日志文件
  • max log size 设置日志文件的最大容量,默认为50,默认单位是KB
  • usermap name 指定名称映射文件路径
共享部分[share]有
  • path 指定要共享的目录的路径
  • comment 针对要共享的目录的说明
  • read only 指定共享是否为只读,可以使yes|no或者true|false。当这个共享设置为只读时,所有windows共享用户都不能写入,注意一个共享是否只读不光取决于Samba的设定,同时还取决于该共享的真实目录的权限。
  • writable 指定共享目录是否可写,与read only作用相反。当二者冲突时,以后一个设定为准。
  • browseable 是否在浏览资源时看见该共享,默认为yes。
  • create mask 创建文件时的默认权限
  • directory mask 创建目录时的默认权限
  • valid users 有效用户,只有被许可的有效用户才能访问共享
  • write list 具有写入权限的用户列表
  • guest ok 是否允许来宾访问
Samba的变量
  • Samba有很多不同的变量,这些变量可以帮助我们完成一些动态显示。
  • %U 表示当前用户名
  • %G 当前用户的主要组
  • %h Samba所在的Linux主机名
  • %m Windows访问者的计算机主机名。当Samba通过445与用户连接时,不能提供这个变量的显示。
  • %L Samba计算机的netbios名字,即[global]中设置的netbios name。不过当Windows客户端不能解析该名称时,将显示服务器的IP地址。
  • %M Windows客户端的主机名,如果没有则显示IP地址。
  • %R 双方通信的协议级别,可能是CODE、COREPLUS、LANMAN1、LANMAN2、或NT1
  • %d 为当前请求提供服务的进程ID
  • %a 客户端机器的类型,例如:Win95、Samba、OS2、WinNT、Win2K3
  • %I 客户端IP地址
  • %i Samba服务器IP地址
  • %T 当前日期和时间
  • %D 当前用户所在的域或工作组
  • %$ Samba服务器的环境变量
  • %S 当前服务名,例如用户正在浏览资源,则这个%S就是$IPC
  • %P 当前服务的根目录
  • %u 当前服务中的用户名
  • %g 当前服务中的用户所在主要组
  • %H %u用户所在的家目录(注意是Linux系统用户和目录)
建立一个可匿名访问的文件共享服务器
配置Samba主配置文件
# vi /usr/local/samba/lib/smb.conf
[global] 
workgroup = workgroup 
server string = Samba server 
security = share 
[software share] 
path = /var/software 
comment = "Shared Software" 
read only = yes 
guest ok = yes
配置动态链接库路径
# vi /etc/ld.so.conf
将Samba要用到的链接库路径加入到ld.so.conf:
/usr/local/samba/lib/
01
# ldconfig  重新载入链接库信息
检查Samba是否配置正确
# /usr/local/samba/bin/testparm
QQ截图20111116153438
如果没有什么错误提示,我们就可以尝试启动服务了。
建立共享目录和创建测试文件
# mkdir –p /var/software
# cd /var/software
# touch test1
启动Samba服务
# /usr/local/samba/sbin/nmbd start
# /usr/local/samba/sbin/smbd start
检查Samba服务的监听状态
# netstat -anput|grep mbd
02
使用Linux主机访问Samba
03
使用Windows主机访问Samba
04
注意:如果您不能正常访问,很可能是防火墙的问题,请检查。
建立一个比较安全的文件共享服务器
配置Samba主配置文件
# vi /usr/local/samba/lib/smb.conf
[global] 
workgroup = workgroup 
server string = Samba server 
security = user    提升用户级别为user 
hosts allow = 192.168.1. 192.168.81.   指定可访问共享的IP范围 
username map = /usr/local/samba/lib/smbusers     指定用户映射文件路径 
[software] 
path = /var/software 
comment = "Shared Software" 
read only = no 
public = no   设置访问非公开 
vaild users = test,@root   指定有效的用户和用户组 
write list = root  具有写入权限的用户 
directory mask = 0744   指定创建目录的默认权限 
create mask = 0600  制定创建文件的默认权限
添加可用用户
# useradd test
# /usr/local/samba/bin/smbpasswd -a test
# /usr/local/samba/bin/smbpasswd -a root
这里test和root用户的samba密码都是testsamba
05
拷贝用户名称映射文件
# cp /root/samba-3.6.1/packaging/RHEL-CTDB/setup/smbusers /usr/local/samba/lib/
06
启动Samba服务
# /usr/local/samba/sbin/nmbd start
# /usr/local/samba/sbin/smbd start
使用Linux主机访问Samba
 
使用Windows主机访问Samba
08
10 
到此Samba的搭建、配置、应用就告一段落了。。

本文转自 cyr520 51CTO博客,原文链接:http://blog.51cto.com/cyr520/716317
相关文章
|
2月前
|
运维 应用服务中间件 网络安全
自动化运维的利器:Ansible在服务器管理中的应用
【8月更文挑战第28天】本文深入探讨了Ansible在简化和自动化服务器管理工作中的强大功能及其实际应用。通过浅显易懂的语言和具体示例,展示了如何利用Ansible进行批量配置、部署应用以及执行系统管理任务,旨在为读者提供一套完整的解决方案,以便更好地理解和应用Ansible,从而提高工作效率和减轻运维负担。
|
6天前
|
存储 关系型数据库 API
深入理解后端技术:构建高效、可扩展的服务器端应用
本文将探讨后端开发的核心概念和技术,包括服务器端编程、数据库管理、API设计和安全性等方面。通过深入浅出的方式,让读者了解如何构建高效、可扩展的后端系统。我们将从基本的后端框架开始,逐步深入到高级主题,如微服务架构和容器化部署。无论您是初学者还是有经验的开发人员,都能在本文中找到有价值的信息和实用的建议。
|
14天前
|
设计模式 数据库连接 PHP
PHP中的设计模式:如何提高代码的可维护性与扩展性在软件开发领域,PHP 是一种广泛使用的服务器端脚本语言。随着项目规模的扩大和复杂性的增加,保持代码的可维护性和可扩展性变得越来越重要。本文将探讨 PHP 中的设计模式,并通过实例展示如何应用这些模式来提高代码质量。
设计模式是经过验证的解决软件设计问题的方法。它们不是具体的代码,而是一种编码和设计经验的总结。在PHP开发中,合理地使用设计模式可以显著提高代码的可维护性、复用性和扩展性。本文将介绍几种常见的设计模式,包括单例模式、工厂模式和观察者模式,并通过具体的例子展示如何在PHP项目中应用这些模式。
|
16天前
|
Kubernetes Java Maven
揭秘无服务器革命:Quarkus如何让Java应用在云端“零”负担起飞?
本文介绍如何使用Quarkus从零开始开发无服务器应用,通过示例代码和详细步骤引导读者掌握这一技术。无服务器架构让开发者无需管理服务器,具有自动扩展和成本效益等优势。Quarkus作为Kubernetes Native Java框架,优化了Java应用的启动速度和内存使用,适合无服务器环境。文章涵盖环境搭建、项目创建及部署全流程,并介绍了Quarkus的扩展性和监控工具,助力高效开发与应用性能提升。
24 9
|
13天前
|
存储 缓存 前端开发
优化 SSR 应用以减少服务器压力
优化 SSR 应用以减少服务器压力
|
16天前
|
监控 JavaScript Java
部署应用程序到服务器
部署应用程序到服务器
35 3
|
1月前
|
弹性计算 安全 测试技术
阿里云的ECS云服务器应用例
在未来的远程办公时代,“未来空间”打造了一个高效、灵活且安全的在线协作平台,采用阿里云ECS云服务器作为核心基础设施。ECS提供按需付费的弹性计算能力,确保平台响应迅速并能应对流量高峰。其集成的安全特性如安全组和云盾,构建了多层次防护体系,保障数据安全。此外,ECS与阿里云其他服务无缝集成,如RDS、CDN和OSS,实现了高效的数据管理和全球低延迟访问。结合阿里云的机器学习服务,“未来空间”开发了智能会议摘要和情绪分析功能,提升了用户体验。凭借ECS的强大支持,该平台不仅实现了全球团队的高效协作,还赢得了市场的广泛认可,成为远程办公领域的标杆。
|
2月前
|
负载均衡 算法 应用服务中间件
负载均衡技术在Web服务器集群中的应用
【8月更文第28天】随着互联网的发展和用户对Web服务需求的增长,单台服务器很难满足大规模访问的需求。为了提高系统的稳定性和扩展性,通常会采用Web服务器集群的方式。在这种架构中,负载均衡器扮演着至关重要的角色,它能够合理地分配客户端请求到不同的后端服务器上,从而实现资源的最优利用。
75 2
|
19天前
|
安全 关系型数据库 API
深入理解后端技术:构建高效、可靠的服务器端应用
本文将深入探讨后端技术的核心概念和最佳实践,包括服务器端编程、数据库管理、API设计与开发等方面。我们将从基础开始,逐步深入,帮助读者建立起对后端开发的全面理解,从而能够独立构建高效、可靠的服务器端应用。
35 0
|
2月前
|
缓存 数据安全/隐私保护 UED
代理服务器在HTTP请求中的应用:Ruby实例
代理服务器在HTTP请求中的应用:Ruby实例
下一篇
无影云桌面