文章详情

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

3 Samba

时间:2007-01-08  来源:yixiaoyun

samba软件包介绍

http://www.samba.org

同时提供了smb协议的服务器及客户机程序

 

redhat

 

samba   服务器软件包

samba-client 客户端工具

samba-common  通用的工具和库  不论是装客户机和服务器都要这个软件包

 

首先安装

rpmdb-fedora/rpmdb-redhat   第三张盘上

这个包是redhat做的rpm的所有数据包之间的依赖关系得数据库。装了这个之后,可以正确显示数据包之间的依赖关系。没有这个数据包的时候,安装一个数据包时,如果没有安装相关的依赖的数据包,它会提示缺少某个包,但是在有的时候它会指向不明,从而把用户带入一个死循环。有了这个数据库就可以解决这个问题。

 

rpm –ivh rpmdb-fedora*.rpm

然后安装samba软件包第一张盘上

rpm -ivh --aid samba*.rpm      --aid 让rpmdb来帮助安装其他需要的依赖文件包,必须先装过rpmdb,并且所有需要安装的相关文件都在当前的文件夹里面

检查包的内容

rpm –ql samba | more

rpm –ql samba-common

rpm –ql samba-client

 

rpm –qa  查询所有的软件包

可以用 rpm –qa | grep samba

-l  list 列表文件清单,查询列表

 

init.d内都是服务器启动脚本

 

sbin里的是服务器的主程序。

samba有两个主程序

/usr/sbin/nmbd  提供名称解析服务,提供一个输出的共享名,主机名共享,可以模仿wins服务,代替wins服务器。提供用户验证,提供索引目录的查询。

/usr/sbin/smbd  访问目录,通过samba拷贝文件时,传输数据作用

 

常用的客户端工具

smbtree 显示局域网中的所有的主机列表

默认samba会以当前用户名登录,一般是默认用当前的linux登录的用户名,不输入密码可以当作实用匿名登录。

smbtree –b –D

 

smbtree -b 是发广播查询主机,所以有可能会 比较慢

-D  只显示工作组名,或域名。domain

-U username%password

 

nmblookup

显示一台主机的netbios主机名的ip地址

如果同时返回多个,说明主机有多块网卡

nmblookup 主机名

 

nmblookup \*  可以查询网内所有的主机的ip地址

因为默认*星号会被认为是主机名,所以需要\来进行转义

 

smbclient 可以显示,登陆局域网主机共享的目录内容

显示

smbclient –L host  在广播,有可能会速度慢点

登陆

smbclient -U 用户名 //host/filefolder

看目录有什么内容有两种方法

1 用smbclient 登陆

2 用mount

 

1登陆成功的提示

smb:\>

 

用help可以察看可以使用的命令,如ls 查看文件列表,cd,get等

put /root/install.log install.log

       本地目录   远程

put命令必许有两个地址,如果第二个没有写,远程跟本地使用相同的目录

 

2可以用smb挂载

smbmount //10.0.0.241/lab /mnt –o username=redhat%redhat

以后操作/mnt里的内容,就等于是远程操作远程主机里共享的内容了。

 

smbtar 是一个备份工具,备份远程网上邻居的文件,可以打包,不能压缩

smbtar –s serverip –u user –p password –x sharename –t output

-t typedevice  是指定输出的位置

输出的名字要加后缀,否则以后不知道什么类型的

smbtar –s win2000 –u redhat –p redhat –x chinaitlab –t itlab.tar

smbtar –s 10.0.0.241 –u redhat –p redhat –x lab –t lab.tar

 

备份下来,注意备份的文件大小,有可能是零,因为默认的smbtar这个文件是有问题的。

 

1 which smbtar   找到smbtar的位置

2 file /usr/bin/smbtar   察看文件类型 ,可知smbtar 是个脚本文件

在脚本里面有个冲突。

smbclient  -N是不用用户名和密码,用匿名用户

 

