Samba文件服务器的配置

 

一、基本要求:

1、RedHat Linux 操作系统平台
2、windows操作系统平台(验证用)
3、RedHat Linux安装光盘
 
 
“Linux版本没什么太大的要求,基本具备上面这些就可以进行samba文件服务器的配置了。”
 
 
二、配置步骤:
1、samba组件安装:
(1)首先用“rpm –qa |grep samba”命令检验系统samba服务是否安装。
# rpm –qa |grep samba
samba-common- 
  
    3.0.0 
  .15.i386.rpm
samba-client- 
  
    3.0.0 
  -15.i386.rpm
samba- 
  
    3.0.0 
  -15.i386.rpm
 
 
(2)如果没有显示samba(版本)信息,则说明没有安装,利用“RedHat Linux安装光盘”里自带的RPM包进行安装(也可自己在网上下载相关的版本包进行安装)。
# rpm -ivh samba-common- 
   
     3.0.0 
   .15.i386.rpm
# rpm -ivh samba-client-3.0.0-15.i386.rpm
# rpm -ivh samba-3.0.0-15.i386.rpm
 
 
此外还有一个工具就是图形界面的Swat。
要是用这个工具﹐大家还要修改一处﹐就是﹕
vi /etc/xinetd.d/swat把其中的
disable = yes
改为
disable = no就可以了。# rpm -ivh samba-swat- 
   
     3.0.0 
   -15.i386.rpm

然后开启浏览器输入http://hostname:901
也可以安装redhat-config-samba这个工具。
为了方便远程管理,Webmin也不错(建议安装) 
 
# Samba config file created using SWAT
# from 
   
     0.0.0 
   .0 (0.0.0.0)
# Date: 2003/11/19 15:38:38 
 
2、修改samba配置文件:( /etc/smb.conf )
***************Global parameters******************
#全局配置参数
[global]
#设置工作组或者说是域名。
workgroup = MYGROUP
#网络上看到的计算器名称(samba)。
netbios name = SAMBA
#服务器描述,%v显示Samba版本。
server string = Samba Server %v
#设置samba服务器使用的认证过程。默认为USER,有四个选项:User,Share,Server和Domain。
Security = User
#设置纯文本密码的最少字符数。
min passwd length = 6
#匿名、名称、密码都不正确不准登录服务器。即任何非法用户名登录均被视为gues用户。
map to guest = Bad User
#用户名的映像。
username map = /etc/samba/smbusers
#存放samba密码的路径
smb passed file = /etc/samba/smbpasswd
#samba日志文件的名字和路径。
log file = /var/log/samba/%m.log
#日志文件的最大尺寸(KB)
max log size = 50
#作为时间服务器。
time server = Yes
#设置连接被视为无效而断开前,未激活状态的时间(MIN),防止资源被无效连接耗费。
deadtime = 5
#网络协议选项,注意不要更改,否则影响网络速度及网络问题。
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
#用户成功登录时在netlogon共享中运行的批处理文件或者windows命令文件,注意:这一项很重要,还有就是一定要配合下面的[netlogon]共享才能配置出你的PDC﹐%U为自动匹配登录用户的名称。
logon script = %U.bat
#在服务器上保存Windows用户登录时的配置文件路径,%L为Samba匹配服务器名称。
logon path = /%Lprofile/%U
#设定登录时主目录的当地路径。
logon drive = H:
#Samba接受所在组用户以域登录。
domain logons = Yes
#如果要把samba设置为域服务器,浏览器的OS级别一定要高于Windows。这里说名一下:OS级别:windows95为1,98为16,2000为32。
os level = 65
#设置samba试图成为主浏览器。
domain master = Yes
#设置samba为WINS服务器。
wins support = Yes
#超级用户。
admin users = root
#设置新文件权限。
create mask = 0740
#建立新文件时强制权限限制。
force create mode = 0740
#允许用户在NT2000下改变权限。
security mask = 0740
force security mode = 0740
#创建新目录时允许拥有的最大权限。
directory mask = 0750
force directory mode = 0750
directory security mask = 0750
force directory security mode = 0750
#Windows工作方式,只要文件被修改,其时间戳将随时更新。
dos filetimes = Yes
#Samba对文件生成时间作取整处理,计为下1秒,这也是windows工作方式。
dos filetime resolution = Yes#共享家目录。
[homes]
comment = Home Directories
read only = No
browseable = No#重要的设置,samba作为域服务器时存放用户登录时执行的文件或脚本。
[netlogon]
comment = Network Logon Service
path = /home/netlogon
write list = root
guest ok = Yes
share modes = No#用户配置文件存放目录 。
[Profile]
path = /home/profiles
read only = No
create mask = 0770
force create mode = 0770
security mask = 0770
force security mode = 0770
directory mask = 0770
force directory mode = 0770
directory security mask = 0770
force directory security mode = 0770
browseable = No#打印机共享目录。
[printers]
comment = All Printers
path = /var/spool/samba
printable = Yes
browseable = No 
 
