Samba文件服务器的配置

时间:2021-02-16 18:07:47

Samba文件服务器的配置

 

一、基本要求:

1RedHat Linux 操作系统平台

2windows操作系统平台(验证用)

3RedHat Linux安装光盘

 

Linux版本没什么太大的要求,基本具备上面这些就可以进行samba文件服务器的配置了。”

 

二、配置步骤:

1samba组件安装:

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,ShareServerDomain
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用户登录时的配置文件路径,%LSamba匹配服务器名称。
logon path = /%Lprofile/%U
#
设定登录时主目录的当地路径。
logon drive = H:
#Samba
接受所在组用户以域登录。
domain logons = Yes
#
如果要把samba设置为域服务器,浏览器的OS级别一定要高于Windows。这里说名一下:OS级别:windows9519816200032
os level = 65
#
设置samba试图成为主浏览器。
domain master = Yes
#
设置sambaWINS服务器。
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

 

***************************************************************************

注意:

1Smb.conf其它参数用缺省即可。由于Linux的权限管理没有NT全面,在权限分配较复杂情况下,可以通过两种方式:

A、对一个目录产生多个共享目录,每个目录对相应的用户组分配不同权限。

B、可以和Linux上文件权限相结合。比如:samba共享目录可以给每个人写权限,但Linux上文件权限为只给特定组写权限,则其它人只能读。

 

2、用户及密码管理:

A、如果encrypt passwords = yes,用户会有两个密码(Linuxsmbpasswd)用户改密码会麻烦,所以我设置为nosamba会用/etc/passwd做用户验证,用户也只维护一个密码,比较方便,但不足够安全,好象unix password sync = Yes可以既方便又安全,但我没成功。

B、修改/etc/passwd,使用户的shell/usr/bin/passwd这样用户想改密码时,telnetsamba服务器即可,其它如sendmail服务器也可以用这种方法。

C、如不想用户的目录出现/GNUstep目录,运行mv /etc/skel /etc/skel.backup即可。

 

3windows98客户端:改注册表。

HKEY_LOCAL_MACHINESystemCurrentControlSetServicesVxDVNETSUP中增加一DWORD值:值名:EnablePlainTextPassword 数值:0x01。改windowshosts文件,ipaddree samba server name

 

4、过网关:如客户端和samba server之间有路由器,确保客户端和samba server在同一workgroup 客户端编辑windowslmhosts文件,a.b.c.d samba servernetbios名或主机名。

我现在的做法为:给分公司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
# chmod 600 smbapsswd

接下来大家可以在 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/nullshell/bin/false
然后我们就可以用smbpasswd创建相应的Samba机器帐号:
# smbpasswd -a -m test
其中-a是添加,-m是机器信任帐号。这样,依据test$Linux帐号创建了一个NT域的机器信任帐号test
然后在windowsNT/2000上加入Samba域,根据提示输入超级用户的用户名称和密码,就可以加入Samba域了。
重新激活机器以后,就会有三个选项了,比如用原先建立的用户feixue登入即可。