文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>学习Samba

学习Samba

时间:2007-05-27  来源:wenjiech

前言:在windows和linux的混合网络中,samba还是有很大用处的,本文用实验的方法快
速学习Samba。
[实验项目]
①在linux上建立Samba服务器,用类似FTP的客户端smbclient访问。
②在linux上建立security=user的Samba服务器,用win2000的客户端访问。
③在linux上建立security=share的samba服务器,用win2000的客户端访问。
④在linux上挂载samba共享。

实验一:在linux上建立Samba服务器,用类似FTP的客户端smbclient访问。
[实验要求]
1.两台RH8.0的机器可以互相ping通。
2.机器1的IP:192.168.0.1
3.机器2的IP:192.168.0.2
[实验步骤]
1.关掉两台机的防火墙。
#service iptables stop
#chkconfig iptables off
2.在两台机上安装软件包。
检查samba,samba-common,samba-client包是否已安装。
# rpm -q samba
# rpm -q samba-common
# rpm -q samba-client
根据结果,在安装光盘里找到没有安装的软件包,进行安装。
# rpm -ivh samba*.rpm
3.在机器1开启smb服务,并查看共享了什么内容。
# service smb start
# smbclient -L 192.168.0.1 -N
4.在机器1添加新用户。
# useradd user1
# passwd user1
密码:user1
# touch /home/user1/iAmUser1
5.在机器1创建smb帐户文件文件:/etc/samba/smbpasswd
# touch /etc/samba/smbpasswd
# smbpasswd -a user1
密码:user1
6.在机器1备份原配置文件:/etc/samba/smb.conf
# service smb restart
10.在机器2上看机器1的samba共享了什么?
# smbclient -L 192.168.0.1 -N
11.在机器2访问机器1的samba服务。
# smbclient //192.68.0.1/homes -U user1%user1
12.在机器2上成功访问后,用help查看命令。
smb: >help
注意:1) 用ls 看到文件iAmUser1吗?
2) 比较和FTP的命令有何不同。

实验二:在linux上建立security=user的Samba服务器,用win2000的客户端访问。
[实验要求]
1.一台RH8.0机,一台Win2k机,互相能ping通。
2.RH8.0机,IP:192.168.0.1
3.Win2k机,IP:192.168.0.2
[实验步骤]
1.在实验一的基础上,修改/etc/samba/smb.conf
修改[global]段中:
workgroup = WORKGROUP1
----------------------------------------------------------------------
如果你对上述修改熟悉,跳过这段。
workgroup = WORKGROUP1为使linux和windows机在同一个工作组。
----------------------------------------------------------------------
注意:修改了smb.conf,必须运行:service smb restart
2.修改Win2k的工作组,为WORKGROUP1,若为域控制器,必须降为普通工作组,用
Administrator重启登录。
修改方法:“我的电脑”|“属性”|“网络标识”|“属性”
3.在win2k机上,“网络邻居”|“整个网络”|“全部内容”|“microsoft windows 网络”
| “Workgroup1”,看到RH系统的机器了吗?
4.输入用户名user1,密码user1进入,可以新建,删除文件吗?

实验三:在linux上建立security=share的samba服务器,用win2000的客户端访问。
[实验要求]
1.一台RH8.0机,一台Win2k机,互相能ping通。
2.RH8.0机,IP:192.168.0.1
3.Win2k机,IP:192.168.0.2
[实验步骤]
1.在实验二的基础上,修改/etc/samba/smb.conf
追加下面内容:
[public]
comment = public
path = /mnt
browsable = yes
public =yes
修改[global]段中:
security = share
----------------------------------------------------------------------
如果你对上述修改熟悉,跳过这段。
[public]定义了另一段,也可以为其他名称。
path指出共享的目录。
security采用share。
----------------------------------------------------------------------
注意:修改了smb.conf,必须运行:service smb restart
2.在win2k机上,用Administrator登录,“网络邻居”|“整个网络”|“全部内容”|
“microsoft windows 网络”| “Workgroup1”,看到RH系统的机器了吗?
3.不用密码就可以进入了,是吗?你看到几个共享目录?可以写入吗?
4.在win2k机上新建一个帐户:user1,密码:user1。
5.在win2k机上注销,切换用户user1。
6.在win2k机上,“网络邻居”|“整个网络”|“全部内容”|“microsoft windows 网络”
| “Workgroup1”,看到RH系统的机器了吗?
7.不用密码就可以进入了,是吗?你看到几个共享目录?可以写入吗?
注意:1) 当你模仿[homes]段修改了[public]段的writable,create mode ,directory mode
后,可以写入吗?
2) 你修改了RH8.0机的/mnt/读写权限为drwxrwxrwx时,情况怎么样呢?
实验四:在linux上挂载samba共享。
[实验要求]
1.一台RH8.0机,一台Win2k机,互相能ping通。
2.RH8.0机,IP:192.168.0.1
3.Win2k机,IP:192.168.0.2
[实验步骤]
1.在win2k机上,共享C:
2.在RH8.0机上运行:
# smbclient //192.168.0.2/C -U win2k的当前登陆用户名%密码
注意:能登陆吗?
3.挂载共享盘:
# mount -t smbfs -o username=win2k的当前登陆名%密码
//192.168.0.2/C /mnt/cdrom
注意:1)“username=win2k的当前登陆名%密码” 之间不要有空格。
2) 也可用:# smbmount //192.168.0.2/C /mnt/cdrom -o username=
username=win2k的当前登陆名%密码
3) 也可用:# smbmount //192.168.0.2/C /mnt/cdrom -U
win2k的当前登陆用户名
接着输入密码便可。
4) 实际,两台都是Linux系统,一台作samba服务器,另一台作客户机。如
实验一的情况下,在机器2上:
# mount -t smbfs -o username=user1%user1
//192.168.0.1/homes /mnt/cdrom
也可实现共享,不过没有必要,linux之间,可以用nfs实现共享,而且速度比
Samba快。

