Linux下配置smba服务器详述

amorfait 2008-01-03

在学习Linux下配置smba服务器之前,先来学习一些基础。
samba的核心是两个守护进程smbd和nmbd程序,在服务器启动到停止期间持续运行。Smbd和nmbd使用的全
部配置信息全都保存在smb.conf文件中。Smb.conf向smbd和nmbd两个守护进程说明输出什么以便共享,
共享输出给谁及如何进行输出。Smbd进程的作用是处理到来的SMB软件包,为使用该软件包的资源与
Linux进行协商,nmbd进程使其它主机(或工作站)能浏览Linux服务器。
如果安装时用rpm安装,那么启动samba不用service smb start,用service nmbd start,service smbd start也可以的。

在smb.conf文件中,注释行以“#”开头,同时每项中英文字母不区分大小写,在一行最后字符尾加
“\”,可将一行分成多行。用“;”开头的行,是可改变的配置,将“;”去掉时,该配置将取作用。

[global](全局参数的设置,它对samba的功能具有很大的影响,主要用来设置整个系统规则。
workgroup= 这是你在windows中的域。
server string= 这是在windows中看到你的samba的解释。
netbios name =最好是你的机器名,如果把改句注消,默认的是你LINUX机器名,不过,最好还是自己填上
dos charset=cp936
unix charset=cp936 加上这二句就可以正确显示中文了。
hosts allow 允许登录的linux-samba的主机名单,用IP地址给出,多个IP地址用空格分开,不在名单中的主机将不能得到samba提供的服务,这也是网络安全的一个方面。
printcap name 指定printcap文件地址,通常为/etc/printcap,包含了linux打印机的配置信息。
load printers 允许使用共享打印机时,默认值为yes。
printing 如果使用的打印机是非标准的,那么应该指出打印机系统类型。
log file = /usr/local/samba/var/log.%m
max log size = 0

上面这两行则是Samba日志的相关定义。其记录文件的位置是放在/var/log/samba/%m.log,安装目录不一样,日志可不一样,后面的一条是定义日志记录文件的大小,单位是KB,如果是0的话就不限大小。
guest acount 来宾帐户,表示用哪一个Linux用户作为所要的客户连接,定义Samba缺省的用户账号,这个账号必须在/etc/passwd中。

security 指定安全模式。大多数用户使用user级的安全模式,samba用本地linux口令文件验证。

security = security_level
定义Samba的安全级别,按从低到高分为四级:share,user,server,domain。它们对应的验证方式如下:
    share:没有安全性的级别,任何用户都可以不要用户名和口令访问服务器上的资源。
    user:samba的默认配置,要求用户在访问共享资源之前资源必须先提供用户名和密码进行验证。
    server:和user安全级别类似,但用户名和密码是递交到另外一个服务器去验证,比如递交给一台NT服务器。如果递交失败,就退到user安全级。
    domain:这个安全级别要求网络上存在一台Windows的主域控制器,samba把用户名和密码递交给它去验证。
    后面三种安全级都要求用户在本linux机器上也要系统帐户。否则是不能访问的
smb passwd file=/etc/samba/smbpasswd (设置smb密码文件的位置)
username map =/etc/smbusers
encrypt passwords =no 采用的时明文密码验证,如果是加密的,就改为yes

记得某月的某一天,我下定决定安装任何软件包只用源码,不用rpm。虽然很麻烦,但是对于了解linux内部有些帮助。

首先我们创建一个文档,边安装配置samba,边写教程。
从www.samba.org下载samba最新源码包,我下载的是samba-3.0.7.tar.gz,把它放在我的目录的中/root/lova/samba下。

tar -zxvf samba-3.0.7.tar.gz 解压得到samba-3.0-7
cd samba-3.0.7
cat README 先看说明,可惜E文太差,不太懂,直接安装吧。
find . -name configure
./source/configure 原来藏在这
cd source/
mkdir /usr/local/samba 创建安装目录
./configure --prefix=/usr/local/samba/ 安装到/usr/loca/samba
make && make install
cd /usr/local/samba/ 到安装目录看看
ls
bin include lib man private sbin swat var 安装成功,怎么没有etc目录和smb.conf文件呀,那我自己创建一个
[root--/usr/local/samba]mkdir etc
[root--/usr/local/samba]cp ~/love/samba/samba-3.0.7/examples/smb.conf.default ./etc/smb.conf

好了现在看看我们的目标。
一、有一个共享目录,只可以读,不可以做任何改变。
二、有一个共享目录,任何人都可以做任何改变,包括添加目录文件,删除目录文件。
三、每个用户可以看到自己的主目录,其它用户不可以看到,当然不可以作改动。
四、有一个共享目录,组A中的人可以做任何改动,组B中的人只可以读,组C中的人看不到。
五、每个用户登录后都可以使用打印机。(没有成功)。

目标1方法1
[root--~]cd /usr/local/samba/etc/
[root--/usr/local/samba/etc]cp smb.conf beifen 备份一下免得改错了。
修改smb.conf,
workgroup = MSHOME 改为你linux所在的工作组
security = share 开放共享
在smb.conf最后加上
[read1]
comment = read1
path = /home/read1
public = yes
guest ok = yes
writable = yes

创建共享目录
whoami
root
umask
0022
mkdir /home/read1
cd !$
cat >; linux
hi linux
ll /home/read1/
总用量 4
-rw-r--r-- 1 root root 9 10月 24 11:20 linux
644嘛
adduser nxgz ; passwd !$ ; 创建系统用户
[root--~]/usr/local/samba/bin/smbpasswd -a nxgz 再把这个用户添加为samba用户
Can't load /usr/local/samba//lib/smb.conf - run testparm to debug it 怎么出错了,好像没有在lib下没有smb.conf,那我就加上吧
[root--~]cp /usr/local/samba/etc/smb.conf /usr/local/samba/lib/
[root--~]/usr/local/samba/bin/smbpasswd -a nxgz 添加samba用户成功
New SMB password:
Retype new SMB password:
startsmbfilepwent_internal: file /usr/local/samba//private/smbpasswd did not exist. File successfully created.
Added user nxgz.

[root--~]service iptables stop
清除所有链: [ 确定 ]
删除用户定义的链: [ 确定 ]
将内建链重设为默认的“ACCEPT”策略: [ 确定 ]
[root--~]service network restart
正在关闭接口 eth0: [ 确定 ]
关闭环回接口: [ 确定 ]
设置网络参数: [ 确定 ]
弹出环回接口: [ 确定 ]
弹出界面 eth0: [ 确定 ]
[root--~]/usr/local/samba/sbin/smbd -D 启动samba的二个进程
[root--~]/usr/local/samba/sbin/nmbd -D
到win-xp下,打开的的电脑,找到地址,输入\\linux主机名,可以找到共享的目录read,成功。

相关推荐