tar –tvf lab.tar  -t可以显示tar文件的内容列表

 

SAMBA的服务器配置

/etc/samba/smb.conf

 

workgroup=workgroup

security = share   最高的共享级别  默认是user 需要输入用户名和密码的,不输不让看的

[docs]                docs是共享名的目录

     path=/usr/share/doc     共享的目录

     comment = share documents

     public = yes   允许匿名访问  和上面的share共用才能允许匿名

重新启动smb服务器

service smb restart

checkconfig smb on  每次服务器启动,自动启动

里面有注释有两种#注释介绍文本信息和;注释配置信息

 

测试

smbclient –L localhost

       -N  匿名登录

 

samba 文件服务器

win的网上邻居

工作原理

通过smb协议共享传输文件,具有自己的主机名称解析系统(wins)smb(server message block)/cifs(common internet file system)是基于netbios协议的,所以不能跨越子网通信

服务器端:提供名字查询服务,输出共享文件列表,对客户端用认证授权

客户端:寻找能够访问的资源,请求验证,请求访问文件和目录

在win系统中,每一台主机既是一台服务端,也是一台客户端

在linux中,服务器端和客户端是分开的

浏览服务器:提供所有主机名和工作组名的缓冲服务。在win中,是通过一定的规则在局域网里面选举出来的服务器。

基本概念

主机名 局域网中的netbios主机名,在局域网中是唯一的。这里的主机名和dns中的主机名是不一样的。netbios主机名是用户自己设置的。

共享名 共享资源(目录/打印机)的名称,主机中是唯一的

工作组名 主机的组织机构名,主机间地位平等

域名 主机的认证管理机构名称,客户端主机需要域服务提供认证,浏览,共享服务。

win需要tcp/ip,netbeui,ipx/spx其中一种协议就可以共享

linux必须装tcp/ip协议才能用文件共享。samba只支持tcp/ip

 

linux下挂载 win共享的目录

mount –t smbfs //server/sharename /localdir 或

smbmount //server/sharename /localdir

 

???win只能在共享目录时只能在共享目录上加密,不能再主机上加密

???samba的服务器可以在主机上加密。

 

smbclient

smbclient //server/sharename –U name%password

 

samba 的访问控制

 

samba里的用户帐号

public=yes  就是所有用户都可以访问,如果想限制为特定的用户才可以访问,要把yes改为特定的用户名。为no的时候是不可以匿名用户访问

 

1新建目录设置有效用户

[redhat]

   path=/var/redhat

   comment=redhat’s files      #可加可不加

   valid users=<username> <@groupname>

  #可以用root 表示允许用户root ,@root 表示允许root组的用户,用户名必须是系统中一个有效的用户名

2新建samba用户

  先用 #useradd username

  再用 #smbpasswd –a username     不加参数表示修改该用户名的密码

       -a 表示 add

       -d  disable 暂时不让此用户登录

       -x  删除用户

       -e  enable

       -m  加信任主机的帐号,在加win2000,nt的主域控制器比较有用。samba可以作为一个主域控制器存在。

       -n   set no passwd

       --help

 

     回车后会提示输入密码,是通过samba登录网络邻居时提示输入的密码,和passwd设置的不一样作用,可以不一致。

在配置文件里

#tail /etc/samba/smb.conf 里设置的共享的目录必须是存在的,不然会提示 无法访问 //zhuji/mulu  找不到网络名

 

3用户帐号映射   因为samba的帐号存在的第一个条件就是这个帐号是一个系统的帐号,为了防止恶意用户通过samba的帐号猜测系统得帐号,可以通过帐号映射来解决

[global]

   username map = /etc/samba/smbusers 建立一个表用来保存linux帐号和samba帐号的关系

   表的名字是随意定的。上面的是默认的。

which smbuseradd

#smbuseradd unixname:mapname  此命令在redhat9,和企业版里是有的。但是在fedroa里没有,可以通过手工设置的方法实现。

 