[实验小结]
本文只是简单快速的学习Sabma,如果想深入了解,需要结合manpage与原
/etc/samba/smb.conf(已备份为smb.conf.BAK)仔细研究,另外,/usr/share/doc/samba
提供了专业文档可以学习。不过,通过本文的学习,已基本满足普通的工作需要。至于
security为domain和server形式,我也没有研究,所以,没有涉及
      1、安装

Samba server需要用到三个软件包,即:samba服务器软件包、samba-client (samba客户端工具)、samba-common(通用工具和库)。由于我这个做实验的fedora在安装时只安装了development tools,所以这里会存 在一个软件的依存关系,需要先安装一个rpmdb的软件包(rpmdb是解决软件安装储 存关系的数据库),才可以继续安装samba的软件包。插入第三张光盘,挂载,并cd到Fedora/RPMS路径 ls | grep rpmdb 列出当前包括rpmdb的rpm包,即下面的rpmdb-fedora-2- 0.20040513.i386.rpm rpm -ivh rpmdb-fedora-2-0.20040513.i386.rpm /*这个软件处在fedora的第三 张光盘Fedora/RPMS里*/ rpm -ivh --aid samba*.rpm /*安装samba软件包,samba*.rpm处于fedora的第一 张光盘Fedora/RPMS里,--aid是与前面安装rpmdb一起对应使用的,初始安装 samba软件包时匆必需要*/ rpm -qa |grep samba /*用rpm查询当前安装了的包含samba的文件,-ql中的 q=query,a=all */ rpm -ql samba-3.0.3-5 rpm -ql samba-client-3.0.3-5 rpm -ql samba-common-3.0.3-5 /*检查samba软件包的内容,-ql中 q=query,l=list*/

2、介绍几个常用的samba工具

smbtree 显示局域网中的所有共享主机和目录列表 smbclient 显示/登录局域网中的共享主机/目录用法:smbclient -L -N win2000 /*匿名登录win2000这台机器,-N表示匿名,-L 表示对共享目录的列表*/ smbclient //win2000/share -U username%password /*用username和password这 个smb用户及口令登录win2000这台机器下的一个share目录,用这个工具登录成功 后会出现smb: \>提示符,这里提二个该状态下的命令:put、get,跟unix/linux 下的ftp命令类似,注意的是put后必须跟二个参数,如: smb:\>put /root/install.log install.log,即不但指定上传本地的某个文件,还需要指定 上传到另一台机器的参数,这里后面的install.log即是上传到另一台机器时后的 名称*/ smbmount //win2000/share /mnt -o username=username%password /*将远程共 享目录挂载到本地,注意完成后使用umount取消挂载*/

3、samba服务器的配置

samba服务器的配置文件是smb.conf,位于/etc/samba/smb.conf 大家得注意里面的几个常用改动参数,[global]里的workgroup、security 下面来看一个samba配置文件里如何设置一个share vi /etc/samba/smb.conf 在[gobal]里进行一些修改 workgroup = workgroup security = share 然后按shift+g(vi下的用法,即到该文件的末尾)到达smb.conf文件的最后,新 建一个共享 [sharedocs] comment = share documents /*标注文档类型*/ path = /usr/share/doc /*指定共享路径*/ public = yes /*确定发布共享*/ 保存退出(这里会用到vi的相关指令,大家可进行相关vi的使用方法),然后重 启samba服务 service smb restart 用smbclient -L localhost进行samba服务器的测试