***************************************************************************
注意:
1、Smb.conf其它参数用缺省即可。由于Linux的权限管理没有NT全面,在权限分配较复杂情况下,可以通过两种方式:
A、对一个目录产生多个共享目录,每个目录对相应的用户组分配不同权限。
B、可以和Linux上文件权限相结合。比如:samba共享目录可以给每个人写权限,但Linux上文件权限为只给特定组写权限,则其它人只能读。
 
 
2、用户及密码管理:
A、如果encrypt passwords = yes,用户会有两个密码(Linux,smbpasswd),用户改密码会麻烦,所以我设置为no,samba会用/etc/passwd做用户验证,用户也只维护一个密码,比较方便,但不足够安全,好象unix password sync = Yes可以既方便又安全,但我没成功。
B、修改/etc/passwd,使用户的shell为/usr/bin/passwd,这样用户想改密码时,telnet到samba服务器即可,其它如sendmail服务器也可以用这种方法。
C、如不想用户的目录出现/GNUstep目录,运行mv /etc/skel /etc/skel.backup即可。
 
 
3、windows98客户端:改注册表。
在HKEY_LOCAL_MACHINESystemCurrentControlSetServicesVxDVNETSUP中增加一DWORD值:值名:EnablePlainTextPassword 数值:0x01。改windowshosts文件,ipaddree samba server name
 
 
4、过网关:如客户端和samba server之间有路由器,确保客户端和samba server在同一workgroup, 客户端编辑windowslmhosts文件,a.b.c.d samba server的netbios名或主机名。
我现在的做法为:给分公司IT设一个帐号在总部,让他们通过CUTEFTP再通过public目录实现总部和分公司的文件传输。这样可以避免分公司一定要跟总公司在一个域(他们还有NT)。
 
 
5、磁盘限额:
例如一百名,设定和 bob 相同的 quota 值,首先以手动编辑 bob 的 quota 信息,然后执行:
# csh
# edquota -p bob ‘awk -F:’$3 > 499 {print $1}‘/etc/passwd’
这是假设你的使用者 UID 从 500 开始
**********************************************************************************
 
 
 
接下来就要手动在 
/home 
下建立目录: 
profiles, 
访问权限为 
0770, 
组为你想要建立的组﹐比如 
share 
用来存放 
Windows 
用户的配置文件。 

netlogon 
访问权限为 
1750 
,这里加上了 
sticky 
选项,不允许其它用户删除目录里的文件,只有超级用户或者建立者才可以,注意 
sticky 
选项只对目录起作用。组为 
share
 
下面建立 
/etc/samba 
下面的 
smbpasswd 
文件: 

# cat /etc/passwd | mksmbpasswd.sh > /etc/samba/smbpasswd
 
为了安全起见﹐设置权限: 

# cd /etc
# chmod 500 samba
# cd samba
#

 
接下来大家可以在 
netlogon 
目录里建立 
windows 
用户的登录脚本,比如批处理文件,需要注意的是,一定要在 
Windows 
下面建立,因为如果在 
Linux 
下建立,那幺 
Windows 
就不会执行 
Linux 
的文件。比如有个帐户 
feixue 
,批处理文件可以这样: 

feixue.bat 
内容为: 

@net time SambaServer /set /yes
@net use H: SambaServerfeixue -y
@regedit -s SambaServer
etlogon*.reg
 
等。



需要注意的是把批处理文件保存到 netlogon 下面后一定要检查文件的权限,修正后用户才会执行,不然的话嘿嘿,你有麻烦了﹗﹗﹗




如何配置 Windows 端登录 Samba 域,对于 98 来说很容易,在网络属性里选 Client for microsoft networks ,在第一项打勾,下面输入你的 Samba 服务器的域名 ( 工作组 ) 。重新激活机器以后,邓入对话框就会有三项:用户名、密码、域名。


NT/2000

下面登录 samba 域会困难一点,首先你要在 Samba 服务器上建立 windowsNT/2000 机器的信用帐号。

下面以一个计算器名为test的计算机为例:
# useradd -c 'Test Compter' -d /dev/null -g share -s /bin/false -r test$我们创建了一个Linux本地帐号,出于安全的考虑不需要它登录到Linux进行任何操作,因此的用户目录为/dev/null,shell是/bin/false。
然后我们就可以用smbpasswd创建相应的Samba机器帐号:
# smbpasswd -a -m test其中-a是添加,-m是机器信任帐号。这样,依据test$的Linux帐号创建了一个NT域的机器信任帐号test。
然后在windowsNT/2000上加入Samba域,根据提示输入超级用户的用户名称和密码,就可以加入Samba域了。
重新激活机器以后,就会有三个选项了,比如用原先建立的用户feixue登入即可。