办公必备文件服务器之Samba应用详解[转帖]_VMware, Unix及操作系统讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  VMware, Unix及操作系统讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3504 | 回复: 0   主题: 办公必备文件服务器之Samba应用详解[转帖]        下一篇 
zxl1990
注册用户
等级:上尉
经验:663
发帖:59
精华:1
注册:2012-12-19
状态:离线
发送短消息息给zxl1990 加好友    发送短消息息给zxl1990 发消息
发表于: IP:您无权察看 2012-12-19 11:08:45 | [全部帖] [楼主帖] 楼主

在国内,不论是大企业还是小公司,都使用windows操作系统作为桌面操作系统来办公。工作时,大家难免要传递一些共享文件。这样文件共享服务器就诞生了。虽然用windows也可以作文件共享服务器,但是三天两头的重启服务器,谁都会受不了的。今天我们就来了解一下Linux下的开源文件服务器Samba。

获取和安装Samba

Samba是目前Linux/UNIX与windows之间共享文件最流行的软件。因此,大部分Linux发行版都已经自带了Samba的安装包,我们可以通过不同发行版的检测命令来检查当前系统是否已经安装了Samba,这里以Centos 5.5 x64环境来为大家讲述如何使用Samba。

检查当前系统中是否安装了Samba:

# rpm -qa|grep samba


如看到如下图所示,说明你已经安装了Samba。

北京联动北方科技有限公司

如果你没有看到如上信息,说明你在安装系统的时候没有安装Samba。那你就需要光在光盘,然后安装Samba。

# mount -t iso9660 /dev/cdrom /mnt/
# # rpm -ivh /mnt/CentOS/samba-3.0.33-3.28.el5.x86_64.rpm


直接安装rpm包唯一不足的地方是,你需要解决麻烦的依赖关系。如下图所示:

北京联动北方科技有限公司

所以建议你最好使用YUM来安装。

# yum -y install samba


它会为你解决麻烦的依赖关系。如下图所示:

北京联动北方科技有限公司

正在下载安装。

北京联动北方科技有限公司

你也可以使用源码包来安装Samba。

# wget


http://www.samba.org/samba/ftp/stable/samba-3.6.1.tar.gz      获取源码包

# tar zxvf samba-3.6.1.tar.gz     解压缩
# cd samba-3.6.1    进入解压目录
# find ./ -name configure   这里的configure并不在解压出来的根目录。所以需要查找一下它的位置。


北京联动北方科技有限公司

# 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/


北京联动北方科技有限公司

# ldconfig  重新载入链接库信息

检查Samba是否配置正确

# /usr/local/samba/bin/testparm


北京联动北方科技有限公司

如果没有什么错误提示,我们就可以尝试启动服务了。

建立共享目录和创建测试文件

# 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


北京联动北方科技有限公司

使用Linux主机访问Samba

北京联动北方科技有限公司

使用Windows主机访问Samba

北京联动北方科技有限公司

注意:如果您不能正常访问,很可能是防火墙的问题,请检查。

建立一个比较安全的文件共享服务器

配置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

北京联动北方科技有限公司

拷贝用户名称映射文件

# cp /root/samba-3.6.1/packaging/RHEL-CTDB/setup/smbusers /usr/local/samba/lib/


北京联动北方科技有限公司

启动Samba服务

# /usr/local/samba/sbin/nmbd start
# /usr/local/samba/sbin/smbd start


使用Linux主机访问Samba

北京联动北方科技有限公司

使用Windows主机访问Samba

北京联动北方科技有限公司

北京联动北方科技有限公司

到此Samba的搭建、配置、应用就告一段落了。。




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论