4、samba用户帐号

添加samba用户,须添加一个系统帐号,然后再加入samba帐户 useradd redhat /*增加redhat用户*/ smbpasswd -a redhat /*直接为redhat帐户添加smb服务密码,-a参数为增加smb用 户,-x为删除smb用户*/ 下面来看一个共享目录设置有效用户的例子:在/etc/samba/smb.conf中添加一个共享目录
[redhat] comment = redhat 's files path = /var/redhat public = no valid users = tom @redhat /*设定有效用户为tom或者是redhat组的用户*/ 
保存退出,重启smb服务这里有必要提到samba用户帐户映射这具概念,出于帐号安全考虑,为防止samba 用户通过samba帐号来猜测系统用户的信息,所以,就出现了 samba用户映射,如 ,将上面的tom帐户映射成其他的名称,然后用其他的名称如jack、rhood都可以 登录,其权限及登录密码都与tom一样。实现帐户映射的方法:先在/etc/samba/smb.conf中的帐户映射服务打开,方法很 简单,找到username map = /etc//samba/smbusers这一行,将其前面的;去掉即 可(linux中;表示关闭,#表示注释,注意与freebsd中的#号概念区别开来),然 后修改/etc/samba/smbusers vi /etc/samba/smbusers 在里面添加一行 tom = jack rhood 保存退出,重启smb服务,然后就可以用jack及rhood登录redhat共享目录,其权 限及登录密码与tom完全一致。

5、samba服务器的权限设定

我们用一个samba的配置文件的例子来说明这个问题
[redhat] comment = redhat 's files path = /var/redhat public = no valid = tom @redhat /*有效用户*/ write list = tom @redhat /*具有写权限的用户*/ create mask = 0660 /*能够创建文件的权限,这里是660,即rw-rw----权限,即 属主和同组人有可读可写权限*/ directory mask = 0660 /*对目录的控制权限,这里亦是660权限*/ 
[补充一下权限方面知识:r=读,八进制中是4 w=写,八进制代码是2 x=执行,八 进制代码是1,在上面的rw-rw----中,9个字符划为三份,前三个字符为文件属主 的权限(即rw-,可读可写),中间三个字符为同组人的权限(rw-,可读可写), 后面则是其他人的权限(---,不可读不可写不可执行),换成八进制,r+w+- =2+1+0=6 ,所以构成了mask = 0660 之类的格式,至于770,775之类的权限,大 家可以自行去想了]

6、举例

场景:tom和jack为sales组的成员,rhood和joeys是技术部的成员,公司要求组 建samba服务器,每个人都有自己的samba帐户,分别有sales组和tech二个组,各 组成员不得跨组访问,不给成员分配shell 分析后的所需做的工作为:
1、为所有用户建立samba帐号 2、建sales和tech二个组,并为组分配权限 3、为所有成员设定不分配shell 4、将各自的文件共享出来 操作: groupadd sales /*建组sales*/ groupadd tech useradd -g sales -s /bin/false tom /*将tom加入sales组(-g sales),并不分 配shell权限(-s /bin/false) */ useradd -g sales -s /bin/false jack smbpasswd -a tom smbpasswd -a jack useradd -g tech -s /bin/false rhood useradd -g tech -s /bin/false joeys smbpasswd -a rhood smbpasswd -a joeys mkdir /home/sales /home/tech /*分别为sales和tech建立目录*/ chgrp sales /home/sales /*改变目录的属主*/ chgrp tech /home/tech chmod 770 /home/sales /*改变目录的权限,为rwxrwx---*/ chmod 770 /hoem/tech chmod g+s /home/sales /*为目录增加进程属主, 这一操作是为了确保该目录永 远地属于属主*/ chmod g+s /home/tech ls -ld /home/sales /home/tech /*查看目录的权限*/ 然后编辑samba的配置文件,将目录共享出来 vi /etc/samba/smb.conf 先将[global]里的security安全级别设为user security = share 然后按shift+g到配置文件的末尾设置目录的共享 [sales] comment = sales path = /home/sales public = no valid users = @sales write list = @sales create mask = 0770 directory mask = 0770 [tech] comment = tech path = /home/tech public = no valid users = @tech write list = @tech create mask = 0770 directory mask = 0770 保存退出 用tail -f /etc/samba/smb.conf 来确认一下刚才修改的配置 确认正确,然后重启smb服务 service smb restart
       
相关阅读 更多 +
排行榜 更多 +
匿名爱人游戏

匿名爱人游戏

冒险解谜 下载
魔方仆从冲刺

魔方仆从冲刺

休闲益智 下载
跑山越野摩托

跑山越野摩托

体育竞技 下载