1 SAMBA的安装。
1) 准备工作:
[url]www.samba.org[/url]上获得最新的安装包samba-3.0.21c.tar.gz,并存放在/usr/local/src目录下。
2). 编译、安装
    首先进入/usr/local/src目录下,执行解包指令
    # tar -zvxf samba-3.0.21c.tar
    然后进入samba-3.0.21c目录下,在这个目录中有一个whatsnew.txt的文件,这个文件记录了samba-3.0.21c版本比以前几个版本修正的错误,如果英文不成问题的情况下,建议看看.在此不在赘述,然后直接进入source目录下准备编译。
# cd samba-3.0.21c
# cd source/
# ./configure --prefix=/usr --bindir=/usr/bin  --sbindir=/usr/sbin  --libexecdir=/usr/libexec --datadir=/usr/share/samba --sysconfdir=/etc/samba  --localstatedir=/usr/local/samba/var --libdir=/usr/lib --with-lockdir=/var/locks/samba  --with-swatdir=/usr/share/samba/swat  --with-codepagedir=/etc/samba/codepages --with-configdir=/etc/samba --with-smbwrapper  --with-automount  --with-smbmount  --with-pam --with-pam_smbpass --with-winbind
执行make指令
# make
这样就可以创建二进制程序和手册页了,然后再执行make install
# make install
这样就将安装文件安装完了
 
完成后如果没有 /etc/samba目录则自建一个,如果有就可直接vi /etc/samba/smb.conf
# cd /samba-3.0.21c/Packing/RedHat-9
# cp smb.conf /etc/samba
# cp smb.init /etc/rc.d/init.d/smb
加入启动项
# chkconfig --add smb
# chkconfig --level 35 smb on
# service smb start
# netstat anlt 一下查看139445端口开了没。
 
2 SAMBA的配置
 1) 普通配置
A .设置配置文件内容。
配置信息分为两个部分:全局参数区[global],配置一些公共信息;资源共享区,配置Linux服务器上要共享的资源。
[global]
Workgroup=mygroup          # 工作组名或Windows的域名      
Server string=samba server      # samba服务器的注释说明
Printcap name=/etc/printcap      # 配置samba服务启动时,将自动加载的打印机配置文档
Load printers=yes             # 配置是否允许打印配置文档中的任何打印机开机时自动加载(默认)
Security=user                 # 配置安全模式,此处是需要登录时输入用户名和密码
Encrypt passwords=yes         # 使用加密密码方式
Smb passwd file=/etc/smbpasswd #samba 密码文档
 
[homes]                      #samba 服务为每一个samba用户提供一个主目录,该共享目录通常只有用户本身能够使用。个人的主目录默认存放在/home目录下,每个Linux用户有一个单独的子目录
Comment=Home Directories  # 对共享目录说明
 Browseable=no             # 是否允许用户浏览任何人的主目录,即homes目录
 Writable=yes               # 是否允许写入个人主目录
[myshare]           # 新建一个共享名称
   comment = mail share     # 对共享目录说明
   path = /home/shared      # 共享目录名称
   valid users = llk726 tge # 允许访问的用户或组
   write list = llk726      # 允许写操作的用户
   public = no           # 不允许公共访问
   printable = no
   create mask = 0765
B .建立用户和组
# useradd llk726
# useradd tge
然后我们使用smbpasswd -a 的命令将帐户分别添加到samba用户中
# smbpasswd -a llk726
# smbpasswd -a tge
C 、建立相关的目录并赋予相应权限
# mkdir /home/shared
# chmod 777 /home/shared
D 、用testparm /etc/samba/smb.conf检测配置文档的配置有无语法错误
E samba的启动和停止
Service smb start /etc/rc.d/init.d/smb start
F iptables的设置
-A INPUT -m state --state NEW -m udp -p udp --dport 137 -j ACCEPT
-A INPUT -m state --state NEW -m udp -p udp --dport 138 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 139 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT
 
2 )高级配置
利用sambapdc域服务器
A 、设置配置文件内容:
 [global]
