Linux - Samba服务器的应用 [原创]

Posted on 2005-02-12 17:21 rhood 阅读(29) 评论(0)   编辑  收藏 href="http://www.blogjava.net/rhood/Services/Pingback.aspx" rel="pingback"/>
Linux - Samba服务器的应用

系统为fedora2,初始仅安装了development tools。

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
进行访问测试,此例见演示: http://psysy.1816.net/rhood/samba demo.rar

ps:如无特殊说明,所有操作均是在root权限下进行的。

抱歉,在/etc/samba/smb.conf里错将netbios打成netbiso了,:)

欢迎大家指正错误,谢谢!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值