samba学习笔记 |
| 作者:BlueSilence 来源:BlueSilence的博客 (2007-02-08 15:11:43) |
|
|
什么是samba? linux与windows局域网共享的桥梁,一起来跳samba吧 ^_^
安装samba-3.0.13:
下载: ftp://ftp.samba.org/pub/samba/samba-3.0.13.tar.gz
解压: [root@LFS ~]#tar zxvf samba-3.0.13.tar.gz 编译: [root@LFS ~]#cd samba-3.0.13/source [root@LFS source]#install -d /var/cache/samba/ [root@LFS source]#./configure --prefix=/usr/local/samba --localstatedir=/var \ --with-piddir=/var/run --with-smbmount && make samba可以支持许多东东,例如quota,pam,automount. 使用./configure --help查看相关内容
安装: [root@LFS source]#make install [root@LFS source]#mv /usr/local/samba/lib/libsmbclient.so /usr/lib [root@LFS source]#ln -s /usr/lib/libsmbclient.so /usr/local/samba/lib [root@LFS source]#install -m755 nsswitch/libnss_win{s,bind}.so /lib [root@LFS source]#ln -sf libnss_winbind.so /lib/libnss_winbind.so.2 [root@LFS source]#ln -sf libnss_wins.so /lib/libnss_wins.so.2 [root@LFS source]#cp ../examples/smb.conf.default /usr/local/samba/lib/smb.conf
配置:
编辑samba配置文件/usr/local/samba/lib/smb.conf: [global]......[homes]之间为全局设定. [homes]以下的为共享目录设定
全局设定: [global] workgroup = WORKGROUP #工作组或NT域名 NetBIOS Name = blue-lfs #本机器的NetBIOS名称 server string = LFS Samba Server #描述服务器信息 unix charset = gb2312 #使中文目录正常显示 dos charset=cp936 #同上,在Linux的X终端中正常显示中文名 security = user #samba验证密码方式,user:需要密码,share:不需要密码
hosts allow = 172.16.245. 127. #允许的主机ip guest account = nobody #guest帐号,结合以下两项,没有通过密码验证的机器会以nobody map to guest = Bad User #访问samba服务器中的公开资源。 map to guest = Bad Password
log file = /var/log/samba/log.%m samba日志存放位置, %m表示以连接机器的netBIOS名称记录 max log size = 0 #日志最大长度 (KB) 0表示无限制 ;encrypt passwords = yes #是否使用加密密码,user级别使用(samba-3.0.13)不需要设定 smb passwd file = /usr/local/samba/smbpasswd #密码存放文件 socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 #提高性能 interfaces = 10.70.54.0/24 172.16.245.0/24 172.16.249.0/24 #如果有多个网络接口,必须全部列出来,否则可能会出错 dns proxy = no #不通过dns解析 netBIOS 名称
共享目录设定: 当使用者以不同帐号登陆samba服务器时,homes会变成相应的家目录(samba根据/etc/passwd决定帐号家目录) [homes] comment = Home Directories #目录描述信息 browseable = no #防止用户浏览其他用户的家目录 writable = yes #允许写入,同时需要samba服务器该用户有写入权限
;valid user = %S #可以使用该目录的帐号,%S表示任何在smbpasswd中记录的 ;create mode = 0644 #创建文件的权限 ;directory mode = 755 #创建目录的权限
[software] #使用者看到的共享目录名称 comment = LFS software path = /software #共享目录的路径 public = no # 非公开的,需要合法帐号登陆 valid user = blue root #允许登陆的帐号 readonly = no # 允许写入 writable = yes #如果这里为no,则不可以写入. 最后出现的设定值有效 [public] comment = public file path = /tmp public = yes writable = no guest ok = yes #允许guest帐号访问
建立使用者帐号密码: samba中的帐号必须真实存在于/etc/passwd中,建立它: [root@LFS ~]#useradd -c "samba user" -s /bin/false blue 加入到smbpasswd中: [root@LFS ~]#cd /usr/local/samba [root@LFS samba]#touch smbpasswd [root@LFS samba]#chown root:root smbpasswd [root@LFS samba]#chmod 700 smbpasswd [root@LFS samba]#smbpasswd -a blue New SMB password: Retype new SMB password: Added user blue. [root@LFS samba]#cat smbpasswd blue:501:87F33EC80F6BE805AAD3B435B51404EE:D33DD5DE3AB41AB1E509E8FFBA234FA5:[U ]:LCT-424FAC42: [root@LFS samba]# smbpasswd : smbpasswd -[ademx] username -a 新增一个使用者 -d 禁止一个使用者,会在smbpasswd中多出个"D" -e 恢复使用者 -m 该username 为机器代码,使用samba做为PDC主机时使用 -x 从smbpasswd中删除使用者
测试: 使用testparm可以测试smb.conf语法是否有错误以及查看设定值: [root@LFS ~]#testparm Load smb config files from /usr/local/samba/lib/smb.conf Processing section "[homes]" Processing section "[software]" Processing section "[public]" Loaded services file OK. Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions ......略 [root@LFS ~]#
启动samba :
samba需要启动两个daemon:nmbd,smbd : nmbd :用来管理群组,NetBIOS name 解析 smbd : 用来管理samba主机共享的目录,文件以及打印机
启动它们:(发行版中有自己的samba服务脚本,启动其脚本即可:service smb start) [root@LFS ~]#/usr/local/samba/sbin/nmbd -D [root@LFS ~]#/usr/local/samba/sbin/smbd -D
可以看到137-139端口已经处以监听状态: [root@LFS ~]#netstat -tunl Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:6000 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN udp 0 0 10.70.54.31:137 0.0.0.0:* udp 0 0 172.16.245.1:137 0.0.0.0:* udp 0 0 172.16.249.1:137 0.0.0.0:* udp 0 0 0.0.0.0:137 0.0.0.0:* udp 0 0 10.70.54.31:138 0.0.0.0:* udp 0 0 172.16.245.1:138 0.0.0.0:* udp 0 0 172.16.249.1:138 0.0.0.0:* udp 0 0 0.0.0.0:138 0.0.0.0:* [root@LFS ~]#
Client端测试下: [root@LFS ~]#smbclient -L \\blue-lfs -U blue Password: Domain=[BLUE-LFS] OS=[Unix] Server=[Samba 3.0.13]
Sharename Type Comment --------- ---- --------- software Disk software public Disk public file IPC$ IPC IPC Service (LFS Samba Server) ADMIN$ IPC IPC Service (LFS Samba Server) blue Disk Home Directories Domain=[BLUE-LFS] OS=[Unix] Server=[Samba 3.0.13]
Server Comment --------- -------
Workgroup Master --------- ------- WORKGROUP-LFS [root@LFS ~]#
常用变量: %m :Client的NetBIOS名称 %M : client的HostName %L :samba server的NetBIOS名称 %h :samba server的HostName %H : 使用者的家目录 %g :使用者的群组名 %U :使用者名称 %I Client的IP %T 当前时间
Samba做PDC(Primary Domain Controller 主域控制器):
设定smb.conf,将以下几行注释去掉:(其余设定同上) [global] local master = yes os level = 64 #与网域内其他主机相比,这台主机的级别 domain master = yes preferred master = yes domain logons = yes ;logon script = %U.bat #使用者登陆后会执行自己帐号的.bat批处理.该批处理文件存放在[netlogon] logon script = startup.bat #我这里设定所有登陆者均使用相同配置,执行startup.bat logon path = \\%L\Profiles\%U # 漫游配置文件存放位置,Profiles将被[Profiles]中的路径取代 wins support = yes [netlogon] comment = Network Logon Service path = /home/samba/netlogon guest ok = yes writable = no write list =blue root #可以写入的用户,其余用户无法写入 share modes = no
[Profiles] path = /home/samba/profiles browseable = no #不可浏览,实际上仍然可以使用该目录,与windows中的c$的"$"作用类似 guest ok = yes readonly = no #必须设定,否则windows注销时无法将漫游配置文件传回服务器
创建各个目录: [root@LFS ~]#mkdir -p /home/samba/profiles [root@LFS ~]#mkdir /home/samba/netlogon 编写startup.bat : [root@LFS ~]#cd /home/samba/netlogon [root@LFS ~]#vi startup.bat net time \\blue-lfs /set /yes #同步client与server时间 net use T: \\blue-lfs\software #software目录映射成T盘 net use X: \\blue-lfs\public #public目录映射成X盘
net是windows中的指令,net use 语法: net use [device:] [directory]
该批处理文件必须是dos格式才可以,即必须以 ^M$换行 [root@LFS ~]#cat -A /home/samba/netlogon/startup.bat net time \\blue-lfs /set /yes ^M$ net use T: \\blue-lfs\software ^M$ net use X: \\blue-lfs\public ^M$ [root@LFS ~]# 使用vi可通过 :set textmode 达到要求,或使用tr转换字符: [root@LFS ~]#cat -A startup.bat |tr '$' '\r' >startup.bat
再将漫游用户的配置文件(C:\Documents and Settings\username) 放到samba server的/home/samba/profile/下
做为PDC内的机器需要提供给PDC其机器代码: [root@LFS ~]#groupadd machine [root@LFS ~]#useradd -g machine -s /bin/false -d /dev/null blue2000$ blue2000为我的windows 2000的NetBIOS名称,后加上'$'表示为机器代码 如果useradd不允许添加带有'$'的帐号,则可添加blue2000,再修改/etc/passwd /etc/shadow [root@LFS ~]#smbpasswd -a -m blue2000$
win2k第一次登陆PDC需要使用root帐号,添加它,不要samba密码与linux主机相同 :) [root@LFS ~]#smbpasswd -a root
Client端设定 : 首先Client上必须已安装" Microsoft 网络的文件和打印机共享" win2000: 开始-->控制面板-->网络和拨号连接-->高级-->网络标识-->属性 修改主机名为blue2000及加入工作组WORKGROUP.重启 网络标识--->网络ID 按照提示进行,设置后重启即可选择域登陆
Linux中访问samba服务器共享目录: 使用smbclient : [root@LFS ~]#smbclient -U blue //blue-lfs/blue Password: Domain=[WORKGROUP-LFS] OS=[Unix] Server=[Samba 3.0.13] smb: \> ls . D 0 Tue Mar 29 00:31:13 2005 .. D 0 Sat Apr 2 21:13:18 2005 blue.passwd 19 Tue Mar 29 00:30:43 2005 public_html D 0 Tue Mar 29 13:03:07 2005
43987 blocks of size 131072. 14865 blocks available smb: \> exit [root@LFS ~]# ?可以查看可用命令,使用它不如smbmount,mount方便
使用smbmount: [root@LFS ~]#smbmount //blue-lfs/software tmp/ -o username=blue,password=blue 这样就可以象挂载其他分区一样//blue-lfs/software的东东了 :)
使用mount : [root@LFS ~]#mount -t smbfs -o username=blue,password=blue //blue-lfs/software tmp/
OK,完工 ^_^
(http://www.fanqiang.com)
原文链接:http://mengxin.bokee.com/1095910.html
|
|