vi /etc/samba/smbusers

如 redhat = tom jack kitty

 

此时登录可以用tom,jack,kitty帐号,密码是redhat的密码

linux下登录

smbmount //10.0.0.241/tmp /mnt –o username=jack%123

 

HOME 目录  特殊的共享文件夹

跟用户的帐号是有关系的。是隐藏的共享目录。里面没有path,默认的路径是用户的home的路径。随着用户的名称改变,而改变

 

 

[homes]

comment = Home Directories

valid users = %S    %S用户自己的属主目录就是,home。可以访问的只有用户自己

browseable = no     在客户机上看不见这个文件夹

writable = yes

 

如果要看homes的目录,

首先不能有共享文件夹的名称和用户的home目录重名

再有就是把security 的等级必须设置成user。即必须输入用户名密码才能登录的形式。

 

samba的写权限,如果在共享文件夹里写入,首先必须系统帐号里对应的此帐号对共享的文件夹有写的权限,再就是在/etc/samba/smb.conf里writable 必须是yes。其中有一个没有权限的话,就不能写入。

 

[redhat]

   path= /var/redhat

   comment=redhat’s files

   public=no

   valid user=<username> <@groupname>

   write list = <username> <@groupname>

   create mask = 0660       建立的文件的默认权限

   directory mask = 0770     建立的目录的默认权限

 

注意 :客户端所有的请求访问身份在服务器端都会映射成登录帐号的身份。

ls –l

ls –ld  加d可以查看目录的权限

 

id redhat  可以查看用户名的id

 

两个常用的测试工具

 

testparm

a

#testparm  默认情况下是检查设置的配置文件有没有语法错误。

b

如果要测试某一个具体的客户机是否能够访问服务器。需要按下面输入

#testparm /etc/samba/smb.conf win2000 10.0.0.241

                          主机名  ip

 

samba详细的配置文件

 

在vi 编辑模式下

:!service smb restart

可以不直接执行命令

/跟内容,可以在vi当前编辑的文件里查找关键字

 

[global]

     workgroup=workgroup

     netbios name =redhat               网上邻居里看到的主机名

     server string= samba server           主机的注释信息

     security=share/user/server  samba服务器本机的安全级别有4种,server必须用单独服务器验证。在win2k环境下已经有域控制器的环境下使用

     ;password server=<server>

     log file=/var/log/samba/%m.log   主机名.logwin2k是win2k.log,redhat是redhat.log

                                   还有其他的%h,hostname等

     encrypt passwords= yes         win用的是加密的。有时候在两头都不用加密时用no

     smb passwd file =/etc/samba/smbpasswd

     include=/etc/samba/smb.conf.%m   为不同的主机分配不同的选项

     interfaces=192.168.0.0/24        只对固定的网段提供服务

     ;name resolve order=wins lmhosts bcast    主机名解析方式的顺序从左向右

     ;wins support=yes        是否自己的samba服务器同时要作wins服务器

     ;wins server= w.x.y.z      当samba服务器作wins客户机时,查询的wins服务器的地址

上面两条不能同时使用

lmhosts  跟win下的一样

 

security = user 只对win用户起作用,可以不让匿名用户登录主机,而linux用户,即使security是user级别,仍然可以登录到samba服务器上,只要共享的文档是public=yes 仍然可以匿名登录到samba服务器上获得文件列表。访问文件的权限是有文件本身的权限决定的,是由共享目录设置来决定的

smbclient –L  10.0.0.254 仍然可以匿名登录

 

访问控制

1全局访问控制

[global]

   hosts deny = ALL

   hosts allow = 10.0.0.

2局部访问控制

[docs]

hosts deny = 10.0.0.

hosts allow = 10.0.0.241

[redhat]

hosts allow = 10.0.0.

hosts deny = 10.0.0.241 (失效)