workgroup = lin.net
netbios name = pdcserver
server string = Samba PDC running %v
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_SNDBUF=8192 SO_RCVBUF=8192
# 这里的workgroup = lin.net就代表lin.net域, netbios name = pdcserver表示这台服务器的netbios,socket options选项设置控制 TCP/IP 性能。所显示的设置就可以与基于 Linux 的系统一起很好地工作了。
local master = yes              // 是否允许Samba参与子网上的本地主浏览器的竞选
os level = 64
domain master = yes
preferred master = yes
#domain master 选项是一个开关,通告 Samba 将成为主域控制器。(local master browser)是维护局域网机器列表的服务器被称为本地主浏览器。
security = user                 // 这里我们还是使用user验证方式
encrypt passwords = yes
domain logons = yes         // 是否启用Samba作为域登陆服务器
log file = /var/log/samba/log.%m
log level = 2
max log size = 50
hosts allow = 127.0.0.1 192.168.100.0/255.255.255.0         //hosts allow 表示那些网段可以访问你的服务器。
logon home = \\%L\%U\.profile           //%L 代表服务器的NetBIOS名称,%U发出请求客户机的用户名称
logon drive = z:                // 把用户主目录映射为本地z
logon path = \\%L\profiles\%U           // 保存客户端机器桌面配置信息的路径,profiles跟下面的[profiles]共享段对应
logon script = netlogon.bat             // 登陆脚本
# 以上是漫游设置和登录脚本。
 [homes]
comment = Home Directories
browseable = no
writeable = yes
[profiles]
path = /home/samba/profiles
writeable = yes
browseable = no
create mask = 0765
directory mask = 0700
[netlogon]
comment = Network Logon Service
path = /home/netlogon
read only = yes
share modes = no
browseable = no
write list= root
其中profile是用来存放每个登录用户的设置文件,以便用户以后登录可以从服务器读取以前的桌面设置,netlogon是用来存放登录脚本的,所以要限制写的权限,假设这里只有root用户可以有权限。
B samba用户设置
groupadd admin
groupadd machines
 
手工添加机器帐号
比如我的客户端的机器名是client-a,那么我们可以这么做
useradd -g machines -d /dev/null -c "machine id" -s /bin/false –M client-a$
passwd -l client-a$
输入两遍密码;
不要忘记标上美元符号;这是必需的,它将该项标识为信任帐户
创建 linux 帐户后,我们现在可以将该机器添加到 /etc/samba/smbpasswd
smbpasswd -a -m client-a
 
当然你也可以让系统自动添加机器帐号,用下面的方法,不过大家最好先试手动添加,成功后再试验系统自动添加
自动添加只要在[global]添加
add user script = /usr/sbin/useradd "%u" -n -g users
 add group script = /usr/sbin/groupadd "%g"
 add machine script = /usr/sbin/useradd -n -g machines -c "Workstation (%u)" -M -d /dev/null-s /bin/false "%u"
 delete user script = /usr/sbin/userdel "%u"
 delete user from group script = /usr/sbin/userdel "%u" "%g"
 delete group script = /usr/sbin/groupdel "%g"
添加用户帐号
首先添加的是root帐户,把root加入到smb帐户中
smbpasswd -a root
这一步很重要,因为后面的加入域要用到有管理员的帐号加入域的权限,否则用普通用户好像不能顺利加入域
然后添加普通用户
useradd llk726
passwd llk726
smbpasswd -a llk726
为了方便以后的管理,最好smb的用户密码和unix系统密码一样,这样我们还可以用到samba的密码同步功能
# 下面的选项语句将允许用户从 Windows 客户机上更改他们的 Samba 密码,这样会随即更新他们的 UNIX 密码以与新的 Samba 项相匹配。但是如果更改了 UNIX 密码,那么同一技术不能逆向工作;必需手工同步更改 Samba 密码。也是在[global],初学者可以先不做这个工作。
unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = *New*UNIX*password* %n\n *Retype*new*UNIX*password* %n\n *Enter*new*UNIX*password* %n\n *Retype*new*UNIX*password* %n\n *passwd: *all*authentication*tokens*updated*successfully*
# 上述语句中唯一值得一提的是 passwd chat 选项,不管这里如何显示它,都要将它输入成一行。还要注意有些选项使用“password”,而有些使用“passwd”
 
C 域登陆目录设置
mkdir -m 0775 /home/netlogon/scripts
chown root.admins /home/netlogon
mkdir /home/samba /home/samba/profiles
chown 1757 /home/samba/profiles
su –l llk726
cd /home/samba/profiles
mkdir llk726
------
 
D DNS 服务器配置,为lin.net域提供名称解析
 
E 启动服务
# service smb start

Samba PDC 的配置就这样完成了。
剩下唯一要做的是将客户机加入到域中。
XP2003加入域时必须先更改一下注册表:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters]下新建一个DWord项:requiresignorseal,设置值为:0;如果已存在就修改一下值就行了。
现在,通过使用用户名 root 和相应的密码登录到域。必需初始化服务器和客户机机器之间的秘密。从此时起,任何已认证的用户都可以从这台机器登录。