*************************************************************************
* 本文的目的是配置一个SAMBA服务器,以供自己学习研究使用
* 硬件环境:一台PC,RH FC3,一个router,一个winXP client
* 192.168.1.21 是SAMBA服务器,hostname 是atslxt001
* 时间:2005年8月2日星期二
* 作者:kilvon
* 版本:1.0
1. SAMBA服务的两个进程
1. SAMBA服务的两个进程-nmbd:netbios name server
-smbd:SMB server
nmbd进程使得其他计算机可以浏览linux服务器,nmbd进程负责处理name registration和resolution的请求,它处理所有基于udp的请求,这个进程必须先启动;而smbd负责处理基于TCP/IP的请求,用于处理文件和打印服务,这个进程必须紧跟nmbd启动。
检查是否所有相关进程都以启动:
[root@atslxt001 ~]# ps ax | grep mbd
1845 ? Ss 0:00 smbd -D
1850 ? Ss 1:04 nmbd -D
1853 ? S 0:00 smbd -D
23859 ? S 0:00 smbd -D
2. 相关的RPM包:
[root@atslxt001 named]# rpm -qa | grep sam
system-config-samba-1.2.21-1
samba-common-3.0.8-0.pre1.3
samba-client-3.0.8-0.pre1.3
samba-3.0.8-0.pre1.3
3. samba配置文件是:/etc/samba/smb.conf
修改此文件后,用testparm命令检查语法错误
察看帮助文件#man 5 smb.conf
4. 启动停止samba的命令是:
#service smb start
#service smb restart
#service smb reload
#service smb stop
如果要求每次启动系统时SAMBA自动起来,可以:
[root@atslxt001 ~]# chkconfig --list smb
smb 0:off 1:off 2:off 3:off 4:off 5:off 6:off
[root@atslxt001 ~]# chkconfig smb on
[root@atslxt001 ~]# chkconfig --list smb
smb 0:off 1:off 2:on 3:off 4:on 5:on 6:off
5.首先从windows端访问linux,需要认证,这个用户需要在linux上面创建
Ø 先创建linux用户,可以使用命令useradd, adduser。如果只允许用户使用共享目录samba服务,而不需要使用shell,那么把该用户的home目录设成/dev/null,命令行设成/bin/false;如果用户名在/etc/passwd中已有,则无须再创建,直接创建samba口令即可
Ø 然后创建samba用户和口令,生成smbpasswd文件
#cat /etc/passwd | mksmbpasswd.sh > /etc/samba/smbpasswd
或者可以用smbpasswd手工一个一个加用户和密码
Ø 一定要给root用户加口令,并且是等于windows domain administrator的口令,并且在windows domain groups初始化后不能删除
Ø Windows上面的administrator与linux上面的root用户对应关系在这个文件里面指定:/etc/samba/smbusers
6.Samba服务的配置如下:
[global]
#这个workgroup就是windows clients的域名
workgroup = WORKGROUP
#指从其它机器中声明的samba server名称
netbios name = FILESERVER1
#一个说明,在windows文件管理器上可以看见
server string = Samba Server in atslxt001!
password server = None
username map = /etc/samba/smbusers
#每台机器一个log
log file = /var/log/samba/%m.log
max log size = 50
name resolve order = host lmhosts dns wins bcast
#用来提高性能
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
printcap name = /etc/printcap
domain logons = Yes
dns proxy = No
idmap uid = 16777216-33554431
idmap gid = 16777216-33554431
#只有以以下ip地址开头的才可以使用samba服务
hosts allow = 192.168.1., 192.168.2., 127.
cups options = raw
#当联结请求建立时,系统扫描所有的sections, 就是这些[xxx],如果找到匹配的#section就使用其中的配置,如果没有找到,那么就去linux的passwd文件中找是
#否有匹配的纪录,如果用户名和口令都正确,那么就使用[home]中的配置。
[homes]
comment = Home directory is in /home/root
path = /home/%U
valid users = %S
read only = Yes
browseable = No
#同样,在建立连接时,扫描顺序是先是各个sections,没发现的话,再去找
#[home],如果有home就采用上面的机制,还没找到的话,就当作是一个print服
#务请求,就去扫描相应的/etc/printcap文件来查看是否是已存在的共享printer名
#字,找到匹配的话系统就使用[printers]下面的配置来建立一个新的打印机共享。
#请注意这时建立的share名称是那个共享的printer名字。
[printers]
comment = All Printers
path = /var/spool/samba
printable = Yes
browseable = No
read only = Yes
guest ok = Yes
[public]
comment = Public Stuff
path = /home/samba
write list = @staff
guest ok = Yes
[kilvon]
comment = kilvon's share on atslxt001
path = /home/kilvon/shared
valid users = kilvon
read only = No
create mask = 0754
7. 对smb.conf文件的一些说明
在sections中有两类services,一类是文件共享服务file share service,另一类是打印服务printable services。
8. 使用smbclient来验证以上的配置是否成功
[root@atslxt001 samba]# service smb restart
Shutting down SMB services: [ OK ]
Shutting down NMB services: [ OK ]
Starting SMB services: [ OK ]
Starting NMB services: [ OK ]
[root@atslxt001 ~]# smbclient -L //FILESERVER1 –U%
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.8pre1-0.pre1.3]
Sharename Type Comment
--------- ---- -------
public Disk Public Stuff
kilvon Disk kilvon's share on atslxt001
IPC$ IPC IPC Service (Samba Server in atslxt001!)
ADMIN$ IPC IPC Service (Samba Server in atslxt001!)
printer1 Printer printer1
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.0.8pre1-0.pre1.3]
Server Comment
--------- -------
FILESERVER1 Samba Server in atslxt001!
Workgroup Master
--------- -------
WORKGROUP FILESERVER1
注意-U%的功能是发送一个空的用户名和口令。
9.也可以直接从windows clients上打开“运行”,输入//atsltxt001.tcs.com/kilvon,然后系统会提示输入用户名和口令。也可以在windows命令行窗口里输入:C:/net use q: //FILESERVER1/kilvon,如果需要的话,系统会提示输入用户名和口令,然后会将网络驱动器映射到q:。
如果需要从windows察看有哪些share可以使用:
C:/>net view //FILESERVER
10.还可以使用这个命令来象一个ftp客户端一样访问samba共享资源:
[root@atslxt002 ~]# smbclient -U kilvon%password // FILESERVER1/kilvon
Domain=[AGILENT] OS=[Unix] Server=[Samba 3.0.8pre1-0.pre1.3]
smb: /> dir
. D 0 Thu Jul 21 11:42:11 2005
.. D 0 Tue May 31 16:24:04 2005
HelloTCS 0 Thu Jul 21 11:42:11 2005
HelloWorld A 0 Thu Jul 21 11:41:04 2005
2000 blocks of size 1024. 984 blocks available
smb: /> ls
. D 0 Thu Jul 21 11:42:11 2005
.. D 0 Tue May 31 16:24:04 2005
HelloTCS 0 Thu Jul 21 11:42:11 2005
HelloWorld A 0 Thu Jul 21 11:41:04 2005
2000 blocks of size 1024. 984 blocks available
smb: /> get HelloTCS
smb: /> exit
11. 如果要使用图形界面SWAT来配置,那么在本机web browser上输入http://localhost:901/, 在其他机器上则把localhost换为机器名就可以了。
附录1:
Ø 如果是使用Linux管理windows clients,并且windows有不同的域或者workgroup,那么还要创建二者的对应关系。可以使用以下命令:
#!/bin/bash
#
#Create Linux group
groupadd linuxgrp1
groupadd linuxgrp2
#map windows groups to Linux groups
net groupmap modify ntgroup=”Domain users” unixgroup=root
net groupmap modify ntgroup=”Domain users” unixgroup=users
net groupmap modify ntgroup=”Domain guests” unixgroup=nobody
#add functional domain groups
net groupmap add ntgroup=”windows group1” unixgroup=linuxgrp1 type=d
net groupmap add ntgroup=”windows group2” unixgroup=linuxgrp2 type=d
然后可以用这个命令检查对应关系
[root@atslxt001 ~]# net groupmap list | sort
附录2:
Ø Windows clients的ip地址段和掩码要一致