可以用下面的

    hosts allow = 10.0.0. EXCEPT 10.0.0.241

允许优先

 

man 5 hosts_access

 

局部和全局在一起发生冲突时,只要有一个里面是允许,就可以访问。即允许优先

 

samba实例

要求

 1所有的员工都能能够在公司内流动办公,但不管在那台电脑上工作,都要把自己的文件数据保存在samba文件服务器上

 2 市场部,技术部都有各自的目录,同一个部门的人共同拥有一个共享目录,其他部门的人都只能访问在服务器上自己个人的home目录

 3 所有的用户都不允许使用服务器上的shell

 

分析

 1需要samba作为文件服务器,为所有的用户创建帐号和目录,用户默认都在服务器上有一个home目录,只有认证通过才能看到。

 2 需要为市场部和技术部创建不同的组sales和tech,并且分配目录,把所有市场部的员工加入sales组,技术部的员工加入tech组,通过samba共享sales和tech组

3 建立用户帐号的时候,不分配shell。

 

实施步骤

 1 为所有的用户创建帐号和目录,不分配shell

      假设市场部有tom,jack,技术部有red,blue,总经理是ceo,财务是finance

   2 建组sales和tech,把所有市场部的员工加入sales组,技术部的员工加入tech组

   3 创建两个目录/home/sales 和/home/tech,并修改两个目录的权限,分别属于sales和tech组

   4 通过samba共享/home/sales和/home/tech组

   5 测试

 

       1安装samba软件包

       2 smb.conf

      security=user

3         groupadd sales

groupadd tech

useradd –g sales –s /dev/null jack

或者   useradd –g sales –s /bin/false tom

      如果用户不需要登录服务器,可以不用passwd设置密码

4 smbpasswd –a tom       设置samba登录密码

  smbpasswd –a jack

当用户数量比较大的时候,可以用脚本批量加用户。用for循环

  #for user in red blue          user 变量  in 是用后头的列表

>do                         执行循环do

>  useradd –g tech –s /bin/false $user

>  smbpasswd –a $user

>done                        结束

 

more /etc/samba/smbpasswd

可以看到新添加的samba帐号的信息

 

useradd ceo

useradd finance

smbpasswd –a ceo

smbpasswd –a finance

5mkdir /home/sales /home/tech       为市场技术部建立共享文件夹

 ls –ld /home/sales  /home/tech

 chgrp sales /home/sales          更改文件夹权限为相应的组

 chgrp tech /home/tech   

chmod 770 /home/tech          同组所有用户都可以访问

chmod 770 /home/sales

ls –ld /home/sales  /home/tech

chmod g+s /home/sales

chmod g+s /home/tech

6 编辑 /etc/samba/smb.conf

增加 

[sales]

   public = no

   comment = sales

   path = /home/sales

   valid users = @sales

   write list = @sales        writable也可以,不过write list 更严格

          create mask = 0770        创建文件的默认权限

          directory mask = 0770      创建目录的默认权限

      [tech]

          path = /home/tech

          comment = tech

          public = no

          valid users = @tech

          write list = @tech

                create mask = 0770

          directory mask = 0770

确认配置

tail /etc/samba/smb.conf

 testparm

重启服务 service smb restart

 

测试

smbclient –L 10.0.0.254 –U tom%tom

 /etc/samba/smbpasswd  

          smbusers

tail /var/log/samba/%m.log   可以查看出错信息

 

smbmount //10.0.0.254/sales /mnt/sales –o username=ceo%ceo

如果此账户没有权限访问,是不能正常访问的。

 

samba的帮助资料

/usr/share/doc/samba-3.0.0/

 

相关阅读 更多 +
排行榜 更多 +
收割和堆放

收割和堆放

休闲益智 下载
口袋妖怪宿命的轮回

口袋妖怪宿命的轮回

休闲益智 下载
涡轮火箭

涡轮火箭

休闲益智 下载